Guides

Wholesale and retail stores, selling the same shelf

A separate wholesale store is the standard Shopify pattern off Plus. It works until both stores sell the same stock and a pallet-sized B2B order lands.

Wholesale beside retail is one of the most common reasons a second Shopify store exists, and one of the best ones: B2B wants different prices, minimums, terms and a login, and off Plus that genuinely takes a second store. This guide is about the part that comes after that decision — both stores selling from the same shelf, at very different order sizes, without retail becoming a rumour.

First, the fork in the road, honestly.

One store or two: the wholesale fork

On Shopify Plus, B2B lives inside the retail store. Company profiles, buyer-specific catalogues and price lists, net terms — and one inventory, shared automatically, no sync at all. If you are on Plus or close to justifying it, that is the answer, and the expansion-store guide covers the cases where a separate B2B store still wins (separate entity, separate warehouse, barely-overlapping catalogue).

Off Plus, the two-store pattern is legitimate: a password-protected wholesale store, wholesale pricing on the same SKUs, B2B apps for terms and volume rules. Cheaper than Plus, standard, and it commits you to the two problems below.

Problem one: prices must differ, forever

The whole point of the wholesale store is a different price on the same product — which makes it the pattern most damaged by careless product sync. A tool that mirrors “products” between the stores, price included, will at some point reset wholesale prices to retail on an ordinary update. If any product-field sync runs between these stores, price exclusion is not optional; the field-ownership table is the general version.

Quantities are the opposite: they are the one field that must never differ, because the shelf does not care who is buying from it.

Problem two: the pallet-sized order

Wholesale changes the scale of inventory movement, and scale changes what sync quality means. Retail moves stock in ones and twos; a stockist moves it in cartons. When a 300-unit order lands in the wholesale store:

  • The retail store is now overstated by 300, on possibly dozens of SKUs at once, until the pick is recorded in the source. The order-to-pick gap is an overselling window sized by your warehouse routine — which for pallet orders makes “record it when you pull it” a revenue rule rather than bookkeeping.
  • A destination order does not write the source — know this before it surprises you. On a one-way mirror, the wholesale storefront decrements its own count at checkout (Shopify does that natively), but nothing carries the sale back: the source still shows the old number until the warehouse records the pick. Worse, an unrelated source-side change inside that gap pushes the old total back into the wholesale store, briefly resurrecting the sold units. This is a structural property of one-way sync, not a bug in any one tool. The fix is operational: treat the source as the warehouse ledger, record large picks there promptly, and the gap lives for minutes rather than days. The blunt rule from the operating routine holds: the store connected to the warehouse owns the number, and every order — either store’s — reaches it through fulfilment.
  • Backorders and pre-sells need policy, not sync. Many wholesale relationships happily sell what is arriving next month. Do that with deliberate purchase-order workflow in the wholesale store — not by letting “continue selling when out of stock” stay on, which disarms the mirror’s protection one product at a time.

The setup, concretely

  1. Retail store is the source (assuming its admin runs the warehouse). Wholesale joins as a connected store, in preview mode first.
  2. The wholesale catalogue is a subset — only the SKUs you sell B2B. Unmatched retail-only SKUs simply do not sync, which is the correct behaviour and why the unmatched list should be reviewed, not ignored.
  3. Same SKUs, different prices. SKU discipline matters double here, because wholesale relists and case-pack variants are classic duplicate-SKU factories. A case of 12 is its own SKU, not the unit SKU with a quantity note.
  4. No restock on wholesale refunds; no continue-selling in the wholesale store. B2B returns go through the warehouse and get recorded in the source, like everything physical.
  5. Drift check before invoicing runs. B2B orders are big enough that one drifted SKU is a real dispute with a real business, not an apology email.

Where StockUnison sits

StockUnison fits the shape this page describes: retail as the one source, the wholesale store following it within seconds of each source-side change. The pallet-order gap above is closed by warehouse discipline whichever tool you run — StockUnison’s contribution is that the difference report makes an unrecorded pick visible as a per-SKU gap rather than a surprise, and that a recorded pick reaches every store in seconds. Matching is by SKU with duplicates refused, the wholesale store’s different prices are never touched because StockUnison syncs quantities only, and the difference report is the pre-invoicing check from step five. Pricing is per live destination — a wholesale store beside retail is the $19 tier.

What it does not do: allocation. If you need hard ring-fencing — wholesale sells from its own reserved pot — that is Plus B2B with location rules or a deliberate split of physical stock, not a mirror, and pretending otherwise would sell you the wrong tool.

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