3PL inventory management: keeping your numbers honest when someone else holds the stock
3PL inventory management for Shopify sellers — why your numbers and theirs drift, SLA questions to ask, and the weekly routine that prevents oversells.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
When a 3PL fulfills your orders, the truth about your inventory lives in two places: their warehouse management system, which knows what's physically on their shelves, and your Shopify admin, which decides what your storefront can sell. Nothing else in your operation matters as much as the gap between those two numbers — because when they disagree, one of two expensive things happens: you oversell stock that isn't there, or you sit on stock your storefront thinks is gone. This article covers why the gap opens, the SLA terms that control it, and a weekly reconciliation routine that catches drift before customers do.
Why the two systems disagree
The 3PL's WMS and your Shopify numbers are updated by different events at different speeds:
- Sync lag. Sales, receipts, and adjustments propagate from the WMS to Shopify (or the reverse) with delay — minutes when everything's healthy, hours during their peak volume or an API outage. Your 3PL ships orders as a connected fulfillment service (Shopify Help Center, order fulfillment, accessed October 2026), and any two-system connection lags — that's the design fact you manage.
- Receiving delay. Your inbound shipment arrives Tuesday; it might not be counted, put away, and made sellable until Thursday. In between, Shopify shows units as incoming or nothing at all, and your days-of-cover math silently overstates how soon stock is usable.
- Their adjustments never surface. Damaged units pulled during picking, mis-picks found and corrected, units lost in the wrong bin — the WMS absorbs these as adjustments. Whether (and how fast) each one reaches your Shopify count depends entirely on how their integration is configured.
- States that don't map. Their WMS has picked-but-not-shipped, QC-hold, damaged-quarantine, and returns-processing states. Shopify has available, committed, and unavailable (Shopify Help Center, inventory states, accessed October 2026). Units in WMS-only states are physically present but not sellable — the "phantom stock" that makes both numbers partially right and fully confusing.
None of this means 3PLs are careless. It means the two systems measure different things (shelf truth vs. sellable truth) and the plumbing between them is configured per client. The drift is a design fact you manage, not a bug you fix.
The SLA questions to ask before (or while) it's a problem
A 3PL relationship is a service contract, and inventory-data accuracy is a service you can specify. Ask, in writing:
- What's the inventory sync frequency between your WMS and Shopify — and what happens during an outage? (You want push-on-change or short polling, plus a defined recovery behavior.)
- What's the receiving SLA — hours from truck arrival to sellable? Get a number; "same day" and "three business days" are different businesses.
- How are cycle counts performed and reported? Frequency, who counts, and whether you get the variance report or just the corrected total.
- What's the inventory accuracy commitment and its remedy? As a rule of thumb, many 3PLs commit to a pick-and-pack accuracy percentage — treat the specifics as an assumption until you see the SLA. Some commit to inventory accuracy. Know which you have — and what happens (credit? root-cause report?) when they miss.
- How do damaged and quarantined units appear in your numbers — a synced state, a report, or a phone call?
- Who owns shrinkage? The standard framing makes the 3PL responsible for units lost while in their custody, with defined evidence thresholds — but the definition and threshold are negotiable, so negotiate them rather than discovering the default during your first loss.
These aren't adversarial questions; good 3PLs answer them proudly. The answers also give you the inputs for your side of the contract — the reconciliation routine below. Treat the 3PL relationship like any supplier relationship: measured, not assumed (the same record-keeping logic as a supplier scorecard applies — on-time receiving, accuracy, responsiveness to discrepancies).
The weekly reconciliation routine
Twenty to thirty minutes a week catches almost all drift before it becomes an oversell. Pick a fixed slot — Friday afternoon works, ahead of weekend volume.
1. Spot-check count match. Pull the WMS on-hand for your top 10 SKUs and compare to Shopify's on-hand for the 3PL location. Allow small, explainable differences (units in pick or pack). Flag anything else.
2. Reconcile the deltas, not just the totals. For any mismatch: last-known-good count, + receipts, − shipments, ± adjustments, = expected. Whichever term is missing is your answer — an un-synced receipt, an unreported adjustment, or a stale sync.
3. Check the commitment bridge. Units picked-not-shipped and returns-in-processing should be visible somewhere. If your only data is two totals (theirs and yours), ask for the state breakdown — most WMS exports have it.
4. Review receiving against the SLA. Every inbound this week: arrival date vs. sellable date. Trend it monthly. A slipping receiving SLA is the earliest visible sign of an overloaded facility — and it silently breaks every days-of-cover calculation you run.
5. Log discrepancies and close them. A shared spreadsheet, one row per discrepancy: date, SKU, delta, cause, resolved-by, resolution. The log is leverage in the SLA conversation and the antidote to "that seems like a one-off."
When your own Shopify numbers look wrong — as opposed to the 3PL-vs-admin gap — that's a different diagnostic path, covered in Shopify inventory not updating; fix that first, or your reconciliation will chase ghosts.
Counting through a 3PL
Cycle counts still happen when someone else holds the stock — you just schedule them differently. The practical approach:
- Ask for counts as a service line. Most 3PLs will cycle-count on request — a monthly count of your top N SKUs, or a full count quarterly. Small brands often skip this; it's the cheapest insurance in the relationship.
- Count the A-SKUs most. The 10–20 SKUs that drive most of your revenue deserve monthly counts; the long tail can ride on quarterly spot checks. The counting cadence logic is the same as for your own shelves — the cycle count guide covers it.
- Watch count-day friction. A count freezes or slows fulfillment for those SKUs; schedule counts away from promo windows.
- Reconcile variances to root cause, not to zero. A 3PL that "corrects" variances without telling you is hiding its own accuracy problems. Your contract item 3 exists for exactly this.
What this means for reordering
Every input to your reorder math gets noisier through a 3PL: velocity is fine (Shopify records sales), but on-hand is lagged, inbound is soft until receiving closes, and WMS-only states hide units. Two adjustments:
- Order on available-to-promise, not on-hand: sellable units = synced available − units in non-sellable WMS states (from your weekly state breakdown). It's a conservative number, and conservative is correct when the downside is an oversell — the cost of which is covered in the overselling guide.
- Treat inbound as confirmed only when received. Until the 3PL's receiving report closes, an inbound PO is a plan, not stock. Budget coverage against the receiving SLA slipping, because at their peak season it will.
Common questions
How does inventory work with a 3PL? The 3PL's WMS tracks physical stock and fulfillment states; it syncs quantities to your Shopify location. The sync covers on-hand levels, not the WMS's richer states (quarantine, returns processing), and it lags — which is why 3PL inventory management is mostly a reconciliation discipline: compare both systems weekly, trace deltas to a cause, and count through the 3PL on a schedule.
Why do my Shopify numbers differ from my 3PL's? Sync lag, receiving delay before units become sellable, WMS-side adjustments (damage, mis-picks) that don't surface, and unmapped states like picked-not-shipped. Both numbers can be simultaneously correct — they measure different things. The weekly reconciliation routine traces which difference is which.
Should I cycle count inventory held at a 3PL? Yes — most 3PLs offer count services on request. Count your A-SKUs monthly and spot-check the tail quarterly. The counts validate the accuracy commitment in your SLA and catch drift that sync lag and unreported adjustments would otherwise let compound.
Who is responsible for lost inventory at a 3PL? It depends on your contract. The standard framing holds the 3PL responsible for units lost in their custody, with defined evidence thresholds and remedies — but the specific definition, threshold, and credit mechanism are negotiated terms, not automatic rights. Put them in writing before the first shrinkage event, not after.
How do I prevent overselling with a 3PL? Order and sell against available-to-promise rather than raw synced on-hand: subtract units sitting in non-sellable WMS states, treat inbound POs as unconfirmed until receiving closes, and keep the weekly top-10 spot-check. Oversells through a 3PL are almost always a lagging sync meeting a low buffer — shrink the window, keep the buffer.
Where to go next
This week: pull the WMS on-hand for your top 10 SKUs and compare to Shopify. Whatever you find, start the discrepancy log — one row per mismatch with a cause — because that log becomes both your early-warning system and your evidence file for the next SLA conversation. Then book your first cycle count through the 3PL for your ten fastest movers; the mechanics mirror your own count routine in the inventory counts guide.