Back to Documentation
Pull · Match · Push

Inventory Sync

The deep technical guide to how WarpWare keeps stock levels accurate across every warehouse and sales channel in real time.

Three-Phase Sync Flow

Pull

Warehouse polls stock

Match

SKU lookup + routing

Push

Channel queues update

Phase 1: Pull

WarpWare polls each warehouse connector for current stock levels on a configurable interval (default: every 5 minutes). The pull returns a list of SKU/quantity pairs from the warehouse's inventory system. Each connector implements its own pull adapter — Extensiv uses a REST endpoint, ShipBob uses its fulfillment API, and custom warehouses can push stock via the Partner API instead.

Phase 2: Match

Each SKU from the warehouse is resolved to a master product. The lookup first checks extensiv_sku (or the warehouse-specific SKU field), then falls back to the product's primary sku. Once matched, channel routing uses product_platform_links to determine which platform items need quantity updates.

Phase 3: Push

For each channel with a platform link, the calculated quantity is enqueued into a channel-specific push queue. Platform updaters process these queues asynchronously — Shopify uses the Inventory Levels API, Amazon uses the Feeds API, WooCommerce uses REST product updates. Queues are rate-limited per platform to avoid API throttling.

Order-Triggered Decrement

WarpWare does not wait for the next warehouse poll to update channel quantities. When an order is ingested, the system immediately decrements the local available count for each SKU in the order and queues a push to all linked channels. This ensures stock is reduced on Shopify, Amazon, and other platforms within seconds of order creation — not minutes.

The next warehouse poll then reconciles the local count with the actual warehouse quantity, correcting for any manual adjustments, returns, or external changes that occurred between polls.

How it works: Order arrives → decrement local stock → queue push to all channels → warehouse poll reconciles every 5 min. The combination of instant decrement + periodic reconciliation provides both speed and accuracy.

Buffer Calculation

Before pushing a quantity to any channel, WarpWare applies a three-layer buffer stack. Buffers prevent overselling by holding back units from the advertised available count.

Formula

channel_qty = max(0, available - product_buffer - source_buffer - channel_buffer)

availableCurrent stock from the warehouse (after order decrements)
product_bufferGlobal safety stock set on the master product (applies to all channels)
source_bufferBuffer set on the inventory source (warehouse-level reserve)
channel_bufferPer-channel buffer on the platform link (channel-specific holdback)

Example: Warehouse has 100 units. Product buffer is 5, source buffer is 0, Shopify channel buffer is 10. Shopify sees max(0, 100 - 5 - 0 - 10) = 85 units.

Inventory Sources

The /inventory/sources page shows all configured inventory sources — each representing a warehouse or fulfillment connection that provides stock data. Every source has a sync direction and optional primary designation.

Pull

WarpWare polls the source for stock levels on a schedule. Used for Extensiv, ShipBob, ShipHero.

Push

The external system pushes stock updates to WarpWare via the Partner API. Used for custom warehouses.

Bidirectional

Both pull and push are active. WarpWare polls on schedule and also accepts real-time pushes. Used for Extensiv.

The primary source flag determines which warehouse's stock is used as the base for channel pushes when multiple sources carry the same SKU. Only one source can be primary per product.

Source Comparison

The /inventory/compare page provides a side-by-side view of SKU overlap between any two sources — typically Shopify and the primary warehouse. This helps identify:

SKUs that exist in the warehouse but are missing from Shopify (not yet listed)
SKUs listed on Shopify with no warehouse counterpart (phantom listings)
Quantity discrepancies between what the warehouse reports and what Shopify shows
Missing channel mappings that prevent sync from flowing

What Prevents Overselling

Overselling is the most critical failure mode in multi-channel commerce. WarpWare uses a layered defense to minimize the window where stock can be sold beyond availability.

Instant Decrement

Stock is reduced locally the moment an order is ingested — not when the warehouse confirms. This closes the gap between order placement and channel update.

Three-Layer Buffers

Product, source, and channel buffers provide safety margin. Even if a decrement is delayed, the buffer prevents selling the last units.

Periodic Reconciliation

Warehouse polls every 5 minutes correct any drift from manual adjustments, returns, or external systems updating stock directly.

Async Push Queues

Channel updates are processed asynchronously with per-platform rate limiting. Shopify, Amazon, and other channels each have their own queue to avoid cascading delays.

Supported Warehouses

ExtensivPull + Push

Full bidirectional sync via REST API

ShipBobPull

Inventory pull via fulfillment API

ShipHeroPull

Stock levels via warehouse API

Partner APIPush

Custom warehouses push stock via REST

Need help configuring inventory sync?

Reach out to connect your warehouses, or explore the rest of the documentation.