Omnichannel Platform Architecture
The components most omnichannel builds underestimate are inventory consistency across write sources and order routing conflict prevention.
Unified Inventory Ledger
Inventory is modelled as a ledger of adjustment events (receipts, sales, returns, write-offs, transfers), not as a mutable stock count. The available-to-sell quantity is derived from the ledger in real time, so every channel reads from the same source of truth. Reservation events (checkout initiated, click-and-collect order placed) create a short-lived reserve that reduces ATP before the sale confirms, preventing oversells during concurrent checkout activity across channels. Reserve expiry is handled by a scheduled cleanup worker, not by the checkout flow itself.
Order Routing Engine
The routing engine assigns each order to a fulfilment node (DC, store, dropship supplier) based on configurable priority rules: stock availability, distance to customer, store capacity and pick queue depth, and margin contribution (factoring in split-shipment cost). Click-and-collect orders are routed to the elected store with an inventory reservation and a pick task created in that store's task queue. Ship-from-store orders are routed to the closest stocked location that meets a minimum capacity threshold, avoiding routing to stores already at queue capacity.
Customer Data Unification
Customer profiles are unified across in-store (POS transaction records), e-commerce (account orders), and app (session + purchase history) using a deterministic merge on email address + phone number, with probabilistic merge as a secondary pass for unmatched records. The unified profile drives loyalty point balance, cross-channel returns eligibility (online purchase returned in-store), and personalisation inputs; the profile is a view, not a single editable record, to avoid overwriting clean source data with merged errors.
Channel Integration Layer
Integrations with Shopify, BigCommerce, Magento, and custom storefronts are event-driven rather than polling-based: inventory changes publish to a message queue, channel adapters consume and push updates to each channel's API. Marketplace integrations (Amazon Seller Central, eBay Marketplace, Google Shopping) use platform-specific listing update APIs with retry logic and delivery confirmation; a failed update is retried with exponential backoff and surfaced as an alert if not resolved within a configurable SLA window.