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 main store. 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 sale in the following store does not write back — 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 main store still shows the old number until the warehouse records the pick. Worse, an unrelated change in the main store 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 main store 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 one in charge (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 main store, like everything physical.
  5. Check the counts agree 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 store in charge, the wholesale store following it within seconds of each change there. 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 connected store — 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.

Common questions

Do I need Shopify Plus to sell wholesale?

No. Plus adds B2B inside one store — company profiles, price lists, net terms — which is the tidiest version. Off Plus, the standard pattern is a second, password-protected store with wholesale prices, wholesale minimums, and B2B apps for terms and ordering. It is a real second store, which is exactly why the inventory question follows it.

Should the wholesale store or the retail store be the source of truth?

The store whose admin runs the physical operation — receiving, stocktakes, the warehouse. For most brands that is the retail store, with wholesale as the store that follows it. The deciding question is not which store matters more, it is which store's numbers are already connected to the shelf.

Can I reserve stock for retail so wholesale cannot drain it?

Not with mirroring — a mirror shows both stores the same pool by design. Ring-fencing needs allocation: either Plus B2B inside one store with location-based rules, or accepting that the wholesale store's availability is managed by policy — minimums, quotas per buyer, or listing only the SKUs you are willing to sell through. An honest mirror plus policy beats a clever split that drifts.

What happens when a large wholesale order and retail sales collide?

With a shared pool, a 300-unit B2B order is 300 units retail can no longer sell — and on a one-way mirror, retail finds out when the warehouse records the pick in the main store, not when the order is placed. The wholesale storefront decrements its own count natively at checkout, but an order in a store that follows does not write back to the one in charge. The discipline that closes the window is operational: record large picks in the main store promptly, and the sync carries the drop to every store in seconds from there.

One item. One number.

StockUnison keeps one count wherever an item sells — across your Shopify stores, or across duplicate products in one. Matched by SKU, previewed before anything moves, and logged write by write.

Install on Shopify

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