Skip to content
stackworx

BLOGS · DETAILS

HowtosyncShopifyinventoryacrossmultiplestoresandwarehouses

Share this blog with your network

Diagram of one source of truth syncing SKU stock to two stores and a marketplace, fed by a warehouse and a supplier feed

If you sell the same products across more than one Shopify store, a marketplace, or several warehouses, overselling usually means your systems disagree about who owns the stock number. Inventory stays accurate when one system is the source of truth for each SKU at each location, every other channel receives changes from it, and a scheduled job checks that the channels still agree. A sync app can do this well for many businesses. Custom work becomes worth it when your SKUs, suppliers, or locations do not map cleanly onto how the app thinks.

This guide is for operators who already have the symptoms and want to understand the cause before choosing a fix.

Symptoms that point to a sync problem, not a people problem

  • An item shows in stock on one store and sold out on another for hours.
  • You cancel orders every week because a unit sold twice.
  • Staff keep a spreadsheet of "real" stock because nobody trusts Shopify.
  • Counts drift slowly, then someone runs a manual reset and it starts again.
  • Supplier stock files arrive, but nobody knows whether they were applied.
  • Bundles or kits sell while one component is out of stock.

Each of these costs money in cancellations, refunds, support time, and customer trust. The spreadsheet one is the most expensive in the long run, because it means your team has stopped believing the system and started working around it.

Why inventory drifts between stores and locations

No single owner for each number

The most common cause is two systems writing to the same quantity. A warehouse system updates Shopify, a sync app copies store A to store B, and a staff member adjusts store B by hand after a recount. Each write is reasonable on its own. Together they overwrite each other, and the last write wins regardless of whether it was correct.

SKUs that do not match

Sync tools usually match products by SKU or barcode. If store A uses TSHIRT-BLK-M and the supplier feed uses 10442-M-BK, something has to translate. When that mapping lives in someone's head or a stale spreadsheet, new products go unsynced and nobody notices until they oversell.

Events that arrive late, twice, or out of order

Most integrations react to Shopify webhooks. Shopify's own webhook guidance says delivery is not always guaranteed, duplicate deliveries can happen, and ordering is not guaranteed within a topic. An integration that assumes every event arrives exactly once, in order, will drift. The same guidance recommends periodic reconciliation for that reason.

Adjusting instead of setting, or setting instead of adjusting

There are two ways to change stock: "add 5" or "set to 42." Sending "add 5" twice after a retry doubles the change. Sending "set to 42" based on a count taken ten minutes ago erases sales made in between. Shopify's inventory mutations support a compare-and-swap check (changeFromQuantity) and idempotency keys for exactly this problem, according to the inventory quantities documentation. Many older integrations do not use either.

Confusing available with on hand

Shopify tracks several inventory states per location, including available, committed, reserved, damaged, safety stock, and quality control. On hand is the physical total. If your warehouse sends on-hand counts and your integration writes them into available, you will sell units already committed to open orders.

Your options, from simplest to most involved

ApproachWorks well whenWhere it struggles Shopify locations in one storeYou have one storefront and several warehouses or retail locationsMultiple storefronts, or stock held by suppliers you do not control Multi-store sync appStores share the same SKUs and one store can act as the sourceSKU translation, bundles, supplier feeds, custom allocation rules Inventory or order management systemYou need purchasing, receiving, and allocation in one toolCost, migration effort, and workflows the tool does not model Custom middlewareYou need your own rules: per-channel buffers, supplier feeds, kits, several storesRequires ownership, monitoring, and someone to maintain it

Start with the simplest option that fits. If one store with multiple locations covers your business, you do not need a sync layer at all. Adding one creates a new place for data to disagree.

A decision framework you can use this week

