Shopify to Amazon Inventory Sync
How to sync inventory between Shopify and Amazon using SP-API and Shopify Admin API. Architecture patterns, off-the-shelf tools, custom builds, cost and failure modes.
Selling on both Shopify and Amazon means keeping inventory accurate across two platforms that do not talk to each other natively. Oversell on Amazon and you get a listing suppression that takes days to recover from. Oversell on Shopify and you get a cancelled order and a refund that costs you the transaction fee. The sync needs to be fast enough that a sale on one channel reduces available quantity on the other before the next order comes in, and robust enough to handle partial fulfilment, returns, FBA inventory and Shopify draft orders. This article covers the architecture, the off-the-shelf tools, and when a custom build using Shopify Admin API and Amazon SP-API is the right move.
TL;DR
- Shopify to Amazon sync requires a middleware layer that listens for changes on both platforms and reconciles against a single source of truth.
- Off-the-shelf tools (Sellbrite, Codisto, ByteStand) work for single-location sellers with under 5,000 SKUs.
- Custom sync is necessary for mixed FBA and FBM, multiple Shopify locations, or unexpressible business rules.
- Build cost starts at $4,000. The critical decision is where the source of truth lives.
Why inventory sync between Shopify and Amazon is hard
The difficulty is not the APIs. The Shopify Admin API and Amazon SP-API both support reading and writing inventory (see Shopify API app development for the Shopify side). The difficulty is reconciliation logic. When a sale happens on Shopify and Amazon within the same second, which count is correct? Neither: both are stale. The sync needs a source of truth, a single system holding the canonical count, and both platforms reconciled against it.
The second complexity is fulfilment model diversity. FBA inventory lives in Amazon's warehouse and is managed by Amazon. FBM inventory lives in your warehouse. Shopify inventory can span multiple locations. A sync treating all inventory as a single pool will produce incorrect counts for sellers with mixed fulfilment.
Architecture of a reliable inventory sync
The architecture has three components: a change listener on each platform, a reconciliation engine, and a write-back mechanism. On Shopify, the listener uses webhooks (inventory_levels/update). On Amazon, it uses SP-API Notifications (LISTINGS_ITEM_STATUS_CHANGE) and the Inventory API. The reconciliation engine receives both streams, compares against the source of truth, calculates correct available quantity, and queues write-backs.
Write-back updates Shopify via the Admin API (inventorySetOnHandQuantities) and Amazon via the Listings API (putListingsItem) or Feeds API (JSON_LISTINGS_FEED for bulk). Rate limits matter: putListingsItem has burst 5, restore 3 per second, so 10,000 SKUs takes about an hour via individual calls. Feeds is faster for bulk but has higher latency. The inventory and order automation service handles both patterns.
Off-the-shelf tools and their limits
Sellbrite, Codisto and ByteStand are the most common sync tools. They work for single-location sellers with under 5,000 SKUs, simple fulfilment (all FBA or all FBM), and no business rules beyond 'sync quantity minus safety stock'. They break with multiple Shopify locations, mixed FBA and FBM, bundle SKUs where available quantity is calculated from components, or marketplace-specific pricing that affects stock visibility.
At 20,000 SKUs, monthly tool fees often exceed $500, making the payback on a custom build (starting at $4,000) under 18 months. The custom ecommerce tools team runs this analysis as part of every scoping call.
When to build custom
Build custom when you have mixed FBA and FBM needing different sync logic, multiple Shopify locations with Amazon seeing aggregated or location-specific inventory, bundle SKUs where available quantity depends on components, marketplace-specific safety stock, more than two sales channels, or business rules the tool cannot express (such as 'do not list on Amazon if margin falls below 15%'). The marketplace connectors service is the starting point for multi-channel sync. Shopify to Amazon starts at $4,000, multi-channel starts at $9,500. Full pricing on the Amazon SP-API development page.
Common failure modes
- Race condition on simultaneous sales. Mitigation: distributed lock or single-writer pattern where only the source of truth updates platform quantities.
- FBA inventory count drift. Amazon updates FBA on its own schedule. Mitigation: reconcile against Inventory API, not Orders API.
- Shopify webhook delivery failure. Shopify retries but can drop under load. Mitigation: supplement with periodic full sync every 4 to 6 hours.
- SP-API rate limit throttling during peaks. Mitigation: pre-sync 24 hours before the event and switch to Notifications during the peak.
- Return processing that adds stock on one platform but not the other. Mitigation: process returns through the source of truth.
- Bundle miscalculation. Mitigation: calculate bundle availability from minimum component availability in the reconciliation engine, not on either platform.
Implementation checklist
- Define the source of truth: your ERP, a dedicated inventory system, or a purpose-built middleware database.
- Map every SKU to its fulfilment type (FBA, FBM, Shopify-only) and location(s).
- Set up Shopify webhooks for inventory_levels/update and orders/create.
- Set up SP-API Notifications for ORDER_CHANGE and LISTINGS_ITEM_STATUS_CHANGE.
- Build the reconciliation engine with conflict resolution rules.
- Build write-back with retry logic and dead-letter handling for both Shopify and SP-API.
- Add periodic full sync every 4 to 6 hours as safety net.
- Monitor with alerts on sync lag, failed write-backs and discrepancy above threshold.
Safety stock and channel-specific buffers
Safety stock is the quantity you hold back from sale to absorb demand variability. For single-channel sellers, safety stock is straightforward: hold back 10% or a fixed number of units. For multi-channel sellers, safety stock becomes channel-specific because the cost of overselling differs by channel. An Amazon oversell triggers a listing suppression that damages search rank. A Shopify oversell triggers a cancellation email and a refund. The business impact differs, so the buffer should differ. The reconciliation engine needs to apply channel-specific safety stock rules when calculating available quantity, and those rules should be configurable per SKU and per channel rather than hardcoded.
Handling returns in the sync layer
Returns add inventory back into the pool, but not immediately and not always to the same channel. An Amazon return processed through FBA goes back into FBA stock automatically, but the reconciliation engine needs to detect the change and update available quantity on Shopify. A Shopify return processed through your warehouse needs to update the source of truth and propagate to Amazon. The sync must distinguish between restockable returns (quantity increases) and non-restockable returns (quantity stays the same, item marked as damaged or unsellable). Without this distinction, returned inventory inflates available quantity and causes overselling of damaged units.
Multi-channel extension
If you sell on eBay, Walmart or your own D2C site alongside Shopify and Amazon, the sync layer needs to scale to handle all channels against the same source of truth. The reconciliation engine stays the same but adds listeners and write-back modules for each channel. The eBay fulfillment connector article covers the eBay side. The building custom inventory management systems article covers the broader architecture for inventory systems that span multiple marketplaces.
Frequently Asked Questions
How does Shopify to Amazon inventory sync work?
A middleware layer listens for changes on both platforms via webhooks and Notifications, reconciles against a source of truth, and writes correct quantities back.
What tools sync Shopify and Amazon?
Sellbrite, Codisto, ByteStand. They work under 5,000 SKUs with simple fulfilment. Custom needed for mixed FBA/FBM, multiple locations or bundles.
When should I build custom?
Mixed FBA and FBM, multiple Shopify locations, bundle SKUs, marketplace-specific safety stock, 3+ channels, or business rules the tool cannot express.
How much does custom sync cost?
Shopify to Amazon from $4,000 (4 to 6 weeks). Multi-channel from $9,500 (8 to 12 weeks).
How fast is the sync?
Near real-time with webhooks and Notifications. Full sync every 4 to 6 hours as safety net.
What if both platforms sell at the same time?
The reconciliation engine resolves via the source of truth. Neither platform count is trusted individually.
Can it handle FBA and FBM?
Yes. Custom sync treats them as separate pools with different sources and update cadences.
Does it work with multiple Shopify locations?
Yes. The engine can aggregate or show location-specific availability depending on fulfilment rules.