Back to Resources
Technical14 min read

How to Sync Shopify and Amazon Inventory in Real Time (Without Overselling)

A
Alex RiveraFeb 20, 2026
Shopify and Amazon inventory synchronization dashboard showing real-time stock levels

You sold the same product twice. One order came through Shopify. The other came through Amazon 11 seconds later. Your system showed 1 unit in stock for both channels at the moment both customers clicked "Buy." Now you have two confirmed orders, one unit of inventory, and a decision to make: who gets the product, and who gets the apology email?

This is not a hypothetical. It is the single most common operational failure for brands selling on both Shopify and Amazon. And it happens because inventory sync between these two platforms is harder than it looks.

Why Shopify and Amazon Inventory Goes Out of Sync

Before you can fix the problem, you need to understand why it exists. Shopify and Amazon were not built to talk to each other. They are independent platforms with fundamentally different inventory architectures.

Batch Processing Delays

Most sync tools (including Amazon's own bulk upload feeds) operate on a batch schedule. They collect changes over a period of time, typically 5-15 minutes, then push updates in bulk. During that 5-15 minute window, your inventory data is stale. If you sell a fast-moving SKU on Shopify at minute 1, Amazon still shows the old quantity until minute 15. That is 14 minutes of overselling risk on every single sale.

For a brand doing 200+ orders per day across both channels, batch processing creates dozens of sync gaps daily. Each gap is a potential oversell.

Different Inventory Models

Shopify uses "stock locations." You have Location A (your warehouse) with 50 units, Location B (your 3PL) with 30 units. Shopify sums these for the storefront.

Amazon uses a completely different model depending on your fulfillment method:

  • FBA (Fulfilled by Amazon): Amazon controls the inventory. Units are physically in Amazon's warehouses. They report "Available," "Inbound," "Reserved," and "Unfulfillable" quantities separately. Your system needs to know which number to use.
  • FBM (Fulfilled by Merchant): You tell Amazon how much stock you have. Amazon trusts your number. If your number is wrong, you oversell.
  • Multi-Channel Fulfillment (MCF): Amazon fulfills orders from other channels using FBA inventory. This further complicates which pool of inventory is "available" for Shopify orders.

Mapping between Shopify's location-based model and Amazon's fulfillment-based model is where most sync tools break.

Bundle and Variant SKU Mismatches

You sell a "Starter Kit" on Shopify that contains Product A + Product B + Product C. On Amazon, you sell each product individually. When someone buys the Starter Kit on Shopify, your system needs to decrement Product A, B, and C quantities on Amazon. If your sync tool treats the bundle as a single SKU (not a composite), Amazon's individual product quantities do not update. You just created three phantom units across three ASINs.

The reverse is equally problematic. Someone buys Product A on Amazon. Your bundle "Starter Kit" on Shopify still shows in stock, but you no longer have enough Product A to fulfill it. That is an oversell waiting to happen.

Returns Not Restocking Properly

A customer returns a product on Amazon. Amazon receives it and marks it as "Sellable" in FBA. But does your sync tool pick up that restock event and increment the quantity on Shopify? Many do not. The result: you have inventory sitting in Amazon's warehouse that Shopify does not know about. You are not overselling but you are underselling, which means lost revenue from artificially low stock counts.

On the flip side, if a return is marked "Sellable" on Amazon but the item is actually damaged, your sync tool might add it back to Shopify as available stock. Now you are selling a defective product.

Flash Sale Race Conditions

During a flash sale or viral traffic spike, orders can arrive faster than your sync can process them. If your sync cycle takes 30 seconds and you receive 50 orders in that 30-second window, every order after the first one is making a purchase decision based on outdated inventory data. At high velocity, even "fast" sync is not fast enough without proper architectural safeguards.

Real-Time Sync vs Scheduled Sync: Why It Matters

The difference between real-time sync and scheduled sync is not just a technical detail. It is the difference between operational reliability and chronic overselling.

Scheduled Sync (Batch/Polling)

  • How it works: Your system checks Shopify and Amazon on a timer (every 5, 15, or 60 minutes). It compares quantities, calculates differences, and pushes updates.
  • Latency: 5-60 minutes depending on configuration.
  • Failure mode: Every minute of latency is an overselling window. At 100 orders/day, a 15-minute sync cycle creates roughly 1-2 overselling events per week. At 500 orders/day, that number jumps to 5-10 per week.
  • API cost: Constant polling burns through API rate limits. Amazon's Selling Partner API allows roughly 30 requests per second for inventory endpoints. Shopify's REST API allows 40 requests per second at standard plans. Aggressive polling eats into these budgets fast.

Real-Time Sync (Event-Driven)

  • How it works: When a sale occurs on any channel, the event triggers an immediate inventory update to all connected channels. No waiting. No polling. The sale IS the trigger.
  • Latency: Sub-second to 30 seconds depending on implementation.
  • Failure mode: Race conditions during extreme spikes. Mitigated with inventory buffers and atomic operations.
  • API cost: Event-driven updates only fire when something changes. No wasted API calls polling for "no changes."

The Flash Sale Problem (Illustrated)

You have 20 units left. You run a flash sale on Shopify. In the first 60 seconds, 18 orders come in on Shopify and 5 orders come in on Amazon.

With 15-minute batch sync: Amazon still shows 20 units available for the entire first 15 minutes. The 5 Amazon orders all succeed. Total orders: 23. Available inventory: 20. You oversold 3 units.

With real-time sync: After the first Shopify order, Amazon's quantity updates within seconds to 19. After the second, 18. By the time Amazon gets its 5 orders, the available quantity has already decremented from Shopify sales. The 3rd Amazon order is either blocked (if quantity hit 0) or fulfilled from a buffer. Zero overselling.

The math is simple: faster sync equals fewer oversells. And fewer oversells equals fewer refunds, fewer angry customers, and fewer marketplace suspension risks.

Step-by-Step: Setting Up Real-Time Shopify-Amazon Inventory Sync

Whether you use a dedicated OMS or build custom integrations, the setup process follows the same fundamental steps.

Step 1: Audit Your SKU Architecture

Before connecting anything, map every product across both platforms. Create a master spreadsheet or database with:

  • Your internal SKU (the canonical identifier)
  • Shopify Variant ID
  • Amazon ASIN + Seller SKU (MSKU)
  • Whether the product is fulfilled via FBA, FBM, or both
  • Whether the SKU is part of a bundle or kit on either platform

If your internal SKU naming is inconsistent (e.g., "BLU-TSHIRT-L" on Shopify and "BLUE-T-SHIRT-LARGE" on Amazon), normalize them now. SKU mapping errors cause more sync failures than any API issue.

Step 2: Choose Your Sync Method

You have three options:

  • Native integrations (apps/plugins): Shopify apps that connect to Amazon. Easy to set up. Limited control. Usually batch-based. Fine for low-volume sellers (<50 orders/day).
  • Middleware/iPaaS (Celigo, MakeMy, etc.): More flexible. Can build custom logic. Still limited by the middleware's update frequency and error handling.
  • Dedicated OMS with built-in sync: Purpose-built for multichannel inventory. Handles edge cases (bundles, FBA, returns) natively. Best option for brands doing 100+ orders/day across channels.

For most growing brands, a dedicated multi-channel sync solution is the right answer because the edge cases are where the money is lost.

Step 3: Configure Safety Buffers

Even with real-time sync, you should never expose 100% of your inventory to every channel simultaneously. Safety buffers protect against the sync gaps that will inevitably occur during API outages, rate limit throttling, or platform maintenance windows.

  • Amazon (FBM): Hold back 5-10% as a buffer. If you have 100 units, tell Amazon you have 90-95. The penalty for overselling on Amazon (potential suspension) is severe enough to justify the buffer.
  • Shopify (DTC): You own the customer relationship. You can be more aggressive. Show 100% of available inventory but keep a global "safety net" of 2-3 units per high-velocity SKU.
  • Flash sale mode: If you know a spike is coming (product launch, influencer post, email blast), increase buffers to 15-20% temporarily.

With Nventory's inventory management, buffer rules are configurable per channel, per SKU, and per time period. You set the rules once and the system enforces them automatically.

Step 4: Set Up Bundle and Kit Rules

This is where most sync tools fail. Your system needs to understand that selling Bundle ABC decrements the individual quantities for Products A, B, and C across all channels. And vice versa: selling Product A individually must reduce the available quantity for any bundle that contains it.

Define these relationships explicitly:

  • Bundle "Starter Kit" = 1x Product A + 1x Product B + 2x Product C
  • When Starter Kit sells: decrement A by 1, B by 1, C by 2 on all channels
  • When Product C sells individually: recalculate max available Starter Kits (limited by the component with the lowest quantity)

If your sync tool does not support composite/bundle logic natively, you will need to build it yourself or switch to one that does.

Step 5: Test with Shadow Mode

Do not go live immediately. Run your new sync in "shadow mode" for 7-14 days. In shadow mode, the sync calculates what it would push to each channel but does not actually update live inventory. Instead, it logs the intended changes alongside what actually happened.

Compare the shadow logs to reality daily. Look for:

  • Quantities that would have gone negative (overselling events)
  • SKUs where the sync's calculation differs from the actual channel quantity by more than 2 units
  • Bundles where component quantities did not decrement correctly
  • FBA returns that were or were not picked up by the sync

Fix every discrepancy before going live. The cost of a 2-week delay is nothing compared to the cost of a botched sync launch that oversells 50 units on Amazon.

Step 6: Monitor with Real-Time Dashboards

Once live, you need visibility into sync health. The key metrics to watch:

  • Sync latency: How many seconds between a sale event and the corresponding inventory update on other channels? Target: under 30 seconds.
  • Sync accuracy: What percentage of sync events resulted in the correct quantity on all channels? Target: above 99.5%.
  • Error rate: How many sync events failed (API errors, timeouts, mapping failures) per hour? Target: under 0.1%.
  • Overselling events: How many orders were placed for products with zero or negative available inventory? Target: zero.

Common Sync Failures and How to Fix Them

Even a well-configured sync will encounter failures. Here are the most common ones and their fixes.

API Rate Limits

Problem: Amazon's Selling Partner API limits inventory update calls to roughly 30 requests per second. Shopify's Admin API allows 40 requests per second (varies by plan). During peak periods, your sync might need to push more updates than the API allows.

Fix: Implement a queue with exponential backoff. When a rate limit error (HTTP 429) is received, the system waits 1 second, then retries. If it fails again, wait 2 seconds. Then 4. This prevents the "thundering herd" problem where a rate-limited system keeps hammering the API and makes the congestion worse. Prioritize inventory updates for high-velocity SKUs over slow movers.

Webhook Delivery Failures

Problem: Shopify sends a webhook when an order is placed. But webhooks can fail silently. If your server is temporarily down, or the webhook times out (Shopify gives you 5 seconds to respond), the event is lost. Shopify retries webhooks up to 19 times over 48 hours, but if your endpoint is misconfigured, all 19 attempts fail.

Fix: Never rely solely on webhooks. Implement a "reconciliation poll" that runs every 5-10 minutes to catch any events that webhooks missed. Think of it as a safety net behind your primary event-driven sync. Nventory's sync architecture uses this dual approach: event-driven for speed, polling for reliability.

FBA Inventory Discrepancies

Problem: Amazon's FBA inventory numbers can be confusing. The "Available" quantity in your Seller Central might not match what the API returns. Why? Because Amazon separately tracks "Inbound" (on the way to their warehouse), "Reserved" (allocated to a customer order but not yet shipped), "Unfulfillable" (damaged or customer returns awaiting inspection), and "Researching" (Amazon is investigating a discrepancy).

Fix: Only sync the "Fulfillable" quantity from the FBA Inventory API, not "Total." Do not count "Inbound" as available. Do not count "Reserved" as available. Build a separate report that tracks these other buckets so you understand the full picture, but keep your sync clean.

SKU Mapping Errors

Problem: A new variant is added to Shopify but no corresponding MSKU exists on Amazon. The sync either fails silently (does nothing) or maps to the wrong product. Either way, inventory is wrong.

Fix: Implement a "mapping validation" check that runs before every sync cycle. Any unmapped SKU should trigger an alert, not a silent skip. Auto-mapping based on UPC/EAN codes can catch most new variants if both platforms carry the barcode data.

Troubleshooting Checklist

When sync goes wrong, run through this diagnostic:

  • Are all SKUs mapped correctly between Shopify and Amazon? Check for recent additions or variant changes.
  • Is the sync tool's API connection authenticated and active? Tokens expire.
  • Is the sync processing events in order? Out-of-sequence updates can cause quantities to jump erratically.
  • Are FBA inventory numbers using the correct field ("Fulfillable" not "Total")?
  • Are bundle/kit relationships defined and calculating correctly?
  • Is the error log showing repeated failures for specific SKUs? These are usually mapping or data issues.
  • Did Amazon or Shopify have a recent API change or maintenance window? Check their status pages.

How Nventory Handles Shopify-Amazon Sync

Nventory is built from the ground up for multichannel inventory sync. Here is how it addresses the specific challenges outlined in this guide.

Event-Driven Architecture

Nventory does not poll on a timer. It listens for events: a sale on Shopify, an FBA shipment confirmation, a return processed on Amazon. Each event triggers an immediate inventory recalculation and push to all connected channels. The result is sub-second sync latency in normal conditions and under 30 seconds even during peak traffic spikes.

Auto SKU Mapping

When you connect Shopify and Amazon, Nventory's sync engine automatically maps products based on SKU, UPC, EAN, and product title matching. Ambiguous matches are flagged for manual review rather than guessed at. New variants added to either platform trigger a mapping alert so no product falls through the cracks.

Buffer Management

Safety buffers are configurable per channel, per SKU category, and per time window. You can set a standard 5% buffer for Amazon, increase it to 15% during planned promotions, and set channel-specific allocations for products with limited inventory. The inventory management module enforces these rules automatically across every sync event.

Sync Latency Dashboard

Nventory provides real-time visibility into sync performance: latency per channel, error rates, failed events, and retry status. If sync latency exceeds your threshold or an API connection drops, the system alerts you immediately so you can intervene before overselling occurs.

Sync Is Not a Feature. It Is the Foundation.

Inventory sync between Shopify and Amazon is not something you "set up once and forget." It is a living system that requires the right architecture, the right safeguards, and ongoing monitoring. The brands that treat sync as an afterthought are the ones writing apology emails and fighting marketplace suspensions.

Start with a clean SKU architecture. Choose an event-driven sync method. Configure safety buffers that match your risk tolerance per channel. Test thoroughly before going live. And monitor continuously once you do.

If you are ready to stop overselling and start scaling across Shopify and Amazon with confidence, explore how Nventory's multichannel platform handles the complexity so you do not have to.

Frequently Asked Questions

Yes, but not natively. You need a multichannel inventory sync tool that connects both platforms via their APIs. Real-time event-driven sync is essential to prevent overselling during high-velocity sales periods.

Event-driven real-time sync with a reconciliation safety net. The sync tool should support automatic SKU mapping, FBA inventory integration, bundle/kit deductions, and per-channel safety buffers.

Three strategies: use real-time event-driven sync (not batch polling), implement per-channel inventory buffers (show 90% of actual stock on marketplaces), and configure bundle/kit inventory to cascade deductions to components.

Shopify Marketplace Connect has limited FBA support. For robust FBA inventory sync including multi-location FBA tracking and reserved inventory handling, a dedicated multichannel OMS provides more reliable integration.