E-commerce & ERP

How to Sync Inventory Across Amazon, Shopify, and WooCommerce Without Overselling

DigSolutions Engineering··3 min read
Warehouse aisle lined with stocked storage shelves

Key takeaways

  • Overselling almost always traces back to polling delays or a missing single source of truth, not bad luck.
  • Webhooks plus a buffer stock threshold catch the gap that scheduled inventory syncs miss.
  • Order-first, listing-second sync order prevents the most common race condition across channels.
  • Centralizing inventory in one system turns "add a new channel" into a config change instead of a new integration headache.

Overselling isn't bad luck. It's almost always one of three specific causes: polling on a delay long enough for two channels to both sell the last unit, a listing that was updated on one platform but not the others, or genuinely having no single system that owns the "true" stock number in the first place. Fix the cause and overselling stops being a recurring fire drill.

Polling delay is the most common one. If your Shopify and WooCommerce stock counts refresh from Amazon every 15 or 30 minutes on a cron job, there's a window every cycle where all three channels think they have inventory that's already sold. On a fast-moving SKU, that window is enough for two customers to buy the same last unit within minutes of each other.

Webhooks close most of that gap, but not all of it. Amazon, Shopify, and WooCommerce each fire an order-placed event you can subscribe to, and reacting to that event to decrement stock everywhere else, instead of waiting for the next poll, cuts the exposure window from minutes to seconds. It doesn't eliminate it: a webhook can be delayed, retried, or dropped, and two orders can still land close enough together that the second one processes before the first one's webhook is handled.

That's what a buffer threshold is for. Reserving a small quantity, sometimes as little as 1-2 units on a slow SKU, that never shows as available on any channel gives the sync process room to catch up before a real oversell happens. It costs a handful of lost sales on paper; it saves the much more expensive cost of canceling a confirmed Amazon order, which affects your account health metrics in a way a WooCommerce cancellation never does.

Sync order matters more than most integrations account for. When an order comes in, decrementing stock has to happen before the listing/price sync job runs, not after, or a listing update can silently overwrite a stock decrement that hasn't been persisted yet. We've seen this race condition cause phantom restocks: a customer cancels an order, stock goes back up, and a listing sync job that started a second earlier overwrites it with a stale number.

The actual fix isn't a smarter sync algorithm bolted between three platforms, it's removing the need for three-way syncing entirely. In the multi-channel ERP work we've done, the ERP owns product and inventory data as the single source of truth, and each storefront is a synced channel that reads from and writes to that one system, instead of three systems trying to stay consistent with each other pairwise.

That architecture also changes what "add a new sales channel" means. Instead of building a new sync path between the new channel and every existing one, you build one integration against the ERP, the same pattern you already have for Amazon, Shopify, or WooCommerce. We built exactly this for a multi-channel retailer selling the same catalog across all three platforms: one place to manage stock and pricing, automatic sync outward, and the overselling incidents that used to require manual reconciliation stopped being a weekly occurrence.

If you're still managing stock separately on each platform today, the fastest low-risk first step isn't a full ERP migration, it's picking your highest-velocity SKUs and getting those on webhook-driven sync with a buffer threshold first. It proves the pattern on the inventory that actually causes oversells, before you invest in centralizing everything else.

Ready to talk about your project?

Tell us what you're building. We'll respond within one business day with next steps, no sales runaround.