StockUnison setup and help

StockUnison keeps stock counts in sync wherever you sell the same item: one store in charge and the others copying it, or every product with the same SKU sharing one stock.

Updated 12 November 2026 · questions this doesn't answer → support@stockunison.com · background reading → guides

Two ways to share stock, and which is yours

The first page of the app asks one question: when the other store sells one, should this store's count go down too?

Not sure? If a sale in any store should lower the stock everywhere, share one stock. If only one store's stock should count, put that store in charge. Nothing changes until you go live, whichever you pick.

One store in charge: how it works

One store is the main store. Its stock counts are the ones everybody follows. Every other store is a connected store, and gets updated to match.

Stock moves one way only, from the main store to the connected stores. StockUnison never changes the main store's stock, so no loop is possible, and editing a count in a connected store never changes the main store.

Nothing changes in your stores until you say so. Every new connection starts in preview mode, where changes are calculated and logged but no stock moves.

Setting up two stores

Set the main store up first.

1. Put the main store in charge

Open StockUnison in that store's admin and press Put this store in charge. Pick the location whose counts should be copied. If the store has one location, it's chosen for you.

2. Carry the code to the other store

The main store's home page then shows a numbered guide with a six-character code. There are two ways to use it:

Codes last seven days and can be regenerated at any time from Settings. Regenerating stops the old code working immediately; stores that have already joined keep syncing.

3. Match, check, go live

StockUnison matches products by SKU as soon as the store connects, then checks their counts. The guide shows the list; look it over, then go live. Nothing changes in the connected store until that last step.

Matching products by SKU

A SKU is the identifier on a product variant — the "SKU (Stock Keeping Unit)" field on Shopify's product page. StockUnison matches products across stores by it. Capitals and stray spaces don't matter: abc-1 and ABC-1  count as the same SKU.

The list is built when a store connects, and built again a few minutes after a product is added, edited or deleted in either store — only changes to which products carry which SKUs count, so orders don't set it off. Match now, beside when products were last matched on the SKUs page, does it straight away. Matching is free and never changes anything in either store.

Matched
Found in both stores, so it can be synced. These are the only products that ever move.
Duplicate in main store / Duplicate in connected store
Two or more variants share this SKU, so there is no way to tell which one is meant. These are never synced, deliberately — guessing is how other tools overwrite the wrong product. Fix the duplicate in Shopify, and it's matched again within a few minutes.
Missing in connected store
The main store has this SKU and the connected store doesn't. Add it in the connected store if it should sync, or ignore it.
Missing in main store
The connected store has this SKU and the main store doesn't, so StockUnison isn't managing it. Usually fine — it just means that product isn't part of the sync.
Left out
You chose not to sync this SKU, so StockUnison never changes its count. See choosing which products sync.

Variants with no SKU at all can't be matched. The SKUs page counts them in its Variants with no SKU card, says which store they're in, and See which names some from each store, so a catalogue with thousands of blanks tells you the number rather than listing every title. Only variants that track stock are counted, so a gift card or a service that doesn't track stock never shows up there: it has nothing to sync.

If the list has more duplicates than you expected, the guide on duplicate SKUs covers where they come from and how to find them all in a product export.

Choosing which products sync

Every matched SKU syncs unless you leave it out. Leaving a SKU out changes nothing in either store: StockUnison stops changing its count in the connected store, and whatever is there stays. Each connected store has its own choice, and it can be changed from either store.

Left-out SKUs are on the Left out tab. A SKU you left out yourself has Sync again, and Sync these N again brings them all back at once; a SKU outside your rule comes back when you change the rule. A SKU that syncs again is checked for differences straight away.

Left-out SKUs don't count toward your plan and are never counted as differences. Bringing SKUs back on a live connection is checked against the plan the same way going live is. Settings → Which products sync shows each connected store's choice.

Preview mode, live and paused

Every connection is in exactly one of three modes, and you can change it at any time from either store.

ModeWhat happens
PreviewChanges are worked out and recorded in the activity log, but the connected store's stock is never touched. This is where every connection starts.
LiveStock changes in the main store reach the connected store within seconds.
PausedNothing syncs. Changes in the main store are logged as skipped and not made.

Going live doesn't change counts that already differ. From then on, each change in the main store reaches the connected store within seconds — but anything that changed while the connection was paused or in preview mode stays as it is. The SKUs page lists them — counts are checked after every match and once a day while live — and Fix N differences there brings them back in line. The main store can also choose Fix differences from a connected store's ⋯ menu on its Home. The result is reported on screen, and each update appears in the activity log.

Pausing loses nothing permanently. Matches, history and the connection are all kept. Resuming sends changes from then on; fix whatever changed while paused from the SKUs page.

Checking the counts still agree

A difference is when a connected store's count no longer matches the main store's. StockUnison compares every matched SKU across both stores after each match, and once a day while the connection is live. Check now, beside when they were last checked on the SKUs page, compares them straight away.

