BOPIS on Shopify means buy-online-pickup-in-store: a shopper orders online, picks a physical store at checkout, and collects in person. Running it across one location is straightforward. Running it across several is harder, because stock differs by store and the quantity a shopper sees online is a combined rollup, not a per-store count.
This guide defines BOPIS, explains why multiple locations break the simple version, and walks the full path to doing it right.
What does BOPIS mean, and why do merchants run it?
BOPIS sits between pure e-commerce and pure retail. The shopper gets same-day collection without paying for shipping, and you get a higher-margin order with no carrier cost, plus a person walking into your store.
That foot traffic is the quiet win. Capital One Shopping research reports that 85% of shoppers buy something extra when they come in to collect, and 77% use BOPIS specifically so they can see the item before committing.
The category is large and growing. The same research puts US BOPIS sales at roughly $154.3 billion in 2025, about 10.5% of all e-commerce, with a projected $177.9 billion in 2026. In 2024, 97.2 million Americans, about 34.2% of the population, used it at least once.
So the demand is settled. The interesting question for a Shopify merchant with more than one store is not whether to offer pickup, but how to offer it without sending shoppers to the wrong shelf.
Why is multi-location BOPIS harder than single-store pickup?
With one location, pickup is simple: the shopper picks your one store, and the stock they see is the stock that store has. There is nothing to get wrong.
Add a second store and the model quietly breaks. The number on the product page is the “online” inventory, and per Shopify’s multi-location inventory docs that number is a rollup. It sums every location you have set to fulfill online orders. It is not a per-store count.
So a jacket can read “in stock” online while it physically lives at your downtown store and the suburban store a shopper wants to collect from has none. The shopper has no way to tell. They place a pickup order against stock that is somewhere else entirely.
That is the core multi-location trap: the rollup hides the per-store reality, and pickup is an inherently per-store promise. For the full mechanics of why the online number misleads, see why online inventory is not per-store stock.
The “Check availability at other stores” gap
Shopify’s native storefront does try to help. With more than one location, its pickup documentation shows one store on the product page plus a “Check availability at other stores” link.
The link helps, but it is a detour. The shopper has to click away, read a list, mentally match it against their cart, and come back. It tells them availability for the item they are looking at, not for everything in their cart at once. We unpack that flow in the check-availability-at-other-stores walkthrough.
Pickup needs the whole order at one store
There is a second rule that bites at multiple locations. Shopify’s pickup logic requires the entire order to be in stock at a single location, or it falls back to moving stock between stores through transfers.
A two-item cart where store A has one item and store B has the other cannot simply be collected at either. Either the shopper splits their thinking, or a transfer happens with its own lead time. We cover that trade-off in the entire-order-at-one-location guide.
How big is the cost of getting per-store stock wrong?
The failure mode is concrete: the shopper drives to the store, and the item is not there. That is the single fastest way to lose a customer’s trust in pickup, and they rarely give it a second try.
The reverse is just as expensive. When the nearest store shows an item as unavailable, shoppers are roughly five times more likely to buy online instead when stock visibility is real-time and accurate, rather than abandoning the purchase. Accurate per-store stock is not a nicety; it is the difference between a saved sale and a lost one.
And accuracy is not a given. Studies of grocery retail have found up to 60% of inventory records inaccurate at the unit level. When the storefront promises a specific store has an item and it does not, every one of those errors becomes a wasted trip.
Here is how the experience differs once per-store stock is visible at the point of choice:
| Without per-store stock | With per-store stock |
|---|---|
| Shopper sees one combined “online” number | Shopper sees live availability for each store |
| Picks a store and hopes | Picks the store that actually has the items |
| Discovers the gap at the shelf | Discovers it before paying, and adjusts |
| Wasted trip, lost trust, refund | Collected order, foot traffic, add-on sales |
The whole point of multi-location BOPIS is to move the moment of truth from the shelf to the cart.
What does the full implementation path look like?
Done properly, multi-location BOPIS is a sequence, not a single toggle. The order matters because each step depends on the one before it.
1. Get inventory tracked per location. Stock has to be counted at each store, not just at “online.” If your counts are wrong before you start, pickup will broadcast those errors to shoppers. Fix the data first.
2. Enable pickup at each store. In Shopify Admin, turn on in-store pickup per location and set an honest ready-time estimate. Under-promising on timing costs less than over-promising. The mechanics are in our full BOPIS setup guide.
3. Show real-time stock for every store, in the cart. This is the step native Shopify does not do. Instead of the combined online number, the shopper should see live availability at each store, so they choose based on what is actually there.
4. Give the shopper an in-cart store picker. The shopper selects where to collect, with stores sorted so the most useful ones surface first, in-stock by priority, then by distance. Stores that are out of stock or full stay visible but unselectable, greyed and sunk below the available ones, never hidden, so the shopper understands their options rather than wondering where a store went. The store they choose is then locked into native checkout, not silently rerouted to another location, so they collect from the store they actually picked.
5. Handle carts that mix pickup and shipping. When one cart has a collect-in-store item and a ship-to-home item, the two need to resolve into separate, clean orders through native Shopify checkout, not be forced into one fulfillment choice. This is a supporting backstop, not the headline, and it only engages when a cart actually mixes the two. For a multi-location store where everything can ship, the live per-store stock, the in-cart picker, and the store-lock are the whole value on every plan — many such stores get the full loop without ever splitting a cart.
For the full version of this end-to-end path across stores, see the multi-location BOPIS guide.
Where the native defaults stop
Shopify gives you steps one and two cleanly. It does not give you steps three through five across multiple stores. The “online” rollup, the single-store product page, and the entire-order-at-one-location rule all push against showing live per-store stock and a chooseable list. For a feature-by-feature breakdown of where the line falls, see native local pickup vs complete BOPIS.
You can close those gaps with custom development, but most merchants reach for a focused app instead, because the work has to keep pace with Shopify’s checkout-time enforcement layer every release.
BopiSafe is complete multi-location BOPIS built around exactly this: shoppers see real-time per-store stock in an in-cart store picker and choose where to collect, with stores sorted by priority then distance and out-of-stock or full stores staying visible but unselectable. When a cart mixes fulfillment methods, BopiSafe groups it by pickup, local delivery, and shipping, and each group runs through its own native Shopify checkout as a real order, never a draft order. It runs on Shopify Functions, so there is no slowdown at checkout and no theme rewrite.
Written by the BopiSafe team — we build BOPIS infrastructure for Shopify merchants. Our pickup integration work for Shopify stores dates back to 2023, well before the product launched.
Next steps
- Understand the data trap first: why online inventory is not per-store stock
- See how the storefront choice works: the in-cart store picker explained
- Walk the setup end to end: how to set up BOPIS on Shopify and the multi-location guide
- Or install BopiSafe to show live per-store stock and a store picker without building it yourself
Have a multi-location pickup question this didn’t answer? Email support@bopisafe.com — we read everything.