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.

Who this article is for: Operations managers planning a move to a 3PL, and IT or systems leads being asked to make the integration work. Both will find relevant material here — the article covers what needs to happen operationally and what that means technically, without requiring a background in either.

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.

The flow that gets ignored most often: Inbound stock receipts. When your supplier delivers goods to the 3PL, the warehouse confirms receipt. That receipt event needs to update your ERP stock levels — it shouldn't require you to manually reconcile a delivery note. Most businesses build the outbound flows before go-live and discover the inbound gap in week two.

What to configure before go-live

These are the decisions that need to be made — and tested — before the first live order goes through.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

Mintsoft
Zendbox
Logiwa
Flexport
TM3 / Emolog
Uniserve
Bretts
Other WMS and 3PL providers where API access is available
Before committing to a 3PL: Ask them specifically how they expose order and despatch data — API, webhook, flat file export, or portal only. A 3PL with a stable, documented API is significantly easier to integrate with than one whose only data export is a daily CSV you need to collect manually. This question is worth asking during procurement, not after you've signed a contract.

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.

New SKUs added without updating the mapping
A product launch or range extension creates new SKUs in the ERP. If the 3PL mapping isn't updated at the same time, those SKUs either fail to route or route to the wrong reference. Usually discovered when the first order containing the new product is placed.
Tracking numbers not returning correctly
The format of tracking numbers varies by carrier, and the 3PL's WMS sometimes returns them in a format that Shopify or the ERP doesn't recognise as valid. Results in fulfilments created without tracking, and customers receiving shipping notifications with broken links.
Stock counts drifting over time
Small discrepancies between what the 3PL holds and what the ERP shows compound weekly. Often caused by returns not flowing back correctly, goods received not triggering an ERP update, or the stock sync missing a narrow window during a high-volume period.
Partial fulfilments creating duplicates
When a 3PL ships part of an order and the remainder follows later, the integration needs to handle that as a single order with two despatch events — not two separate orders. Getting this wrong creates duplicate records in the ERP and double-charges in Xero.
Orders sent before stock is received
A pre-order or backorder is confirmed in the ERP before the goods arrive at the 3PL. If the hold rule isn't working correctly, the order is sent to the warehouse before there's anything to pick. The 3PL puts it on exception; nobody notices for two days.
Silent failures with no alerting
The most damaging kind. An order fails to route to the 3PL because of a mapping error, but no alert fires. The customer's order sits in a confirmed state in the ERP while the delivery window passes. First sign of the problem is a customer complaint, not a system notification.

"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.