Shopify 3PL integration: connecting a fulfilment provider
Orders out, stock and tracking back. Simple in outline, and it fails on exactly four things — all of them decided before any code is written.
8 min read · Integrations ·
A 3PL integration moves orders out to your fulfilment provider and brings stock levels and tracking back. In outline it's simple. In practice it fails on four things, all decided before any code is written.
What flows, and which way
Shopify to 3PL: new orders, with everything needed to pick and pack — SKUs, quantities, shipping address, chosen service level, and any line item attributes like gift messages or engraving.
3PL to Shopify: stock levels, fulfilment confirmations with tracking numbers and carrier, and cancellations or exceptions.
That's it. The complexity is entirely in ownership and edge cases.
The four decisions
1. Who owns inventory? The 3PL holds the stock, so the 3PL owns the number and Shopify reflects it. Any setup where both write inventory produces permanent drift. Decide it, write it down, and enforce it in code — the principle underlying every integration.
2. What is the SKU? Shopify keys on SKU; 3PLs frequently key on their own internal code. Without a clean mapping, products silently diverge. Agree the identifier before anything is built, and validate that every Shopify variant has a match.
3. When does an order go over? Immediately on payment, or after a hold period for fraud review and customer changes? A hold reduces cancellations mid-pick and delays dispatch. Both are defensible; not choosing means you get whichever the connector defaults to.
4. What happens on failure? An order that fails to reach the 3PL must be visible and retryable, not silently absent. This is the difference between a working integration and a support problem — error handling.
Three ways to connect
A fulfilment service. Shopify's native model for outsourced fulfilment: the 3PL is registered as a location, Shopify sends fulfilment requests, and the 3PL confirms. The cleanest option when your 3PL supports it, because inventory and fulfilment behave natively rather than being simulated.
An app. Most established 3PLs have one. Handles the standard flow, and is the right starting point.
Custom. Warranted when the 3PL has an API but no app, when you use several providers and need routing logic, or when your rules exceed what the app expresses. The usual build-versus-buy reasoning applies.
The edge cases that need deciding
- Split shipments. Part of an order ships now, the rest later. Use partial fulfilments so the customer is notified per shipment rather than waiting for everything.
- Multiple locations. If you hold some stock yourself and some at the 3PL, fulfilment priority and location setup decide where each order is sourced.
- Cancellations and edits after dispatch. Define the cut-off and enforce it. "Can I change the address?" ten minutes before pick is a policy question, not a technical one.
- Returns. Does the customer return to the 3PL, and does the 3PL restock automatically? An unrestocked return is stock you own and can't sell.
- Pre-orders and backorders. A product with no stock at the 3PL that you're still selling deliberately.
Inventory sync frequency
The most common cause of oversells. Match frequency to velocity: fast movers need near-real-time updates, the long tail is fine on a slower schedule. Syncing everything hourly is both wasteful and insufficient — wasteful for the tail, insufficient for the head.
Add a buffer on fast-moving lines so a simultaneous checkout race doesn't oversell.
The reconciliation job
Webhooks and API calls fail. Files don't arrive. A nightly job that compares Shopify's stock against the 3PL's and reports the differences is what turns an integration that's usually right into one that's reliably right.
Send the discrepancy list to a person who will act on it. A report nobody reads is worse than no report — reconciliation.
Before you commission one
Ask the 3PL four questions:
- Do you have a Shopify app or a fulfilment service integration, or only an API?
- Do you support partial fulfilments and per-shipment tracking?
- How often can you push stock, and by what mechanism?
- What happens to returns — do you restock automatically?
The answers determine whether this is a configuration job or a development project, and the difference is weeks.
A 3PL integration is four decisions and some plumbing. Stores that get it wrong almost always skipped the SKU mapping conversation.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
[email protected]Or see what I do around Shopify: services, work beyond the theme, selected work.