ShipStation Custom Fields 1, 2 and 3: How to Get Engraving Text and Gift Messages on a Packing Slip

If you sell anything personalized, you already know the feeling. A customer types “Happy Birthday Sarah” into an engraving box at checkout. It shows up nicely in the Shopify admin. Then the order reaches ShipStation, the packing slip prints, and the engraving text is nowhere to be found.

I have run into this on more than one project, and the cause is always the same. The standard Shopify to ShipStation connection was never built to carry per item data.

What the connector actually passes

The official connector gives you three custom fields, called Custom Field 1, 2 and 3. That is the whole list. They belong to the order, not to a product on the order.

Picture an order with a necklace engraved “Love Always, Mom”, a bracelet engraved “Happy Birthday, Sarah” and a gift box with a congratulations message. You can squeeze those three strings into the three fields, but the packing slip cannot tell your warehouse which engraving belongs to which product. Add a fourth item and you have run out of room.

Line item properties, which is where most Shopify themes and personalization apps store this kind of text, do not get mapped at all.

The workarounds people try first

Almost everyone goes through the same list, so here is how each one tends to end.

Order notes. You can push everything into the Shopify order note. In my experience ShipStation only reads the first 255 characters, so a long gift message or a multi item order gets cut off without any warning.

Tags or product titles. Tags describe the product, not the customer’s choice. Renaming products to carry the option works for a handful of variants and falls apart with free text.

Zapier or a spreadsheet in the middle. These can move data around, but they hit the same three field ceiling, or they need someone to touch every order by hand. That is fine for ten orders a week and painful at a hundred a day.

What works: create the order in ShipStation yourself

The ShipStation API is more flexible than its connector. When you create an order through the API, each order item can carry its own list of options, which are name and value pairs. Those can be printed next to the item on the packing slip, so the engraving text sits right beside the necklace it belongs to. The order itself also has fields for a gift flag and a gift message, and for internal and customer notes.

So the pattern looks like this:

  • Shopify sends a webhook when an order is created.
  • A small service reads the order, including every line item property.
  • It builds a ShipStation order with the right options attached to the right items.
  • It posts that order to ShipStation, using a stable order key so a second post updates the order instead of duplicating it.
  • Your packing slip template is edited to print the item options.

I built exactly this on Heroku for one client, and I wrote up the story in Bridging Shopify and ShipStation on Heroku. The packing slip side of the problem is in Why Custom Packing Slips Are So Hard.

The part nobody mentions: what you take on

Once you create orders yourself, you have to disconnect the standard Shopify store connection in ShipStation, or every order will appear twice. That also means you now own the jobs the connector used to do for you.

You need to handle orders that get edited after purchase, cancellations, refunds, address changes, and split shipments. You need to send tracking back to Shopify. And you need to know when something fails, because a silent failure here means an order that never reaches the warehouse.

That is real work, and it is the honest reason many stores put it off. If you want to see what the return trip involves, read Shopify Orders With No Tracking After ShipStation Ships Them.

Should you build it?

My rule of thumb is simple. If personalization is on a small share of your orders and your volume is low, a manual check at the packing bench may be the cheaper answer. If it is on most of your orders, or your team spends part of every day chasing missing details, a custom sync pays for itself quickly, because every wrong engraving is a product you cannot resell plus a customer who has lost trust.

Before you spend anything, do two small things. Count how many orders in the last month needed a manual fix. And ask your warehouse lead what they would stop doing if the slip were right the first time. The answers usually make the decision for you.

If you want a second opinion on your own setup, email me at kevin@kevinhq.com with a screenshot of the packing slip you wish you had and one of the order as Shopify shows it. I can usually tell you quickly whether it is a template fix or a real integration job.


← Back to Homepage


Get occasional breakdowns

When I find something worth writing up — a fix, a pattern I keep seeing in client stores, something that actually moved revenue — I send it out. No schedule. No filler.