VISEO Asia
Real-Time Inventory Sync Across Six Countries
Stock counts drifted between Shopify Plus and the OMS across every market the business operated in, and the fix was four hours of manual reconciliation a day.
Context
At VISEO Asia, I worked with international retail clients running Shopify Plus alongside a separate order management system for warehouse and fulfillment. Inventory lived in two systems that were supposed to agree with each other, across six countries and three regions, and often didn’t.
The problem
Stock counts drifted between Shopify Plus and the OMS constantly. Every drift meant one of two outcomes: overselling a product that was actually out of stock, or hiding a product that was actually available. Neither is a small problem at retail volume. The existing answer was a manual reconciliation pass, done by hand, every day, across every warehouse and every market.
The constraint
The OMS was the system of record for physical stock. Shopify Plus was the system of record for the customer-facing storefront and cart. Neither could be treated as universally authoritative — a return processed in the OMS had to reach Shopify before the next order could oversell it, and the sync had to run continuously, not on a schedule, because oversells happen precisely in the gaps between batch runs.
The approach
I designed a real-time middleware layer sitting between Shopify Plus and the OMS, treating inventory sync as its own system rather than a side effect of order processing. It reconciled stock across every warehouse and every market continuously, with the middleware acting as the single source of truth both systems deferred to.
The alternative I rejected was a nightly batch sync — the default most teams reach for, because it’s simpler to build. It’s also exactly why the manual reconciliation problem existed in the first place. A sync that runs once a day guarantees hours of drift by design, no matter how well it’s implemented.
Neither system is authoritative on its own — the middleware reconciles both, continuously
The result
Stock mismatch errors between the ecommerce storefront and the OMS dropped by 90%. Manual reconciliation went from four hours a day to near zero. One source of truth, for every warehouse, in every market.
What I’d do differently
I’d have instrumented the mismatch rate as a monitored metric from day one, instead of measuring it retrospectively after the middleware was already live. Knowing the exact baseline drift rate before the fix shipped would have made the 90% figure provable in real time, not reconstructed after the fact.