Blog

Shopify Location Inventory vs Online Inventory

2026-06-18 · BopiSafe Team

On Shopify, “online” inventory is not a per-store count. It is a rollup that sums available stock across every location set to fulfill online orders. A shopper sees the combined total, so an item can read “in stock” while the store they want to collect from holds none. That gap is the root cause of pickup oversells.

This post explains how the rollup works, the two independent switches on every location, and why the mismatch sends shoppers to empty shelves.

What is the difference between location inventory and online inventory?

Location inventory is the real number: how many units physically sit at a given store right now. Online inventory is a calculated number: the sum of available stock across every location you have enabled to fulfill online orders.

Per Shopify’s multi-location inventory documentation, the “online” quantity a shopper sees on a product page is this rollup. It is not tied to any one store.

The arithmetic is simple and that is exactly the trap. If your downtown store has eight of an item and your suburban store has zero, the shopper sees eight online. Nothing on the storefront tells them all eight are downtown.

For a single-location store this never matters, because the rollup and the store are the same shelf. The moment you add a second location, the online number starts describing a total that no individual store can actually fulfill.

What are the two switches every Shopify location has?

This is where most confusion starts, so it is worth being precise. Every location in Shopify Admin carries two separate, independent settings:

Switch one: “fulfill online orders.” When this is on, the location’s stock feeds the online rollup. Its units are counted in the number shoppers see and can buy. When it is off, that location’s stock is invisible to online shoppers entirely.

Switch two: “offers in-store pickup.” When this is on, per Shopify’s pickup documentation the location appears as a collection option at checkout. This is about whether shoppers can pick up there, not about the online stock total.

Because the two switches are independent, four combinations exist, and three of them cause confusion:

Fulfills online ordersOffers pickupWhat shoppers experience
OnOnStock counts toward online total and store accepts pickup, but the shopper still sees the rollup, not this store’s count
OnOffStock inflates the online number, yet shoppers cannot collect here
OffOnShoppers can collect here, but its stock is invisible to the online total
OffOffLocation is invisible to the storefront entirely

The first row is the one that causes oversells, and it is also the most common configuration. Pickup is on, the stock counts, and the shopper still cannot see how much is actually at the store they chose.

Why does the rollup cause pickup oversells?

Walk the shopper’s path. They see “in stock” online, that number being the rollup. They add the item, choose a nearby store for pickup, and pay. The order is placed.

But Shopify’s pickup logic requires the entire order to be in stock at one location, or it falls back on store transfers. If the store they chose actually has zero, the order cannot be collected there. It either stalls waiting on a transfer, or the shopper drives over to an empty shelf. We cover that rule in the entire-order-at-one-location guide.

The shopper never had the information to avoid this. They were shown a combined total and asked to make a per-store decision against it. The mismatch is structural, not a bug in their behavior.

The cost is real. Accurate stock visibility consistently outperforms hiding the gap: when a nearby store is genuinely out, shoppers shown an accurate status are far more likely to switch to buying online than to abandon — a pattern reflected across Baymard’s e-commerce UX research. The reverse, a false “available” that ends in an empty shelf, is the fastest way to lose a pickup customer for good.

And the underlying data is often shakier than merchants assume. Unit-level inventory accuracy is a known retail weak spot — a meaningful share of counts are simply wrong. Layer a misleading rollup on top of imperfect counts, and the storefront makes confident promises about stores it cannot actually verify.

Can’t I just turn off “fulfill online orders” to fix it?

It is the tempting move, and it usually makes things worse. If you flip off the online switch for a store, its stock stops feeding the rollup, so shoppers can no longer buy those units online at all. You have hidden sellable inventory to avoid a display problem.

The clean fix is not subtracting stores from the total. It is showing the shopper per-store stock so they decide against the real shelf, not the rollup.

