Inventory & Channel Sync
Should Shopify or my 3PL be the source of truth for inventory?
Deciding where your real inventory number should live when Shopify and your 3PL disagree.
Last updated September 16, 2026
Neither. Shopify is the storefront. The 3PL is the floor. The books are the valuation. Those are three jobs. One number cannot do all three without lying to the other two.
SKU-441, Monday 6pm. The 3PL file says 200 on-hand. Shopify is publishing 188 after a buffer. The books hold $4,400 at a $22 weighted average. Overnight the 3PL picks 40 and receipts 12 returns into QC. Tuesday 9am the file still says 200. Shopify still shows 188. The floor is 160 sellable (200 minus the 40 picks; the 12 returns are not sellable). Treat the 3PL file as truth and you publish 200: you oversell the 40 already gone plus the QC. Treat Shopify 188 as truth and type the warehouse down to match: the next file writes 200 back, and you just lied to the general ledger. The books still hold $4,400 until you journal the picks and decide the returns. Three numbers. Three jobs.
On-hand, available-to-sell, and published qty
On-hand is what sits in a bin. Available-to-sell is on-hand minus reserved, minus quarantine and returns QC, minus in-transit that is not yet received, plus inbound only if you truly sell pre-orders. Published Shopify quantity is ATS after a buffer.
Publish one way, warehouse to channel
Inventory should flow one way: warehouse to channel, never channel back to warehouse. Shopify decrements on checkout. If the warehouse still holds the old number and exports it, stock writes back up and you oversell. The 3PL's count is physical. It is not available-to-sell until you strip non-sellable zones. Some 3PLs only send a count file, not a live feed. That file is a snapshot of the floor at close of their day, not a live ATS feed. FBA is a day-old ledger. Amazon Reserved can land as on-hand. Publish that and Shopify will sell units Amazon will not ship.
A connector that copies Shopify into the 3PL and the 3PL into Shopify will thrash: each side "corrects" the other, and the race is the oversell.
Value inventory on the books
The books need a third number: valued inventory by location. Shopify never held landed cost. A 3PL on-hand report is units, not dollars. Cycle-count the 3PL against a snapshot of expected qty, then journal the shrink. Do not "fix" the GL by typing Shopify down. Do not let Shopify restock a return if the warehouse already put the unit back. One physical unit, two restocks: published qty jumps by two, the floor has one, and the storefront and the books drift until someone reconstructs the day.
Pick a middle system of record
Pick a middle system of record. Publish ATS to Shopify. Receive the 3PL's floor. Value the pile on the books. Reconstruct the ledger by SKU and timestamp before you call a mismatch an oversell. Channel, warehouse, and books will never match unit-for-unit if you keep asking which of the two endpoints is "true."
Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.
You are the ops lead for a Shopify Plus brand with a 3PL (and maybe FBA). Here is: sku, location_type (3pl / fba / own), on_hand_3pl, shopify_published, reserved, quarantined, returns_qc, fba_reserved, unit_cost, last_3pl_file_ts, last_shopify_export_ts, shopify_restocked_return (y/n), warehouse_already_received_return (y/n). [paste] Produce: 1. Which number is floor, which is storefront, which is books. Do not pick Shopify or the 3PL as the single source of truth. 2. Rows where publishing the 3PL file as-is would oversell (quarantine, Reserved, returns QC, stale file). 3. Rows where Shopify is being used as a fake warehouse (manual edits, restock-from-return after the warehouse already received). 4. A one-way publish rule per SKU (warehouse to channel) and what must never write back. Flag any connector that is copying both directions.
Explore this in Fulfil
More on Inventory & Channel Sync
How to manage inventory across multiple warehouses without overselling
How to publish accurate available-to-sell for each warehouse so your channels stop overselling.
One order hub for Shopify, Amazon, and wholesale
Running Shopify, Amazon, and wholesale orders from one system instead of three disconnected tools.
ABC classification for DTC
Using ABC analysis to focus your counts and reorder attention on the SKUs that matter most.
See it run on
your data.
Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.