Answer these questions with your operations lead. The answers tell you which option you need.

  1. Where is the physical truth? Name the system that knows what is on the shelf for each location: Shopify, a WMS, a 3PL portal, or a supplier.
  2. Do SKUs match across every channel? If not, who owns the mapping, and where does it live?
  3. Do you sell stock you do not hold? Supplier or manufacturer-held stock needs a different freshness rule than stock in your own warehouse.
  4. Do you sell kits or bundles? A bundle's availability should come from its lowest component, which few apps handle across stores.
  5. Should every channel see the same number? Many businesses hold back a buffer for marketplaces or wholesale. That is an allocation rule, not a sync.
  6. How fast does it need to be? Fast-selling items on launch days need minutes. Slow movers can tolerate a daily reconciliation.

If your answers are "Shopify," "yes," "no," "no," "yes," and "a few minutes is fine," an off-the-shelf sync app is likely enough. Each different answer adds a rule that the app may not support.

If your answers are already pointing past what your current app can do, we can map it with you. Bring a list of your stores, warehouses, supplier feeds, and the last few oversell incidents to a Systems Discovery Call.

What a dependable sync looks like under the hood

When we build inventory middleware, the design choices below matter more than the language or hosting.

One owner per quantity

Every SKU and location pair has exactly one system allowed to write its quantity. Everything else reads. If staff need to recount, they recount in the owning system, not in a downstream store.

A mapping table, not scattered matching logic

A single table maps internal product codes to each store's variant IDs and each supplier's codes. New products are not live on a channel until they have a mapping. A report lists unmapped items daily, so gaps are visible instead of silent.

Idempotent, guarded writes

Every write carries an idempotency key so a retry cannot apply twice. Writes that set a quantity include the expected previous value, so a stale update fails loudly instead of overwriting newer sales.

Events plus reconciliation

Webhooks handle the fast path. A scheduled job compares every channel against the source of truth and corrects differences, logging each correction. If corrections spike, something upstream is broken, and the log shows where.

Monitoring that someone reads

Alerts go to a named person for failed writes, growing queues, unmapped SKUs, and supplier files that did not arrive on time. A sync that fails quietly for three days does more damage than one that fails loudly for three minutes.

Proof from a real build

For Midway Sports, we built an order and inventory management system covering more than 200,000 SKUs across multiple brands and suppliers. It organizes inventory by exact warehouse location, standardizes product codes to reduce listing errors, and supports manufacturer-direct shipments. For Maia, we built middleware that connects five ecommerce storefronts into a single source of truth for orders, inventory, and reporting. Both started with the same questions listed above: who owns each number, and how do codes map between systems.

Common mistakes when fixing inventory sync

  • Adding a second sync app to fix the first. Two tools writing the same quantities makes drift worse.
  • Treating a supplier feed as real time. A file sent at 6 a.m. is already stale by noon. Apply a buffer or mark those items as supplier-held.
  • Skipping the backfill. Before switching on any new sync, reconcile every SKU once and fix mismatches by hand. Otherwise you import the old errors.
  • No owner after launch. Stores add products, suppliers change formats, and APIs change versions. Sync needs maintenance.

Common questions

Can Shopify sync inventory between two stores on its own?

Separate Shopify stores do not share inventory by default. Within one store, multiple locations share a single product catalog, which is why consolidating stores or using locations is sometimes the simplest fix. Across stores, you need an app or custom integration.

How often should inventory sync?

Use events for near-real-time updates on items that sell quickly, and run a full reconciliation on a schedule, often nightly, to catch anything events missed. The right interval depends on sales velocity and how costly an oversell is for you.

Is custom inventory sync expensive to maintain?

Cost depends on the number of channels, the complexity of your rules, and how often suppliers change their formats. A narrow middleware service with good monitoring is usually modest to maintain. A sprawling one without monitoring is not. Ask any vendor how they will be alerted when something fails.

Next step

If overselling or stock drift is costing you orders, book a Systems Discovery Call. It is 45 minutes on how your operation works: your stores, warehouses, supplier feeds, and where counts go wrong. Bring a rough list of channels and locations and a few recent examples of mismatched stock. You leave with a clear picture of what to build, whether you hire us or not.

avatar

StackWorx team

Sep 2026