How to stop overselling: multichannel inventory sync for Shopify, Amazon, Etsy and TikTok Shop
Multichannel inventory sync that stops overselling on Shopify, Amazon, Etsy and TikTok Shop: one source of truth, webhooks, buffers, bundles and FBA.
By Rokibul Hasan8 min read
- E-commerce
- Inventory

Overselling happens when the same last unit sells on two channels before either one knows about the other. One buyer gets an apology and a refund, you lose the sale, and on Amazon the cancellation counts against your account. The way to prevent overselling is multichannel inventory sync done properly: one source of truth for stock, updates pushed the moment something changes, and a regular check that catches whatever the updates missed.
This guide is for sellers running Shopify alongside Amazon, Etsy or TikTok Shop who have oversold at least once and want a setup that holds. Stock and order sync is part of the automation work I do, so this is the developer's view: where the delays come from, what the platforms' own tools cover, and where custom work starts.
Why overselling happens across channels
Every channel keeps its own copy of your stock count, and overselling lives in the gap between a sale on one channel and the update reaching the others. The usual causes:
- Polling. Many apps and no-code tools check for changes on a timer instead of reacting to events. A popular product can sell twice before the next check.
- Missed updates. Shopify's own documentation says webhook delivery "isn't always guaranteed" and that events can arrive out of order (Shopify). An update that never arrives leaves a channel wrong until someone notices.
- Rate limits. A sync that hits an API's limit in a busy hour falls behind, and some tools fail quietly when it does.
- Manual edits. Someone fixes a quantity directly in Seller Central or Etsy, and the sync overwrites it or never hears about it.
- Bundles. A gift set and the items inside it draw on the same stock, but each channel sees them as separate products.
The cost is not just one refund. Amazon recommends keeping the cancellation rate on seller-fulfilled orders under 2.5% over a seven-day window, and says a higher rate may lead to deactivation of seller-fulfilled offers (Amazon Seller Central).
Start with one source of truth
Decide where the real number for each product lives. Everything else is a copy.
For most sellers on Shopify, Shopify is the natural choice: it already tracks stock per location, and TikTok's own Shopify app treats it as the source of truth. Larger operations may use an inventory system or a database owned by a custom sync. What matters is that there is exactly one, and nobody edits quantities anywhere else.
Each channel then receives an "available to sell" figure rather than the raw count: stock on hand, minus units committed to open orders, minus that channel's buffer. Working it out centrally keeps every rule in one place.
How multichannel inventory sync works: events plus reconciliation
A sync that holds up uses two mechanisms together.
Events, for speed. Each platform can tell you when something changes:
- Shopify sends webhooks for new orders and inventory level changes; deduplicate them with the X-Shopify-Webhook-Id header.
- Amazon's Selling Partner API sends notifications through Amazon SQS or EventBridge, such as ORDER_CHANGE for orders and FBA_INVENTORY_AVAILABILITY_CHANGES for FBA stock.
- Etsy's Open API documentation now lists webhooks for orders, listings and inventory, including order.paid and inventory.updated (Etsy developer docs).
- TikTok Shop's Open API offers webhooks to apps that connect to it directly.
When an order arrives, the sync recalculates the available figure for that SKU and pushes it everywhere else: to Amazon through the Listings Items API (or the JSON listings feed for big batches), to Shopify through the GraphQL Admin API's inventory mutations, and to Etsy by updating the listing's inventory.
Reconciliation, for correctness. On a schedule, a job reads the real quantities on each channel, compares them with what they should be, corrects any difference and logs it. Shopify recommends reconciliation jobs precisely because webhooks can be missed. Cheap tools often skip this step, and it is what stops one lost event turning into a week of wrong stock.
Race conditions, rate limits and failed updates
Two orders for the last unit. If two sales land within a second, two workers can each read "1 in stock", each subtract one and each write "0", and nobody notices that two units sold. The fix is to process one SKU's updates one at a time, in a queue keyed by SKU, and to write quantities with a check. Shopify supports this for inventorySetQuantities: since API version 2026-01 you pass the quantity you expect to change from, and Shopify rejects the write if the stored value has moved (Shopify changelog).
Rate limits. Shopify's GraphQL Admin API uses a cost-based leaky bucket, restoring 100 points a second on standard plans. Amazon sets usage plans per operation and returns HTTP 429 when you exceed them. Etsy limits each API key per second and per day, and returns 429 with a retry-after header. A good sync batches updates, backs off when told to, and puts SKUs close to zero at the front of the queue.
Failed updates. Record every push and its result. An accepted request to Amazon is not proof the listing shows the new quantity, so check the response for issues, and alert a person when pushes keep failing.
Buffers, bundles and kits
Buffers. A buffer holds back a few units from a channel so a slow update does not become a cancelled order. Use bigger ones where cancellations cost most, such as seller-fulfilled Amazon orders.
Bundles and kits. A bundle's stock is whatever its scarcest component allows. Shopify's Bundles app works it out that way: each component's stock divided by the quantity in the bundle, rounded down, with the lowest result winning (Shopify Help Center). Marketplaces, though, see a bundle as just another SKU with its own quantity. Your sync has to recalculate every bundle that contains a component whenever that component sells, on any channel, and push the new figures. TikTok's Shopify app does not support bundles at all, so bundles are often the first reason a seller needs something custom.
One-of-a-kind items. For handmade or vintage stock with a quantity of one, a buffer cannot help: the item has to come off every channel the moment it sells. The Etsy and Amazon integration guide covers that case.
FBA and merchant-fulfilled stock are different pools
Stock in Amazon's fulfilment centres is not stock on your shelf, and a sync must keep them apart.
- FBA units are counted by Amazon. Your sync reads them, through the FBA Inventory API or the availability-change notification, but does not set them.
- Merchant-fulfilled units are yours. Your sync sets the Amazon quantity, just as it does on Shopify or Etsy.
To sell FBA stock on Shopify, Etsy or TikTok Shop, those orders have to ship through Amazon Multi-Channel Fulfillment, and the FBA count becomes the source of truth for those listings. That is as much a routing decision as a sync one; order fulfilment with Amazon MCF explains how it fits together. Give the FBA and merchant-fulfilled versions of a product separate SKUs, so neither count is ever mistaken for the other.
Built-in sync options and where they stop
Check what the platforms offer first:
- Shopify Marketplace Connect syncs listings, inventory and orders between Shopify and Amazon, eBay, Walmart and Target Plus. It does not support Etsy.
- Amazon's multichannel tools in Seller Central, announced in September 2026 and rolling out gradually to US sellers, connect eBay, Shopify, TikTok Shop and Walmart so you can import listings and see and fulfil orders in one place. Etsy is not included.
- TikTok's app for Shopify keeps Shopify as the source of truth, pushes products and inventory to TikTok Shop and brings orders back; see the Shopify and TikTok Shop integration guide.
- Etsy has no connector from Shopify or Amazon. Third-party apps exist, or you build on Etsy's Open API.
These are a good start when your setup matches what they expect. They struggle with bundles, Etsy, several stores or warehouses with different rules.
A checklist for preventing overselling
- One SKU per product, identical on every channel, never reused.
- One source of truth; no stock edits anywhere else.
- Separate SKUs for FBA and merchant-fulfilled stock.
- Webhooks and notifications rather than polling, wherever possible.
- A reconciliation job that logs every correction.
- Each SKU's updates processed in order, written with a check where the API allows.
- Per-channel buffers for the last few units.
- Bundles recalculated whenever a component changes.
- Alerts when a push fails or a channel drifts.
- A real test order on each channel before you trust it.
What multichannel inventory sync costs
Ready-made apps charge monthly or per order: Shopify's Marketplace Connect costs nothing for the first 50 synced orders each month, then 1% per additional order up to $99 a month. No-code tools look cheap at first, but timers and per-task pricing work against stock sync in particular, as I explain in Zapier vs Make vs n8n for ecommerce.
A custom multichannel inventory sync costs more up front and fits your rules exactly. My Flexible plan for marketplace and ecommerce apps, from $5,500, covers two or more channels with stock and orders kept in sync, plus a dashboard; the MVP plan, from $2,500, covers one marketplace and one automation. Both are starting prices, with a fixed quote after a short brief: see the marketplace app plans and the ecommerce automation page.
FAQ
How often should inventory sync between sales channels?
Stock should update within seconds of a sale, which means reacting to webhooks and platform notifications rather than checking on a timer. A scheduled reconciliation job should then compare every channel with the source of truth, more often for fast-moving catalogues, to catch anything the events missed. A sync that relies on polling alone is the most common reason fast-selling items oversell during busy periods, because two orders can land between checks.
Should I keep a safety buffer on every channel?
Keep buffers where a cancellation costs most and on products that sell quickly. Seller-fulfilled Amazon orders are the usual candidate, because cancellations count against your account health there. Apply buffers only to the last few units, so they do not hide stock when you have plenty, and set them per channel rather than one number for everything. For one-of-a-kind items a buffer does not help; the item has to come off every channel as soon as it sells.
Can I sell my FBA inventory on Shopify, Etsy or TikTok Shop?
Yes, through Amazon Multi-Channel Fulfillment, which ships orders from other channels out of your FBA stock. Shopify and TikTok Shop connect to it through apps, and Etsy through Amazon's Veeqo or third-party integrators. Your sync then treats the FBA count as the source of truth for those listings and sends each order to Amazon to ship. If you also ship some stock yourself, keep those units on separate SKUs.
If overselling is costing you orders, send me a short brief: the channels you sell on, roughly how many SKUs and orders a day you handle, where stock lives today, and whether you use FBA or bundles. You can ask for a quote on the Flexible marketplace plan, read more on the ecommerce automation page, or start with what to automate first in ecommerce.