If anything differs, the page lists each SKU with its main store count, its connected store count, and the difference — a positive number means the connected store is holding more than the main store says it should. Fix N differences pushes the main store's counts across and settles it. That button changes stock, so it only works while the connection is live.

A difference is only ever known as of the moment it was measured, so the app always shows the age of the last check — "In sync · 2 h ago". A fresh all-clear and a week-old one look different on purpose.

Where differences come from

Shared stock: how it works

Press Share this store's stock on the first page, in the store that holds the stock. StockUnison then reads every product and finds the SKUs that are on more than one product. Every product with the same SKU shows the same count, and when stock changes on one of them — a sale, a restock or an edit — the others change with it within seconds.

The SKUs page says what can't be shared, and in which store. Variants with no SKU have nothing to share by: See which names some from each store, each linked to its page in that store's admin. Variants with no count to keep in sync don't track stock, or hold none at the location their store shares from.

Shared stock is right only if these products really sell from one stock. If each store keeps its own stock, don't share — put one store in charge instead.

Setting up shared stock

Start in the store that holds the stock. If you only have one store, that is the whole setup — steps 1, 3 and 4.

1. Turn on sharing

Open StockUnison in that store's admin and press Share this store's stock. Pick the locations whose stock is shared — one, or several, each keeping its own shared count. If the store has one location, it's chosen for you. You can add or stop a location later in Settings → Shared locations.

2. Add your other stores — optional

Skip this if you are sharing stock inside one store. Otherwise each other store installs StockUnison and joins with your code, exactly as a connected store does: the same six-character code, the same invite link, and the same choice of location on the way in. If you share from several locations, each other store then links one of its locations to each of yours in Settings → Shared locations; Home reminds it until it has.

3. Check your catalogue

Press Check my catalogue. StockUnison reads every product in every store sharing, and finds the SKUs that are on more than one product. Until you go live, a check changes nothing — run it as often as you like, at any catalogue size, on the free plan.

4. Review, then go live

The check shows every SKU it found on more than one product and the count each product currently holds, so you can see exactly what would change and by how much before anything moves. Going live sets the products of each SKU to their lowest count, and from then on, when stock changes on one of them, the others change with it.

Going live changes your stock and there is no undo, so the review step is the one worth taking slowly. You can download what every product held at the moment of a check, from the same page, and keep it.

Switching from another stock-sync app

If another app keeps your stores in sync today, leave it on while you look around: preview changes nothing in your products. The two can't run together once you go live, though — two apps updating the same products undo each other's changes — so switch in one sitting, ideally when your stores are quiet.

Why the counts look wrong in preview

In preview StockUnison counts every change on every product. When the other app copies one sale onto twelve products, that is twelve changes. When StockUnison notices this, Home says Another app is copying stock between these products and shows one example. It can't notice every copy — one store copying a sale onto a second product looks just like an order of both — so before you go live, Home also asks Does another app keep these products' stock in sync? The counts aren't meaningful until you switch, and none of your products change meanwhile.

The switch

  1. Answer "Yes, another app does" on Home, above Go live. If Home already says another app is copying, skip this.
  2. Turn the other app off in every store: pause or uninstall it.
  3. Tick "Your other sync app is off" and press Go live in the setup guide on Home. StockUnison reads every product again (about five minutes), takes the counts from your products — the other app kept them right — and goes live. If any product would change, it stops and shows you first.
  4. Place a test order. Buy one item in one store; within a minute every other product with its SKU shows one less.

Pause on Home undoes going live at any time. If the other app is still copying after you said it was off, Home says so and going live waits.

Reading the activity log

Every decision StockUnison makes is recorded, whether or not it changed anything, and every store involved sees the same log. Each row shows the SKU, what happened, the before and after counts, what triggered it, and when.

Updated
The store's stock was updated. The row shows the change, for example 24 → 30.
Preview
The change was calculated and recorded, but the store wasn't touched because the connection isn't live yet.
Skipped
Nothing needed doing, or nothing could be done. The reason is in the row: the counts already agreed, the SKU isn't matched, the main store doesn't track that item, or syncing is paused.
Failed
The update couldn't be saved. The row says why. Most failures retry themselves on the next stock change.

You can search by SKU and filter by result, by what triggered the change, and by date.

Catching a failure you didn't see

Everything above assumes you opened the app — and an update that failed is exactly the thing nobody thinks to go and look for. Two places show it, both free on every plan:

Between them they also catch the failure that has no row at all — a catalogue where nothing matches any more, after a CSV re-import or a migration recreated the products.

There is an email field in Settings → Alerts, and it doesn't send yet. StockUnison stores the address and does nothing further with it, so don't treat it as cover — the two checks above are what finds a broken sync today. Write to support@stockunison.com if you want telling when alerting ships.

Plans and who pays

