Inventory & Channel Sync

One order hub for Shopify, Amazon, and wholesale

Running Shopify, Amazon, and wholesale orders from one system instead of three disconnected tools.

Last updated September 16, 2026

Do not run three order systems. Run one pool. Tag every order by channel. Filter the work queues.

Shopify as the hub strands corporate drafts and unpaid wholesale. Amazon as the hub only sees FBA. Spreadsheet adjustments for Faire, Amazon replenishment, or wholesale are how DTC oversells and production reports go bad. Every channel lands as a native order. A 60-unit FBA restock keyed as an adjustment leaves production reporting blind, and DTC can sell the 60 that already left. Book it as an internal shipment that consumes warehouse stock.

One pile with logical pools

One physical pile. Logical holds on top. Manual pools (wholesale, off-price, nationals) get a funded quantity. DTC is the remainder. Pools change what each channel shows. They do not change what the warehouse will allocate.

You have 20 on hand. Wholesale is funded 7. DTC remainder is 13. Shopify shows 13. A wholesale order for 20 still takes 20 if 20 exist. The channel only advertised 7. If a booking must be untouchable for months, park it in a virtual zone outside the primary sellable zone, not in a display pool. A 400-unit booking nine months out, left in a wholesale pool of 400, will still allocate to the first 850 that asks.

Receive inbound into the funding pool

Inbound has the same leak. You receive 100 into the shared pile. On-hand is now 120. The wholesale pool still says 7 until you re-import it. DTC remainder jumps from 13 to 113, and Shopify publishes units you already promised a retailer. Receive the PO into the pool that funded it when you must.

Route with a default warehouse per channel

Routing is a default warehouse per channel plus a fallback. Channel-to-location mapping is the silent router. A closed warehouse left on the map keeps getting orders. Next-available-warehouse should move an order only when one site can take every line. That avoids a split. A per-SKU overflow to Amazon MCF will split: two parcels, two dates, and Shopify carrier rates that MCF cannot honor. A three-line order with one SKU overflowing is two boxes. Decide that per channel. Wholesale and Amazon rarely tolerate two boxes.

Split work queues by batch type

Work queues split by batch type, not by system. Bulk ship for wholesale. Tote pick for DTC. If a WS order lands in the DTC batch, the exclusion list is wrong, not the architecture. Wholesale Net30 needs its own channel state rules. An unpaid Net30 order will fail import on a paid-only Shopify channel. Do not loosen DTC paid-only to make Net30 import. Give wholesale its own channel.

Run this with AI

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 brand selling on Shopify, Amazon, and wholesale from one warehouse.
Here is: order_id, channel, payment_terms, sku, qty, warehouse_assigned, warehouses_with_stock, pool_shown, on_hand, inbound_to_pool, batch_queue, booking_months_out, created_as (order/adjustment).
[paste]

Produce:
1. Orders that should not have been created as inventory adjustments (Faire, FBA replenishment, wholesale).
2. Orders that will over-allocate a display pool (shown qty vs warehouse qty).
3. Misroutes (stale location map, DTC batch eating wholesale).
4. Which orders would split, and whether that channel should allow it.
5. Bookings that need a virtual zone, not a display pool, and inbound that hit the shared pile.
Recommend one default warehouse per channel and a no-split fallback rule.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.