Syncing Physical Stock with Online Channels
STOCK SYNC ARCHITECTURE
Choose one inventory authority before connecting more channels
Reliable channel stock begins with one system that owns quantity and availability. Every website, marketplace and accounting app should consume or report events according to that boundary rather than competing to be correct.
01 – IDENTITY
Stabilise the sellable unit
Give every stocked product or variation one governed SKU and map channel listings to that identity.
02 – AVAILABILITY
Publish a deliberate promise
Calculate sellable quantity from on-hand, reservations, buffers and holds instead of copying a raw warehouse balance.
03 – RECOVERY
Make sync failure visible
Store rejected events, alert an owner and support safe replay without applying a sale, return or receipt twice.
Prove the most difficult SKU and channel combination
Use a variation, low quantity and a channel with delayed updates. Test the last unit, cancellation, return, receipt and connection outage before scaling.
To synchronise physical stock with online channels, first make one system authoritative for the sellable unit and quantity. The website may capture orders, a warehouse app may own physical movements, and accounting may own inventory value, but they cannot all overwrite stock independently without a conflict rule.
Use the stock-control service when physical counts and channel availability disagree. The stock-out policy guide helps decide what each channel should do when available quantity reaches zero.
1. Define the stock identity
Every stock-controlled simple product or variation needs a stable internal identity. Use a governed SKU or item code that does not change when the marketing title, category or channel listing name changes. If a channel uses its own listing ID, keep an explicit mapping to the internal stock unit. Do not map by description alone.
| Entity | Required identity decision |
|---|---|
| Simple product | One SKU maps to one physical or virtual sellable unit |
| Variation | Each separately stocked combination has its own SKU |
| Pack or case | Unit conversion to the base stock unit is explicit |
| Bundle or kit | Component consumption and availability calculation are defined |
| Marketplace listing | External listing and variation IDs map to the internal SKU |
| Replacement SKU | History, open orders and migration from the old code are controlled |
2. Choose the system of record by business fact
| Fact | Possible authority | Boundary |
|---|---|---|
| Physical on hand | Warehouse or inventory system | Receipts, picks, adjustments and counts change it |
| Online order | Ecommerce or marketplace | Creates a reservation or demand event |
| Available to promise | Inventory service or governed calculation | Subtracts reservations, holds and safety buffer |
| Product content | PIM, ecommerce or ERP | Owns titles, attributes and media separately from quantity |
| Inventory value | Accounting or inventory valuation system | Uses approved cost and financial periods |
Write the boundary into the integration design. For example, WooCommerce may publish orders and display availability but must not become the physical stock authority when the warehouse system owns receipts and counts. Xero may receive financial inventory movements without being the operational source for every channel quantity.
3. Define available-to-promise
The channel should receive the quantity the business is prepared to sell, not blindly the physical count. A common model starts with accepted on-hand stock, subtracts reservations, quality holds and channel commitments, then subtracts an approved safety buffer. Incoming purchase orders should not become available until the receipt rule is satisfied unless a separate preorder policy exists.
- Define which order statuses reserve stock and when reservations expire.
- Separate damaged, returned-pending-inspection and quarantined units from sellable stock.
- Decide whether channels share one pool or receive allocations.
- Use buffers only for a stated latency or operational risk and assign an owner.
- Record negative or impossible availability as an exception, not as a normal sync value.
4. Choose event direction and timing
Prefer event-driven changes where the platforms and volume support them, but design for delayed or batched channels. Each event should carry a unique source ID, SKU, quantity change or absolute balance, timestamp and source version. Decide whether the target applies deltas or replaces an absolute value. Mixing those methods without version control can corrupt stock.
| Stock event | Minimum evidence | Expected target behaviour |
|---|---|---|
| Order accepted | Order ID, line ID, SKU, quantity and status | Reserve or reduce once |
| Order cancelled | Original reservation reference and releasable quantity | Release only what remains reserved |
| Shipment | Fulfilment reference and shipped quantity | Move reserved stock to issued state |
| Return received | Return line, disposition and accepted quantity | Restock only sellable units |
| Receipt accepted | Purchase receipt, SKU, counted quantity and location | Increase after acceptance |
| Stock count adjustment | Before, after, reason, actor and timestamp | Replace or adjust under an audit rule |
5. Build idempotency and ordering safeguards
Network retries are normal. Use a unique event key so processing the same order or cancellation twice has no additional effect. Preserve sequence or version evidence so a delayed old balance cannot overwrite a newer count. When events arrive out of order, hold and reconcile them rather than guessing from the latest message received.
6. Create an exception queue
- Unknown or duplicated SKU mapping.
- Channel variation points to the wrong parent or stock unit.
- Negative availability outside the approved backorder policy.
- Target rejects authentication, validation or rate limits.
- Event is older than the current stock version.
- Physical count and system balance differ beyond the approved tolerance.
- Manual edit occurs in a non-authoritative channel.
Store enough context to correct the root problem and replay safely. The queue needs severity, affected channel, SKU, event ID, detected time, last trustworthy state, owner and resolution. A daily spreadsheet of unexplained differences is not a substitute for durable exception handling.
7. Test end-to-end stock states
- Create the item and variation mappings from a clean sample.
- Publish a low but non-zero quantity to every channel.
- Sell the last unit on one channel and confirm the others stop according to policy.
- Cancel an unpaid order and verify the quantity returns once.
- Partially fulfil and partially cancel a multi-line order.
- Receive and inspect a return, including a damaged disposition.
- Accept a purchase receipt and verify quantity only after the counted event.
- Disconnect one channel, create several events, reconnect and replay them in the right state.
Worked channel example
A wholesaler sells the same filter as one unit on WooCommerce and as a box of six on a marketplace. The inventory system stores individual units. The marketplace listing maps one box sale to six units, and the available box quantity is the whole-number result after reservations and a buffer. A WooCommerce order for two units and a marketplace order for one box therefore reduce the same stock pool by eight units without creating two item masters.
During a marketplace outage, order events are retained and stock publishing for that listing is paused when the buffer is exhausted. After reconnection, the unique event IDs prevent duplicate reduction. The team reconciles the affected SKUs before reopening the listing. The system fails visibly and safely rather than claiming a real-time sync that did not occur.
Operate and review the sync
Monitor event delay, rejected updates, unmapped SKUs, manual channel edits, negative stock, oversell incidents and reconciliation differences. Review the highest-impact exceptions with operations and technical owners. Re-test after adding a channel, changing SKU structures, introducing bundles, moving warehouses or changing the order-status policy.
Sources checked
- WooCommerce: Product settings and inventory
- WooCommerce: Troubleshooting orders and stock
- Xero App Store: Inventory management apps
Reviewed by
Mitrend Digital editorial team
2026-07-17
Evidence used for this page
Reviewed against current WooCommerce inventory and order-troubleshooting documentation plus Xero inventory-app guidance. Includes an original stock-event contract and channel acceptance test.
Turn the guide into a practical next step
This resource provides general implementation guidance. Verify platform settings, tax, legal, payment and operational requirements against the current business context before making a live change.
