Multichannel fulfillment fails when several storefronts treat the same physical unit as independently available. The solution is not simply “real-time sync.” It is one controlled product identity, explicit inventory states, reservation rules, idempotent order handling, and a traceable reason for every adjustment.
A China warehouse can be the physical source of truth for stock on hand, while the seller's order-management layer controls what each channel may sell. Those systems need a written contract of fields and events before live orders are connected.
Use one canonical SKU map
| Identity | Example purpose | Control rule |
|---|---|---|
| Canonical warehouse SKU | Physical item or sellable set | Never reused for a different product or variant |
| Supplier code | Receiving reference | Mapped to the canonical SKU; not used as a substitute when ambiguous |
| Channel listing ID | Marketplace or storefront offer | Many channel IDs may map to one canonical SKU |
| Barcode | Scan confirmation | Version and ownership documented; duplicate or unreadable codes quarantined |
| Kit or bundle ID | Virtual or preassembled sales unit | Component consumption rule defined before sale |
| Lot, batch, serial, or expiry | Traceability where applicable | Captured only at the level required by product and operating rules |
The map should record effective dates. When a listing changes from one pack to two, the physical consumption rule must change before the channel sells the new unit.
Separate inventory states
Shopify's developer model distinguishes states such as incoming, on hand, available, committed, reserved, damaged, safety stock, and quality control. A business does not need to copy those exact names, but it should preserve the distinctions.
| State | Meaning for the operating team |
|---|---|
| Incoming | Expected at the location but not yet physically received |
| On hand | Physically present, including units not available for sale |
| Quality control | Present but awaiting inspection or decision |
| Available | Eligible to be promised to a new order |
| Reserved or committed | Allocated to an order, transfer, or policy buffer |
| Damaged or blocked | Not sellable until an approved disposition changes the state |
| Shipped | Handed to the carrier under the defined event, no longer in stock |
“Received” should not immediately create available inventory if counting, identity, inspection, or labeling remains incomplete.
Make order ingestion idempotent
Every order needs a stable channel ID and version. If the same webhook, file, or API message is delivered twice, the warehouse system must not create two picks. Define how updates, cancellations, address changes, partial releases, and reships are represented.
At minimum, require:
- source channel and order ID;
- order creation and last-change time;
- canonical SKU, quantity, and bundle consumption;
- recipient and destination data handled under the agreed privacy rules;
- shipping service and customer-promise fields;
- packing or insert instruction version;
- customs data where required;
- hold, fraud, payment, or priority status;
- cancellation deadline and approval owner.
Create an adjustment audit trail
Inventory adjustments should identify the product, location, state, quantity change, reason, evidence, user or system, source document, and timestamp. “Manual correction” without a reason is not enough.
Run a daily reconciliation:
- compare channel orders with accepted warehouse orders;
- compare reservations with open picks;
- compare shipment confirmations with carrier acceptance;
- review negative stock and duplicate identifiers;
- review units in quality-control or damaged states beyond the agreed decision time;
- reconcile physical cycle counts to system records;
- publish only the approved available quantity back to each channel.
The ecommerce fulfillment guide explains the physical handoffs; this data model makes those handoffs auditable.
Fit the workflow to the confirmed facility role
FulfillNexa by SBT's confirmed Dongguan warehouse is 8,000 m², with a large operating floor and multiple loading bays. It focuses on ecommerce warehouse management and one-piece fulfillment, including apparel and toys. During onboarding, the seller should confirm the exact channel connector, field mapping, update frequency, failure alerts, manual fallback, inventory ownership, and test cases. A broad statement that a platform is “supported” is not enough.
Frequently asked questions
Is on-hand inventory the same as available inventory?
No. On-hand stock can include units committed to orders, reserved as safety stock, damaged, or awaiting quality control. Only the approved available state should be offered to new orders.
What causes overselling across channels?
Common causes include duplicate SKU mappings, delayed reservations, publishing on-hand instead of available stock, repeated order messages, failed cancellations, bundle-component errors, and adjustments without an audit trail.
Does every channel need its own warehouse stock?
Not necessarily. Channels can share a physical pool when the reservation and publishing rules prevent double allocation. Some businesses choose channel-specific buffers or dedicated stock for risk control.
How should bundles consume inventory?
Define a bill of materials linking the bundle to its components and reserve every required component atomically. If one component is unavailable, the bundle should not remain sellable unless a valid substitution rule exists.
What should be tested before connecting a live store?
Test new orders, duplicates, updates, cancellations, partial stock, bundles, address changes, shipping-service changes, failed messages, returns, adjustments, and recovery after a connection outage.
Sources and verification links
Operational rules can change. Check the linked primary sources and confirm shipment-specific requirements before booking.
- Shopify Developers — Inventory Management Apps and Inventory StatesOfficial source
- Amazon — How to Pack and Ship Ecommerce OrdersOfficial source
- Amazon — Multichannel FulfillmentOfficial source

