StockUnison setup and help
StockUnison keeps stock counts in step 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 11 September 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?
- One store is in charge. That store's stock is copied to your other stores. Sales in the other stores don't change it. Needs two or more stores. For example, a supplier's shop and the shops that resell its goods.
- Everything shares one stock. Every product with the same SKU shows the same count, and selling one anywhere lowers all of them. Works with one store or many. For example, one mug sold as ten different products.
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 writes back to the main store, so no loop is possible, and editing a count in a connected store never changes the main store.
- One main store can feed as many connected stores as you like. A connected store follows one main store at a time.
- A connection syncs one location per store. You choose the main store's location when you set it up, and each connected store's when it joins.
- Only available quantities change. Products, variants, prices and everything else in a connected store are never created, edited or deleted.
- Products are matched by SKU, so the same product needs the same SKU in both stores.
Nothing is written 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:
- You run both stores. Press Install on your other store. Shopify asks which store, installs StockUnison there if needed, and the code is copied to your clipboard on the way. In that store press Enter code, paste, and pick the location the counts should go into.
- Someone else runs the other store. Send them the invite link shown beside the code. It works whether or not they already have StockUnison, and it holds the code across the install, so nothing gets lost.
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
The guide walks the rest: match products by SKU, look at the list, 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.
Press Match products on the SKUs page to build the list. Run it again whenever you add products or fix a problem — it is free, repeatable, and never writes anything to 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 match again.
- 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.
Variants with no SKU at all can't be matched. Matching names them in a banner when it finds them, because they appear nowhere else in the list.
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.
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.
| Mode | What happens |
|---|---|
| Preview | Changes are calculated and written to the activity log, but the connected store's stock is never touched. This is where every connection starts. |
| Live | Stock changes in the main store reach the connected store within seconds. |
| Paused | Nothing syncs. Changes in the main store are logged as skipped and not made. |
Going live pushes every matched count once, first. That means anything that changed while the connection was paused or in preview mode is caught up at that moment — you don't have to hunt for what you missed. The result is reported on screen, and each write appears in the activity log.
Pausing loses nothing permanently. Matches, history and the connection are all kept, and resuming catches the connected store back up.
Checking the counts still agree
A difference is when a connected store's count no longer matches the main store's. Press Check for differences on the SKUs page to compare every matched SKU across both stores.
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 writes, 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
- Someone edited stock directly in the connected store.
- A change happened while the connection was paused or in preview mode. (Going live catches these up.)
- A write failed — the activity log will show it.
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 puts the ones with the same SKU into one group. Every product in a group shows the group's count, and selling one anywhere lowers all of them within seconds.
- One store or many. To share across stores, each other store installs StockUnison and joins with your code. A SKU on only one product has nothing to share and is left alone. There is a fuller guide to the one-store case.
- The check comes first. Nothing is written until you have seen exactly which products would change, and by how much. Going live sets every group to its lowest count, because showing more stock than you have is what causes overselling.
- One location per store. Stock is counted at the location you pick; your other locations are left alone.
- 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 check again, instead of spreading a wrong count.
- Any store can pause. Every store sharing the stock can pause from its dashboard. Counts stop moving; nothing is forgotten, and resuming catches up.
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 location the counts should be read from and written to. If the store has one location, it's chosen for you.
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.
3. Check your catalogue
Press Check my catalogue. StockUnison reads every product in every store sharing, and puts the ones carrying the same SKU into groups. Nothing is written by a check — run it as often as you like, at any catalogue size, on the free plan.
4. Review, then go live
The check shows every group it found 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 each group to its lowest count, and from then on selling any product in a group lowers them all.
Going live writes inventory 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.
Reading the activity log
Every decision StockUnison makes is recorded, whether or not it wrote 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.
Getting told when something breaks
Everything above assumes you opened the app. StockUnison can also email you when a stock update fails and a connected store's counts may be wrong — the one situation where not knowing costs you money.
Set an address in Settings → Alerts on the main store. It's empty by default, and while it's empty StockUnison never emails you at all. Use whichever address should actually get it; it doesn't have to be the one your Shopify account uses.
- At most one email a day per connected store. A store that's failing repeatedly would otherwise send one email per stock change, and an alert you learn to ignore is worse than no alert.
- Clearing the field turns them off. There's no separate setting to hunt for.
- Replies reach a person — they go to support@stockunison.com.
Alerts cover failed writes today. They don't yet cover differences, or the case where nothing is matching any more — for those, the check and the matched products list are still the place to look.
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 connected stores are live at once — a connected store in preview mode or paused doesn't count against the limit.
Shared stock works the same way: the store that started sharing carries the plan, the stores that joined are free, and the plan covers how many stores share with it. Sharing stock in one store on its own needs Starter.
| Plan | Price | Live connected stores |
|---|---|---|
| Free | $0 | None — matching, preview mode, checks and the log all still work |
| Starter | $19/mo | 1 |
| Growth | $39/mo | Up to 5 |
| Scale | $79/mo | Unlimited |
Every paid plan includes a 14-day free trial. 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.
Moving to a smaller plan never breaks anything: the oldest live connections stay live up to the new limit, any extras 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.
- Pause — stops updates immediately. Matches and history stay. Resuming catches the connected store up.
- Switch to preview mode — keeps calculating and logging without touching stock.
- Stop following (from the connected store) or Remove (from the main store) — ends the connection. The matched products and activity log are kept, and the store can join again later with your code.
- Stop being the main store — disconnects every store still following, and each of them is told. The code stops working and the store goes back to the first page.
- Stop sharing stock — for shared stock. Every product keeps the count it has now; nothing is rewritten and the history stays readable.
- Uninstall — from Shopify's Apps page. Connections are dissolved and the other store keeps its history readable. Reinstalling the main store picks up where it left off.
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:
- 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.
- Was it the synced location? A connection syncs one location per store. A change at any other location is ignored.
- Is that SKU matched? Search for it on the SKUs page. Duplicates and one-sided SKUs are never synced.
- Does the main store have a plan? Live writes need one. Matching and preview mode don't.
- 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. Match products again to relink them. The app watches for this and shows a warning when it sees a run of unmatched changes.
The counts don't agree
Press Check for differences, then 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 cannot write anything, so going live is refused until Match products finds at least one pair — this is the usual answer on a new connection. Second, the plan: going live needs a plan on the main store, and a plan slot free. If every live connected store your plan covers is in use, either upgrade or switch a store you don't need live to preview mode — that frees the slot 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 match again.
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 leave their groups until you check your catalogue again, then rejoin at the new location. No stock is changed by this, 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 group says "Needs review"
The counts stopped adding up — usually a CSV import or another app rewriting stock — so the group stopped rather than spread a wrong number. Press Check my catalogue again; the new check reads every product afresh and clears it.
What it deliberately doesn't do
- Only stock counts. Products, variants, titles, prices, images and orders are never created, changed or deleted.
- One way, when one store is in charge. Connected stores never write back to the main store, and never sync to each other.
- Never guesses. An ambiguous SKU is skipped and reported, not resolved by guesswork.
- One location per store.
- Catalogues up to 250,000 variants per store. Both shapes have been run on stores of 100,000.
- No bundles or kits, and no channels outside Shopify. If you need either, the category side by side says which apps do.
- No customer data. The app never requests or stores it. See the privacy policy.
Still stuck? Email support@stockunison.com.