Guides

Expansion stores and the shared-inventory problem

Shopify Plus expansion stores have separate inventory from your main store. Before you solve that, check whether you needed a second store at all — and if you did, here is how the stock stays in step.

No — Shopify expansion stores do not share inventory with your main store. Each expansion store is a separate Shopify store with its own products, orders and inventory records, and being inside the same Plus organisation does not join the stock. If both stores sell from the same physical shelf, keeping the counts in step is something you add.

That is the short answer. The longer one starts a step earlier, because a good share of expansion stores exist to solve problems Shopify closed inside a single store some time ago — and every second store you avoid is an inventory sync you never have to run, maintain or debug.

Do you actually need a second store?

This is not a rhetorical question. A large share of expansion stores exist to solve problems that Shopify solved inside a single store some time ago, and every second store you avoid is an inventory sync you never have to run, maintain or debug.

Selling internationally

Shopify Markets handles multiple currencies, country-specific domains, market-level pricing, duties and translations — all from one store, one catalogue, one set of inventory. If your reason for an expansion store is “we need a .de domain in euros”, Markets very likely covers it, and covers it with zero sync problem because there is only ever one quantity.

Selling wholesale

Shopify B2B runs inside the same store using company profiles, buyer-specific catalogues and price lists. Retail and wholesale draw down the same inventory automatically. A separate B2B store is worth it when wholesale is a different legal entity or ships from a different warehouse — not merely because the pricing differs.

The general rule: one store with many locations beats many stores whenever it is possible at all. Locations inside a store are consistent with each other by construction. Stores are consistent with each other only because something keeps making them so.

When is a separate store the right call?

Plenty of cases genuinely need one:

  • A separate legal entity — different company, tax registration, or payment processing that has to be cleanly split.
  • A different fulfilment operation — a regional warehouse or 3PL with its own processes, where blending the operations would be worse than syncing them.
  • A materially different catalogue or brand — where the overlap is a subset of SKUs rather than the whole range.
  • Partner- or franchise-operated storefronts — someone else runs the store day to day and should not have access to yours.
  • An acquired brand you are deliberately keeping separate.
  • Genuinely divergent theme or checkout requirements that cannot coexist in one store.

In all of these, the shared-inventory problem is real and unavoidable — because the stores are separate on purpose, but the shelf is not.

Why doesn’t the stock follow between stores?

An expansion store is a full Shopify store. Same architecture as any other: its own products with their own IDs, its own orders, its own inventory records per location. Belonging to the same Plus organisation gives you unified billing and administration; it does not give you a shared inventory pool.

So if your Berlin expansion store and your main store both sell an item that lives on one shelf in one warehouse, both stores are independently advertising and decrementing their own private count of it. They will diverge, and the divergence always sells you into trouble in the same direction.

How do you get two stores in step?

Decide which store owns the number

Before any tooling: pick the source of truth. Usually the store closest to the physical stock — the one your warehouse or 3PL already updates. Every other store follows it, and nobody edits stock anywhere else. One-way, one owner.

Two-way sync between expansion stores sounds appealing and is usually a mistake. The moment both sides can write, you need a rule for what happens when both change at once, and every such rule oversells in some scenario.

Get the SKUs identical first

Nothing can match products across stores by internal ID, because the IDs are per-store. Matching happens on SKU. Expansion stores are especially prone to SKU drift because they are usually created by duplicating a catalogue and then editing it — regional suffixes get appended, variants get renamed, and a year later the two catalogues no longer line up.

Export products from both stores and check for three things: SKUs present in one store only, blank SKUs, and — the one that actually causes damage — the same SKU on two different variants inside one store. That last case has no correct resolution and any tool that picks one will be silently wrong.

Choose the mechanism

ApproachFits whenCost
Scheduled CSVSlow-moving stock, small catalogue, tolerant of hours of driftManual forever; every import overwrites whatever moved since the export
Custom Admin API integrationRules no app models — region-specific allocation, partial poolsYou now own a piece of production infrastructure, including its silent failures
A sync appThe stores share one pool and you want it handledA monthly bill, and a dependency you should choose carefully

Allocate rather than mirror, if the pool is not really shared

Worth naming because it is common in expansion-store setups: sometimes the regional store should not see the full global quantity. If 300 units sit in the EU warehouse and 700 in the US, mirroring one number into both stores advertises stock that cannot ship to that customer in any reasonable time.

When that is your situation, the right model is Shopify locations plus per-market fulfilment rules inside one store — not two stores mirroring each other. Mirroring is correct when both stores draw from the same physical pool; it is wrong when they draw from different ones.

What should you check once it is running?

  • Change a quantity in the source store and confirm it lands in each expansion store.
  • Change one in an expansion store and confirm it is not pushed back — and that everyone on the team knows that edit will be overwritten.
  • Run a comparison across all stores on a schedule, not once at setup. Drift is a slow leak, and finding it needs an explicit check rather than a glance.
  • Confirm you get told when a write fails. Silent failure is the default state of every integration nobody is watching.
  • Re-check the SKU match report after any catalogue change in either store — that is when matching quietly breaks.

Where does StockUnison fit?

StockUnison is built for exactly the mirroring case: one main store’s quantities, one way, into as many other stores as you connect — matched by SKU, duplicates reported and never synced, preview mode before anything is written, and a difference report that compares every matched SKU across every connected store. Only the main store carries a subscription; destinations install free. Unlimited destinations is $79/month, which is the tier most multi-expansion-store setups land on.

It is the wrong tool if you need per-region allocation rather than mirroring, if you need products and prices copied as well as quantities, or if you need two-way sync.

Two stores. One truth.

StockUnison mirrors one store's stock into every other store you connect — matched by SKU, previewed in dry run, and logged write by write.

Install on Shopify

Free plan you can stay on · live syncing from $19/mo