Only the main store carries a subscription. Connected stores install free. (See the plans and prices.) Plans are limited by how many SKUs are kept in sync live, every store included — a SKU counts once however many stores carry it, and a connected store in preview mode or paused doesn't count at all — nor does a SKU you left out.

Shared stock works the same way: the store that started sharing carries the plan, the stores that joined are free, and the plan counts each SKU on two or more products once. A store sharing stock on its own has the One store plan, up to 10,000 SKUs.

PlanPriceSKUs kept in sync
Free$0Up to 50 — matching, preview mode, checks and the log work at any size
One store$9/moUp to 10,000 sharing stock in one store (50 across stores)
Starter$19/moUp to 2,500 (10,000 for one store sharing on its own)
Growth$29/moUp to 10,000
Pro$59/moUp to 100,000
Scale$99/moUp to 250,000

Every paid plan includes a 14-day free trial and can be paid yearly for the price of ten months. Change or cancel from Settings → Plan → Change plan in the main store, which opens Shopify's own billing page — StockUnison never sees or handles your card.

A catalogue that grows past its plan keeps syncing; the app asks you to move up the next time you go live, update or press Sync now. Moving to a smaller plan never breaks anything: the oldest live connections the new plan still covers stay live, any others drop to preview mode, and the app tells you which. Nothing is disconnected and no history is lost.

Pressing Go live on a connected store and getting refused? The plan lives on the main store, not this one. Its Settings page is where the plan is chosen.

Adding more stores

Use Add another store on the main store's home page. It hands you the same three things as the first time: a button that opens Shopify's store chooser, the code, and a shareable invite link. One code connects as many stores as you like, and it doesn't expire when a store uses it.

Each new store goes through the same steps on its own — join, match, then go live — and appears on the main store's home page with its own mode, match count and differences.

Setting this up for a client? Every paid plan is free to select on a development store — see the partner program.

Pausing, disconnecting, uninstalling

All of it keeps your history. Only the last one has to be set up again afterwards — uninstalling dissolves the connections, though reinstalling picks your history back up.

To have everything deleted rather than archived, email support@stockunison.com. Shopify also requires us to erase a store's data after uninstall, which happens automatically.

When something isn't working

I changed a quantity and the other store didn't move

Work down this list — it's ordered by how often each one is the answer:

  1. Is the connection live? Preview mode and paused both leave the connected store alone by design. The mode badge is at the top of the page.
  2. Was it the synced location? A connection syncs one location per store. A change at any other location is ignored.
  3. Is that SKU matched? Search for it on the SKUs page. Duplicates, one-sided SKUs and SKUs you left out are never synced.
  4. Does the main store have a plan? Going live needs one. Matching and preview mode don't.
  5. Check the activity log. If the change reached StockUnison at all there is a row for it, and the row says what happened.

Everything says "SKU not matched" and nothing syncs

This nearly always means the products were recreated since matching last ran — a CSV re-import, a bulk-edit app or a migration all do it. The stored matches point at products that no longer exist. StockUnison matches again a few minutes after products change, which relinks them, and Match now on the SKUs page does it straight away. The app watches for this and shows a warning when it sees a run of unmatched changes.

The counts don't agree

Open the SKUs page: the counts are checked after every match and once a day while live, and Check now, beside when they were last checked, checks them straight away. Then press Fix N differences to push the main store's counts across. If it keeps coming back, something is editing the connected store directly — another app, a POS, or a person.

I can't go live

Two things are checked, in that order. First, has anything matched? A connection with nothing matched has nothing to update, so going live is refused until matching finds at least one pair. Matching starts on its own when a store connects, so on a new connection this usually means it hasn't finished yet. If every matched SKU is left out, there is nothing to sync either: sync some again from the SKUs page. Second, the plan: going live needs the main store's plan to cover the SKUs it would then keep in sync — the refusal quotes both numbers. Either upgrade, or switch a store you don't need live to preview mode, which takes its SKUs off the count at no cost.

A product shows as a duplicate

Two variants in that store share one SKU. StockUnison won't guess between them, so it syncs neither. Give them distinct SKUs in Shopify, and they're matched again within a few minutes.

I need to change which location syncs

If the store shares stock with others, open Settings on that store and use Change location. Its products stop sharing stock, and a check of your catalogue starts straight away; when it finishes they share again from the new location. The move itself changes no stock, in either location.

On a one-store-in-charge connection the location is still fixed when a store joins. To change it there, disconnect that store and join it again with the location you want. The code is reusable.

A shared SKU says "Needs review"

The counts stopped adding up — usually a CSV import or another app rewriting stock — so StockUnison stopped updating that SKU rather than spread a wrong number. Each one says why on the SKUs page. Turn off whatever else is changing that stock, then, in the store that started sharing, use Start the numbers over in Settings: it rebuilds every shared count from what your products hold now and goes back to preview mode, so none of your products change until you go live again. A check can't clear it, because a check carries each shared count forward from the last one.

What it deliberately doesn't do

Still stuck? Email support@stockunison.com.