Shoppers want to know which of your stores has an item before they commit to collecting it — and neither number Shopify puts in front of them answers that. The big “online” figure is a rollup of every fulfillment location. The “Pickup available” flag behind the availability link is a boolean that stays green for stock nobody can hand over today.
This guide covers what Shopify shows natively, why both defaults mislead, which number is the right one, and how to keep it honest.
What does Shopify show shoppers about per-store stock?
Out of the box, a Shopify product page shows one primary location’s availability and a “Check availability at other stores” link once pickup is enabled at more than one location. Click it and you get a list of locations with whether each has the item — documented in the Shopify Help Center.
For a single store, that is enough. For a shopper choosing between three shops, it has two problems: it is one click deep, and it is a yes/no. Nothing on that list says which shop actually has four of them.
Why the “online” inventory number misleads pickup shoppers
In Shopify, each location tracks its own stock for every variant. The “online” availability you see is the sum of every location you’ve flagged to fulfill online orders — a rollup, not a store-level number. The multi-location inventory docs describe how this works.
That distinction is the root of most multi-location pickup failures:
- A product can show “12 in stock” online while the store the shopper wants has zero — the 12 live at other locations.
- A pickup order placed against the rollup looks valid and goes through, then can’t be handed over at the chosen store.
- Staff field the “your site said it was in stock” complaint, and you eat a refund and a wasted trip.
For pickup, the rollup is a display total. It is never the number you make a collection promise against.
Rollup vs. per-store stock at a glance
| “Online” rollup | Per-store stock | |
|---|---|---|
| What it is | Sum of fulfillment-enabled locations | Count at one specific store |
| Good for | Showing a product is buyable somewhere | Deciding if a store can hand it over |
| Pickup risk | High — hides empty stores behind a big number | Low — shows the real shelf |
| Where it belongs | Product page total | Next to each store, in the picker |
The other misleading number: “Pickup available”
This one catches people who think they have already solved the problem. Shopify’s storefront availability flag — the one the native pickup widget renders — is a boolean, and it is deliberately generous. It can read available when:
- the item would have to be transferred in from another location first;
- the location doesn’t track inventory for that item;
- the last unit is already committed to somebody else’s order.
None of those mean a shopper can walk in this afternoon and leave with it. The flag answers “can this location be collected from, in principle” — a different question from the one the shopper is asking.
Which number is the right one
Shopify tracks several quantities per location. Three matter here:
| Quantity | What it means | Use it for pickup? |
|---|---|---|
| On hand | Everything physically at the location | No — it still counts units promised to other orders |
| Committed | Units already claimed by placed orders | Not shown directly; it is the deduction |
| Available | On hand − committed − reserved | Yes. This is what a shopper can actually take |
Available is the number to put next to a store name. It is the same figure your staff would arrive at if they walked the floor and set aside what is already spoken for. On-hand looks bigger and more reassuring, and it is exactly how you promise a unit that is already in a box with somebody else’s name on it.
Two switches every location has
A subtle Shopify detail trips up many setups: each location has two independent switches — whether it fulfills online orders, and whether it offers local pickup. They are not the same thing.
A fulfillment-only warehouse should usually have “offers pickup” off, so shoppers can’t select it for collection, while “fulfills online orders” stays on so its stock backs shipping. A retail store offering pickup needs both on. Get these wrong and warehouses appear as collection points, or a pickup store’s stock silently inflates the online rollup.
Set pickup deliberately, per location, before you worry about display.
How fresh does per-store stock need to be?
Freshness is the whole point of pickup. The dangerous window is between the moment a shopper decides and the moment they arrive, when a register sale, a restock, or another online order can change the shelf.
Accuracy is genuinely hard at scale: studies of grocery inventory have found up to 60% of inventory records can be inaccurate, which is why pickup needs a live read rather than a nightly export. With Shopify POS as the source of truth, an in-store sale decrements that location’s inventory within seconds. With an external POS or ERP pushing updates, your freshness is only as good as the push interval — and any lag is a window where two shoppers can claim the same unit.
On the storefront side, a short cache is normal and fine: a figure that is thirty seconds old is still a true answer to “does this shop have it”. A figure that is a day old is not, and it will read as a promise. The line to hold is that the display must never outrun the data behind it — if the live read fails, show nothing rather than a confident wrong “out of stock”, which quietly kills the sale.
A number, or just an in-stock badge?
Once you decide to surface per-store stock, the next question is how much to reveal. Three common treatments:
- The count (“4 in stock at Downtown”). For pickup across several shops, this is the one that works. The shopper is ranking your stores, and a number is the only thing that ranks them. It also sets expectations honestly when the answer is “1 left”.
- A low-stock threshold (“only a few left”). A reasonable middle ground if you sell one-of-a-kind goods and would rather not publish shelf depth to competitors.
- A binary badge (“available at this store”). The weakest option for multi-store pickup — it is exactly the native flag’s problem restated, and it can’t tell a shopper which of three shops to drive to.
Out-of-stock stores should stay visible but unselectable, not hidden. A shopper who knows the item isn’t at their nearest shop can choose the next one, or choose shipping. A shop that silently disappears just makes them wonder whether they missed it. Where that list belongs, and how it should behave, is covered in the Shopify store picker guide.
Does showing accurate stock cost you sales?
Merchants worry that showing low or zero stock at a store loses the order. The data points the other way. Research on store-level availability finds shoppers are substantially more likely to buy online when their nearest store shows an item as unavailable, rather than abandoning entirely — as covered by RetailWire.
Accurate per-store stock does not lose the sale — it redirects it: to a store that can fulfill, or to shipping. What loses the sale is hiding the truth, letting the order through, and turning a confident buyer into a refund and a one-star review at the counter.
Where Shopify’s defaults stop, and what to add
Native local pickup handles the mechanics well: real pickup orders, “Ready for pickup” notifications, POS handoff, one collection store per order. What it doesn’t do is tell the shopper which store to choose, or let them say when they’re coming.
BopiSafe adds exactly those two things and nothing else. Every pickup store shows its available quantity — read live from your own Shopify inventory, never the storefront boolean and never on-hand — inside a picker on the product page and in the cart. The shopper picks a store and a time, and that store is locked into Shopify’s own checkout. Everything downstream stays native: real pickup orders, native notifications, POS handoff. It is free at any number of stores, up to 100 pickup orders a month.
Next steps
- Check that the “online” rollup isn’t being treated as per-store truth anywhere in your flow
- Check the two switches on every location: fulfills online, offers pickup
- Decide which quantity you show — and make sure it’s available, not on hand
- Read the store picker guide for where that number belongs, and pickup time slots for the other half of the decision
- Or install BopiSafe and see the real count on your own product pages in a couple of minutes
Written by the BopiSafe team — we build store-pickup tooling for Shopify merchants. Have a question this guide didn’t answer? Email miles.bopisafe@outlook.com.