Why 3PL integration is harder than it looks
Moving to a third-party logistics provider is usually driven by the right reasons: you've outgrown self-fulfilment, you want to reach customers faster, you're expanding into new regions, or you simply want to stop spending warehouse rent on a building you're not filling efficiently. The physical handover — your stock, their shelves, their pick-and-pack operation — is well understood. The operational handover is where things get complicated.
The moment your 3PL starts fulfilling orders, several data flows need to work reliably and in both directions. Orders need to reach the warehouse. Despatch confirmations need to come back. Tracking numbers need to reach your customers. Stock levels need to reflect what's actually on the shelf. None of this happens by itself, and none of it is covered by the contract you signed with your 3PL provider.
The businesses that struggle most with 3PL transitions are not those that picked the wrong warehouse or negotiated a bad SLA. They're the ones that treated integration as something to sort out after go-live.
The four flows that need to work
Before looking at individual configuration decisions, it helps to understand the four distinct data flows that a 3PL integration needs to handle. Each one has its own timing requirements, its own failure modes, and its own dependencies.
1. Order handoff — ERP to 3PL
When a sales order is confirmed in your ERP or inventory system — Unleashed, CIN7 Core, CIN7 Omni, Linnworks, Enterpryze — it needs to arrive at the 3PL's warehouse management system as a fulfilment instruction. The 3PL needs to know what to pick, from where, in what quantity, and where it's going. This sounds straightforward but involves a number of translation decisions: how your product SKUs map to the 3PL's internal references, how shipping service codes are translated, and what happens to orders with multiple line items or partial availability.
2. Despatch confirmation — 3PL back to ERP
Once the 3PL picks, packs and ships an order, that event needs to flow back to your systems. At minimum: the order needs to be marked as despatched in your ERP, and the tracking number needs to be recorded. Where you're also pushing orders through to Xero as draft invoices, the despatch confirmation is often the trigger that moves an invoice from draft to ready-to-send. Miss this step and you end up with fulfilled orders sitting in a pending state in multiple systems, manually chased at month end.
3. Tracking to storefront
For DTC orders via Shopify or another storefront, the customer-facing part of the despatch confirmation is equally important. The fulfilment needs to be created in Shopify with the correct carrier and tracking number, which triggers the shipping notification email to the customer. When this doesn't work, your customer service team carries the cost in the form of "where is my order" tickets — one of the most avoidable categories of support volume there is.
4. Stock sync — 3PL to ERP and storefront
The 3PL holds the physical inventory. Your ERP and your storefront need to reflect what's actually available to sell. Stock sync is not a one-time event — it needs to run regularly, handle goods received from your suppliers, adjust for damaged or quarantined stock, and correctly account for the lag between an order being picked and the quantity decrement appearing in your system. Get this wrong and you either oversell stock you don't have or undersell by displaying zero when items are available.
What to configure before go-live
These are the decisions that need to be made — and tested — before the first live order goes through.
SKU and product reference mapping
Your ERP product codes are not automatically the same as the 3PL's internal references. Before go-live you need a confirmed, tested mapping between every SKU you're handing over and how the 3PL has it set up in their WMS. This includes variants — if a single product exists in five sizes, each needs its own validated mapping. Missing a single SKU on day one means that first order containing it will fail silently or require manual intervention at the worst possible moment.
Carrier and service code mapping
Your ERP might reference a shipping method as "Standard UK" or "Next Day." The 3PL's WMS references it as a specific carrier service code — Royal Mail 48, DPD Next Day, Evri Standard. These need to be mapped explicitly. If they aren't, the 3PL either guesses (and guesses wrong) or holds the order for clarification. For businesses with multiple service tiers — standard, express, weekend delivery — every tier needs its own mapping.
Order hold and release rules
Not every order confirmed in your ERP is necessarily ready to ship immediately. You might have orders on payment hold, orders awaiting a manual review, or pre-orders for stock not yet received. The integration needs to know which orders to send to the 3PL and which to hold back — and what the trigger is for releasing a held order. Sending an order to a warehouse before you're ready to fulfil it creates operational confusion that's harder to reverse than it is to prevent.
Stock source and location rules
If you're running multiple warehouses — your own and a 3PL, or two different 3PLs — your ERP and storefront need to know which location's stock to draw from for which order type. A wholesale order might fulfil from a different location to a DTC order. Some stock might be ring-fenced for specific channels. These routing rules need to be configured in the integration layer, not assumed to work by default.
Despatch confirmation trigger and Xero invoice push
Decide what event in the 3PL's system constitutes "despatched" for your purposes — is it when the order is picked, when it's labelled, or when it's collected by the carrier? That event then triggers the downstream actions: status update in the ERP, fulfilment created in Shopify, tracking sent to the customer, and — if you're using Xero — the draft invoice advanced to ready-to-send. The chain only works reliably if the trigger point is defined and tested.
Returns handling
Returns are treated as a separate flow to despatch, and they're often configured last and tested least. When a customer returns an item to the 3PL, that event needs to update stock levels in the ERP, trigger any required storefront refund processing, and — depending on whether the returned item is resaleable — either add it back to available stock or flag it for quarantine review. Leaving this unresolved creates stock discrepancies that compound over time.
The 3PLs Supply Lens connects to
Different 3PLs expose their data in different ways — some through well-documented APIs, some through flat-file exports, some through proprietary portals with limited integration options. The integration approach varies accordingly, which is why pre-built knowledge of specific providers matters.
What breaks after go-live — and why
Even when the initial integration is configured correctly and tested thoroughly, certain things tend to surface in the first few weeks of live operation. These are the most common ones.
"The businesses that handle 3PL transitions well treat the integration as part of the operational go-live — not a technical task to finish afterwards."
How the ERP connection actually works
For brands running Unleashed, CIN7 Core, CIN7 Omni, or Linnworks, the ERP is the operational source of truth for orders and stock. The integration layer sits between it and the 3PL, handling the translation in both directions.
Outbound: a sales order reaching a defined status in the ERP — typically "confirmed" or "approved" — triggers the integration to send a fulfilment instruction to the 3PL. The instruction includes the order reference, the line items with the 3PL's product codes, the delivery address, and the carrier service. The 3PL's WMS acknowledges receipt and returns a warehouse reference.
Inbound: when the 3PL dispatches the order, the integration receives the despatch event — which includes the carrier, tracking number, and shipped quantities — and updates the sales order in the ERP accordingly. If the order is linked to a Xero draft invoice, the invoice is advanced at this point. If there's an unfulfilled remainder, that stays as an open line against the original order rather than creating a new one.
Stock sync runs on a scheduled basis — typically every hour or more frequently during peak periods — pulling the current available quantity for each SKU from the 3PL and pushing the updated figure to both the ERP and any connected storefronts. When a goods-received event occurs at the warehouse, that triggers an immediate sync rather than waiting for the next scheduled run.
Checklist: what to have confirmed before switching the integration live
- Every active SKU has a confirmed, tested mapping to the 3PL's internal reference
- All carrier service codes are mapped and validated against the 3PL's accepted values
- Order hold and release rules are defined and tested with a real held order
- A test despatch has been processed end-to-end — from ERP order confirmation through to tracking appearing in Shopify and customer notification sending
- A stock sync has been run and the resulting quantities in the ERP match the 3PL's stock report
- A test return has been processed and the stock adjustment in the ERP has been verified
- Partial fulfilment has been tested — one order, two shipments, one record in the ERP
- Error alerting is configured — someone receives a notification when an order fails to route
- The inbound goods-received flow has been tested with a test delivery to the warehouse
- If Xero is in use, a draft invoice has been created and advanced to ready-to-send via the despatch trigger
Planning a move to a 3PL, or already there and things aren't quite right?
Supply Lens connects to Mintsoft, Zendbox, Logiwa, Flexport, and others — and integrates them with your ERP, Shopify and Xero so the whole operation runs without manual handoffs. Let's look at your specific setup.