That means surfacing live availability for each store in the cart, then letting the shopper pick where to collect. Out-of-stock or full stores stay visible but unselectable, greyed and ranked below the available ones, so the shopper understands the full picture rather than seeing a store vanish. For the broader pattern of fixing multi-location sync gaps, see multi-location inventory sync issues.

This is also why the storefront experience matters more than the admin view. You can already filter inventory by location inside Shopify Admin; what is missing is showing that per-store reality to the shopper at the moment they choose where to collect.

How complete BOPIS replaces the rollup with per-store truth

BopiSafe is complete multi-location BOPIS for Shopify, and the per-store stock problem is exactly what it solves first. Instead of the combined online number, shoppers see real-time availability for each store in an in-cart store picker and choose where to collect, sorted by priority then distance.

Out-of-stock or over-capacity stores stay visible but unselectable rather than disappearing, so the shopper always sees their real options. When a cart mixes fulfillment types, it groups them by pickup, local delivery, and shipping and runs each group through its own native Shopify checkout as a real order, never a draft order, which keeps the per-store stock promise intact through to payment.

It reads Shopify’s own inventory and writes back to it, so there is one source of truth rather than a second number to reconcile, and it runs on Shopify Functions with no slowdown at checkout and no theme rewrite. For how this shows up on the product side, see showing per-store stock for pickup.

Written by the BopiSafe team — we build BOPIS infrastructure for Shopify merchants. Our Shopify pickup integration work dates back to 2023, before the product launched.

Next steps

Confused about why your online stock and your shelf counts disagree? Email support@bopisafe.com — we will walk through your location setup with you.

Frequently asked questions

What does "online" inventory mean on Shopify?

"Online" is not a place where stock physically sits. It is a rollup number that adds together the available quantity at every location you have set to fulfill online orders. So if three stores each hold five units, a shopper sees fifteen online, even though no single store has fifteen.

Is Shopify's online inventory a per-store count?

No, and this is the most common misunderstanding. The online quantity is a combined total across all fulfillment-enabled locations, not the count at any one store. A product can read in stock online while the specific store a shopper wants to collect from holds zero of it.

What are the two switches every Shopify location has?

Each location has a switch for whether it fulfills online orders, which controls whether its stock feeds the online rollup, and a separate switch for whether it offers in-store pickup. They are independent, so a location can feed the online number without offering pickup, or offer pickup while its stock is invisible to the online total.

Why does the online rollup cause pickup oversells?

Because the storefront shows the combined online number, a shopper can place a pickup order against stock that lives at a different store. Shopify's pickup rule requires the entire order in stock at one location or relies on store transfers, so the order stalls or the shopper drives to an empty shelf.

How do I see stock at one specific Shopify location?

Inside Shopify Admin you can filter inventory by location to see real per-store counts. The gap is on the storefront, where shoppers only see the combined online number. Showing live per-store availability to shoppers, in the cart, is the piece native Shopify does not provide and where an app is usually needed.

Does turning off "fulfill online orders" for a store fix oversells?

It changes the math but rarely fixes the problem. If you remove a store from the online rollup, its stock stops counting toward what shoppers can buy online, which can hide sellable inventory. The real fix is showing per-store stock so the shopper picks the store that actually has the item, not hiding stores from the total.

How accurate are Shopify inventory counts across locations?

Shopify's counts are only as accurate as the data flowing in from your point of sale and any other systems. Inventory-record accuracy is a well-documented weak spot in retail — studies routinely find a large share of unit-level counts wrong — and every error becomes a wasted pickup trip once the storefront promises a specific store has an item.

Can I show different stock for online and pickup on the same product?

Yes, that is exactly the per-store model complete BOPIS provides. Instead of one combined online number, the shopper sees live availability for each store they could collect from, so the pickup promise is tied to a real shelf rather than a rollup.

Want pickup that doesn't break? See how BopiSafe works →

New to BopiSafe? Use code BOPISAFE30 at plan selection for a 30-day free trial instead of 14.