Shoppers want to know which of your stores has an item before they commit to picking it up — and Shopify’s “online” inventory number won’t tell them, because it’s a rollup of every fulfillment location, not a per-store count. Showing real-time per-store stock is the foundation of multi-location pickup: it routes shoppers to a store that can actually fulfill, instead of guessing and finding an empty shelf.
This guide covers what Shopify shows natively, why the rollup misleads, and how to surface per-store stock that stays accurate.
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 when 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.
That is real per-location availability, and for a single store it is enough. The problem is the prominent number on the page — the “online” inventory — is not a per-store figure at all.
For a multi-location store, the shopper’s core question is “does my store have this?” Native Shopify answers it, but one link deep and unsorted. Pulling that answer forward, into the cart and ranked by stock, is what turns a pickup browser into a pickup buyer. The in-cart side of this is covered in the Shopify store picker guide.
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 fulfilled at the chosen store.
- Staff field the “you said it was in stock” complaint, and you eat a refund and a wasted trip.
We unpack the rollup-versus-per-store distinction in detail in Shopify location inventory vs online inventory. The takeaway: for pickup, the rollup is a display total, never the number you make a fulfillment 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 fulfill a pickup |
| Pickup risk | High — hides empty stores behind a big number | Low — shows the real shelf |
| Where it should appear | Product page total | In the store picker, per store |
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 pickup. They are not the same thing.
A fulfillment-only warehouse should usually have “offers pickup” off, so customers can’t select it for collection, and you may keep “fulfills online orders” on so its stock backs shipping. A retail store offering pickup needs both on. Get these switches wrong and warehouses appear in the picker, or a pickup store’s stock silently inflates the online rollup and causes oversells on shipping orders.
Set pickup deliberately, per location, before you worry about display. The broader location setup is in our BOPIS setup guide and the cross-location mechanics in Shopify BOPIS multi-location inventory.
How fresh does per-store stock need to be?
For pickup, freshness is the whole point. The dangerous window is between the moment a shopper adds an item 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 real-time reads, not a daily snapshot. With Shopify POS as the source of truth, an in-store sale decrements the location’s inventory within seconds; with an external POS or ERP, freshness is only as good as the push interval, and any lag is a window where two shoppers can claim the same unit.
The reliable pattern is event-driven, not poll-driven: subscribe to Shopify’s inventory change notifications so the storefront always reads the latest per-store count, instead of caching a figure that quietly goes stale. The common breakage points are in multi-location inventory sync issues. Even with perfect sync, a residual gap remains between commit and arrival — which is why display alone is never enough, and the order step needs its own check.
Does showing accurate stock cost you sales?
Merchants worry that showing low or zero stock at a store will lose the order. The data points the other way. Research on store-level availability finds shoppers are roughly five times more likely to buy online when their nearest store shows an item as unavailable, rather than abandoning entirely — as covered by RetailWire and store-availability vendors.
In other words, accurate per-store stock does not lose the sale — it redirects it: to a store that can fulfill, to shipping, or to a different store visit. 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.
This is also why out-of-stock stores should stay visible-but-unselectable in the picker rather than disappearing — the shopper needs to see the real state and choose. We cover that in what happens when a pickup store is out of stock.
Exact counts, or just an in-stock signal?
Once you decide to show per-store stock, the next question is how much to reveal. There are three common treatments, and the right one depends on your catalog.
- Binary “in stock at this store.” The simplest and, for most catalogs, the best converting. The shopper learns what they need — can I collect here — without a number that invites second-guessing.
- Low-stock signal (“only 2 left at Downtown”). Useful for fast-movers and single-unit items, where scarcity is real and genuinely helps the shopper decide to commit to that store now.
- Exact count. Reserve this for high-consideration or one-of-a-kind goods where the shopper truly needs to know there is exactly one left. Exposing precise counts across every store can also hand competitors a live read on your inventory.
Whichever you choose, the rule is the same: the signal must be real-time, not a daily snapshot. A binary “in stock” that’s twelve hours stale is worse than no signal, because it reads as a promise. Match the granularity to the product, and never let the display outrun the data behind it.
Keeping stock accurate through to the order
Showing per-store stock is step one. Defending it through checkout is step two, and it has two layers:
- Safety-stock buffer. Reserve the last unit or two at each store for walk-ins, so an online pickup order can’t drain the shelf to zero ahead of an in-person customer.
- Checkout-time re-check. Re-read the chosen store’s stock at the moment the order is placed, and block it if the shelf can no longer cover the order. The shopper switches store or chooses shipping — both better than an unfulfillable promise.
Together these turn a stock display into a stock guarantee. Capacity caps add a third backstop for stores that can only stage so many pickups per day — see pickup location capacity management.
The mixed-cart split is the supporting mechanic that lets all of this coexist with shipping: when a cart mixes pickup and shippable items, the pickup group is where the per-store stock and picker appear, and each group checks out natively.
Where Shopify defaults stop and BopiSafe begins
Shopify’s native availability check shows per-location stock, but as a product-page link, unsorted, against a misleading rollup total, and bypassable by express checkouts. For a single store that is fine. For multiple stores it leaks oversells and wasted trips.
BopiSafe is complete multi-location BOPIS: shoppers see real-time per-store stock inside an in-cart store picker, sorted by priority and distance, reading Shopify’s own webhook-synced inventory as a single source of truth. Safety-stock buffers and a checkout-time re-check keep that stock honest through to the order, and it all runs on Shopify’s modern checkout enforcement layer — no theme rewrite, no slowdown.
Next steps
- Confirm your “online” number isn’t being treated as per-store truth anywhere in your flow
- Check the two switches on every location: fulfills online, offers pickup
- Read the Shopify store picker guide and location inventory vs online inventory
- Or install BopiSafe to show real-time per-store stock in the cart and enforce it at checkout
Written by the BopiSafe team — we build BOPIS infrastructure for Shopify merchants. Have a question this guide didn’t answer? Email support@bopisafe.com.