Guides

One item, several products, one count

Shopify counts every product separately, so the same item listed twice is two stocks that drift apart the moment either one sells. How to make it one count.

Shopify’s inventory model has one assumption in it that catches people out: a product variant owns its stock. Not the SKU — the variant. The SKU is a text field you type in, it is not required to be unique, nothing validates it, and nothing in the admin treats two variants carrying the same one as related.

So the moment the same physical item exists as more than one product, you have more than one stock, and they start drifting apart with the first sale.

The four ways this happens

None of these are mistakes. They are all reasonable things to do, and Shopify offers no warning that any of them splits your stock.

  • Bundles and sets. A mug sold on its own, and the same mug inside a gift set. Ten mugs on the shelf; Shopify believes there are ten of each listing.
  • A duplicate made for a campaign. Someone duplicates a product for a sale, a landing page or a wholesale price, and it never gets merged back. Both stay live.
  • The same item under two names. “Navy wool scarf” in the main collection and “The Harbour scarf” in a curated one, because collections could not do what the merchandiser wanted.
  • A second store. The most visible version, and the one most apps are built for — but structurally identical to the three above.

The symptom is always the same, and it is always late: you sell the last one twice, and find out from the customer.

What doesn’t fix it

Variants. If the two listings are genuinely one listing, merging them into one product with variants is the correct answer and you should do that instead of installing anything. It stops being the answer the moment the two need to be separate — different titles, different collections, different pricing, a bundle that contains the item rather than being it.

Shopify’s own multi-location inventory. This tracks one item across many places, which is a different axis entirely. It will not help two products in one location.

A spreadsheet and a calendar reminder. It works until the day it matters, which is the day you are busy. Stock drifts on every sale, not on a schedule.

Setting one of them to “continue selling when out of stock”. This does not share anything. It hides the symptom by letting the oversell happen silently.

What does: one count for the whole group

The fix is to stop treating the SKU as a label and start treating it as the key it was always meant to be. Group every product carrying the same SKU, give the group one count, and have a sale on any of them lower all of them.

StockUnison’s shared stock does this. It reads your catalogue, finds every product with a matching SKU, and puts them in a group — inside one store, or across as many stores as join with your code. From then on the group holds one number and every product in it shows that number.

Four things about it are worth knowing before you turn it on.

  1. You see it first. The check reads your catalogue and shows exactly which products are grouped and what each one currently holds. Nothing is written until you go live.
  2. Going live sets each group to its lowest count. If the mug reads 10 on its own and 4 in the set, the group becomes 4. The reasoning is one-directional: showing more stock than you have is what causes overselling, so the safe move is always down.
  3. A SKU on one product is left alone. There is nothing to share, so no group forms and nothing is touched.
  4. It stops rather than guesses. If the numbers stop adding up — a CSV import, another app writing stock — the group pauses and asks you to look, instead of propagating a count it cannot explain.

Getting your SKUs right first

Shared stock is only as good as the SKUs, and this is the part worth doing carefully:

  • A SKU identifies a physical thing. If two products carry the same SKU but are not the same item on the shelf, grouping them is wrong and will cause the oversell rather than prevent it. Fix the SKU first.
  • Case and whitespace are normalised, so MUG-01 and mug-01 are the same SKU. This is deliberate — two spellings of one code were two groups, which is exactly the bug this feature exists to remove.
  • Products with no SKU are skipped entirely. They cannot be matched to anything, and guessing from titles is how stock reaches the wrong product.
  • If you have inherited a catalogue where the same code means different things in different places, sort that out before turning anything on. The duplicate SKU guide covers finding them.

When one store in charge is the better shape

Shared stock is symmetric — every product in the group is equal, and a sale anywhere moves all of them. That is right when they are genuinely one shelf.

It is the wrong shape when one store’s number is the real one and the others should merely reflect it: a supplier feeding resellers, or a retail store feeding a B2B store that should never write back. For that, put one store in charge instead, which copies one way and never lets a connected store change the main one.

The test is a single question. If a sale in any of these places should lower the stock in all of them, share one stock. If only one place’s count should count, put that one in charge.

What it costs

Checking is free and unlimited — install, let it read the catalogue, and look at what it found for as long as you like, at any catalogue size. Going live starts at $19/month, including the single-store case; the pricing page has the tiers, and only one store ever pays however many join.

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