Shopify fulfilment integration explained
What a Shopify fulfilment integration really does: order flow, inventory sync, tracking, multi-location stock and the causes of overselling.
What a Shopify fulfilment integration really does: order flow, inventory sync, tracking, multi-location stock and the causes of overselling.
“We integrate with Shopify” is one of the least informative sentences in logistics. It can describe a robust two-way connection that updates inventory within seconds, or a nightly spreadsheet import that someone runs by hand.
Both are technically integrations. Only one prevents you from selling stock you no longer have. This article explains what the connection is actually doing, so you can tell which one you are being offered.
Strip away the marketing and a fulfilment integration performs four functions. Each can fail independently.
1. Order export. New paid orders leave Shopify and arrive in the warehouse system, with the address, the line items, the shipping method chosen and any gift message. This is the easy part; almost everyone does it acceptably.
2. Inventory sync. The warehouse tells Shopify how much of each SKU is available. This is the part that goes wrong, and the part that costs you money when it does.
3. Fulfilment confirmation. When a parcel ships, the warehouse writes back a fulfilment record with the carrier and tracking number, which triggers Shopify’s shipping confirmation email. If this is slow or partial, customers email you asking where their order is.
4. Returns and adjustments. Returned or damaged units are reflected back so your available quantity stays truthful.
When you evaluate a provider, ask about each of the four separately. A confident answer to one is often used to imply competence in all.
Overselling happens in the gap between a sale and the rest of your system finding out. Two things determine how big that gap is.
Sync direction. In a one-way setup, Shopify is told what stock exists but nothing flows back reliably, or vice versa. Two-way sync means both systems converge on the same number. You want two-way, with the warehouse as the source of truth for physical quantity — it is the only system that knows what is actually on the shelf.
Sync trigger. Polling means the warehouse asks Shopify for new orders every n minutes. Webhooks mean Shopify pushes the order the moment it is paid. Webhook-driven flows are near-instant; polling every 15 minutes gives you a 15-minute window in which two customers can buy the last unit.
The practical questions to ask:
Shopify supports multiple inventory locations, and a fulfilment integration normally appears as one of them. This is where configuration errors hide.
If your 3PL’s location is set up but your old “Shop location” still shows stock, Shopify adds them together and shows a total you cannot actually ship. Customers buy against phantom availability. The fix is unglamorous but essential:
Go through this with your provider on a screen share before launch. It takes twenty minutes and prevents the most common post-migration incident.
If you sell on Shopify plus a marketplace plus wholesale, one physical pool of stock is being promised to several audiences at once. Ask how allocation is handled:
Shared pools maximise sell-through but risk overselling on the slowest-syncing channel. Reserved buffers are safer and slightly less efficient. Neither is wrong, but the decision should be deliberate. This is the substance behind webshop integration as a service rather than a checkbox.
| Capability | Weak setup | What to ask for |
|---|---|---|
| Order transfer | Batched hourly or by CSV | Webhook-driven, near-instant |
| Inventory sync | One-way, periodic | Two-way, event-driven, warehouse authoritative |
| Tracking write-back | Manual or next-day | Automatic at dispatch, per parcel |
| Partial shipments | Not supported | Supported with separate tracking |
| Failure handling | Silent | Queued, retried, alerted |
| Multi-location | Ignored | Explicitly configured and verified |
| Visibility | Email the account manager | Dashboard showing on-hand, reserved, dispatched |
Integrations do not fail cleanly. Plan for these:
Address validation. Shopify accepts what the customer types. Warehouses need deliverable addresses. Ask what happens to an order with a missing house number — does it stop and alert, or ship and fail?
SKU mismatches. The most common data problem. A SKU renamed in Shopify but not in the warehouse becomes an order nobody can pick. Freeze SKU naming during migration and agree who owns changes afterwards.
Bundles and kits. If you sell a set that is three physical items, the warehouse needs a bill of materials and Shopify needs to decrement all three components. Ask explicitly how bundles are handled — see kitting and subscription boxes for the operational side.
Duplicate fulfilments. A retry that is not idempotent can ship an order twice. Ask how duplicate protection works.
Cancellations and edits. An order cancelled after export but before picking must be stopped. Ask what the cut-off for an edit is, and whether it is enforced by the system or by an email to a human.
Before you go live, run these in a test or low-volume window. All of them, in order:
Test 7 is the one that matters most and the one almost nobody runs.
How quickly should stock sync between Shopify and a warehouse? Aim for seconds, not hours. Event-driven updates on order placement and dispatch are standard now; anything on a fixed schedule of 15 minutes or more leaves a window where overselling is possible.
Can I use a 3PL and still sell on marketplaces? Yes, and this is exactly where a proper integration earns its cost, because one physical stock pool has to be represented accurately across several channels.
Do I need a custom app, or is an off-the-shelf one enough? Most brands are well served by a maintained native app. Custom work is justified when you have unusual bundling, subscription logic or an ERP in the middle.
What breaks most often after going live? Multi-location misconfiguration leaving phantom stock at a legacy location, and SKU mismatches introduced by renaming products after migration.