Shopify and ShipStation: a guide for small stores

By Shane · Published November 12, 2026 · 5 min read

Shopify and ShipStation are a common pair for a reason: Shopify takes the orders, ShipStation buys the labels at good rates, and the connection between them handles the busywork. It also has gaps, and they tend to show up on your busiest day. I've written about each one separately. This page puts them in one place: how the connection works, what goes wrong, and where each fix lives.

How the connection works

  1. Orders flow into ShipStation. New paid orders import with the address, items, weights and the customer's note.
  2. You pick, pack and buy labels in ShipStation. Pick lists and packing slips print from there.
  3. Tracking flows back. When you ship, ShipStation marks the order fulfilled in Shopify with the tracking number, and Shopify emails the customer.
  4. Products match on SKU. Anything that syncs product details between the two, including stock and bin locations, relies on the SKU being identical in both.

Most problems come from the edges of that loop: data that never makes the trip, orders that don't qualify to import, and products that don't match.

The common problems, and where each one is fixed

What you seeWhat's going onThe fix
Bin locations don't print on the pick listBins usually live in a Shopify product metafield, and the connection doesn't carry metafieldsGet bin locations onto ShipStation pick lists
The pick list zig-zags around the stockroomIt's sorted by name or SKU, not shelfSort the pick list by bin
An order is missing from ShipStationIt's still a draft, it's older than 90 days, or it's closedWhat doesn't sync, and why
Order tags, gift notes or delivery dates aren't thereThey're off by default, and there are only three custom fieldsMap them in the store settings
Every order needs the same service, box or weight picked by handNo automation rules or product defaults yet, or rules written before the data they need arrivedSet up automation rules
Customs values look too highAutomatic discounts and the order's currency don't come acrossCheck declared values on international orders
A product won't sync, or the wrong one updatesBlank, duplicate or slightly different SKUsKeep SKUs matched

Set it up right the first time

  1. Clean the SKUs first. Every variant gets a unique SKU in Shopify, in one pattern. It's the foundation for everything else. The one-hour audit.
  2. Decide where bins live. One product metafield in Shopify, in a format that sorts (A02-03-1, not A2-3-1). Shopify stays the source; ShipStation gets a copy.
  3. Choose your three custom fields. Map only the order data your team acts on: usually tags, a delivery date, or the fraud risk for a hold rule.
  4. Decide about closed orders. If you ever ship after closing an order in Shopify, turn on importing closed orders, or you'll hunt for them later.
  5. Run one real order end to end. Import, pick, pack, buy a label, ship, and check the tracking lands in Shopify and the customer's email.

When to pick in one tool and ship in another

ShipStation is built around the label. If your trouble is on the floor (people picking the wrong variant, temp staff who can't log in, nothing checked before the box closes), it can make sense to pick and pack in a tool built for that and keep ShipStation for labels. I build Pickadoodl for that job, and I wrote an honest comparison with ShipStation's pick list, including when ShipStation alone is enough.

If you'd rather have it just work

The bin location gap is the one I'm asked about most, so I built a sync that copies each product's bin from Shopify into ShipStation's Warehouse Location and keeps it current: ShipStation bin location sync. For anything else in the loop that's manual, slow or breaking, tell me about it.

Tell me what's manual, slow or breaking.

I'll point you to the fastest fix: a quick change, a project, or a retainer. The person who answers is the person who writes the code.

Book a free call