BopiSafeInstall on Shopify

Pickup that shows the real number, store by store.

Shoppers see how many units each of your stores actually has, pick one, and book a time — and that store is locked into Shopify's own checkout.

  • A count, not a badge — the available quantity from your own Shopify inventory, never the "Pickup available" flag.
  • Times and capacity included — calendar, lead time, blackout days, and a cap per slot. Full slots quietly disappear.
  • Every store, free — no location limit on the free plan. Paying only lifts the 100-pickup-orders-a-month ceiling.

Nothing here replaces Shopify's checkout. Mixed carts, pickup orders, "Ready for pickup" emails and POS handoff all stay native — BopiSafe only adds the layer native pickup doesn't have.

The problem

"Pickup available" is not a number.

Shopify's own pickup widget renders a yes/no. It stays green when the item would have to be transferred in first, when the store doesn't track that item, and when the last one is already promised to somebody else's order.

So the shopper drives across town and your team finds out at the counter. And there's no way to say when — the pickup happens whenever it happens.

Both failures are shopper-side. Neither shows up in your reports — the order simply never exists.

What native pickup shows
Downtown FlagshipPickup available
RiversidePickup available
NorthgatePickup available

One flag, three stores. It reads the same whether the shelf holds six or none.

What BopiSafe shows
Downtown Flagship4 in stock
Riverside1 left
NorthgateOut of stock

Shopify's own available quantity — on hand, minus committed, minus reserved. The number your staff would find on the shelf.

What you get

Four things native pickup doesn't do.

All four are in the free plan, at any number of stores. There is no feature behind the paid tier — the paid tier is the same product without a monthly ceiling.

The real count at every store

Each pickup store shows its available quantity, read from Shopify's own inventory. Not a badge, not the "online" rollup, and never the on-hand figure that counts units already promised to other orders.

quantities, not flags

A picker that borrows your theme

Stores sit in a side panel of our own, never inside your theme's markup — but it measures your theme's colours, type and button shape when the page loads, so it reads as part of the store. No theme code, one app embed switch.

no theme edits

Pickup times on a calendar

Set a store-wide default and override it per store: opening windows, slot length, prep lead time, blackout days, how far ahead people can book. Days you can't serve keep their number but can't be picked.

defaults ready at install

Soft capacity, agreed everywhere

Give a slot a cap. When it fills, it disappears from the calendar and from checkout — both read the same record. Nobody is ever stopped by an error; a full slot is simply never offered.

hidden, never blocked

Your stock sits in more than one place — the warehouse it ships from, the shops it's collected from. Which of these is you?

This is where the picker earns its keep. The shopper is choosing between your shops, and the only thing that makes that choice a good one is the count next to each name — plus a time they can actually make. Stores with none left stay on the list, greyed, so nobody wonders whether they missed one.

There's only one place to collect from, so the choice is easy — the number is the whole question. Your warehouse holds most of the stock and ships it; the shop holds a few. "Pickup available" says yes to both. BopiSafe says 2 at the shop, and lets the shopper book a window your staff can prepare for.

See it work

One loop, three moments.

On the product page

One line of stock and one button, under Add to cart. The button says where and when they're collecting, so the choice is visible before the cart. Buy-now is caught too — a direct checkout still carries the store and the time.

In the panel

Store first, then the time — a real month calendar, because "the Saturday after next" is a thing you find by looking at a month, not by reading a row of labels. Full or closed days stay in place but can't be picked.

The same panel opens from the cart and from your theme's slide-out cart, where each store line reads All 3 items in stock instead of a single count.

At checkout

Shopify's own checkout, showing the one store the shopper picked — the others are hidden so nobody quietly changes their mind at the last step. Slots that filled up are already gone.

What lands is a real native pickup order, tagged with its time so you can find it in the admin. Your pickup emails, POS handoff and reports carry on as if we weren't there.

The comparison

Native Shopify pickup vs BopiSafe

Shopify's pickup got a lot better — it has taken mixed-cart splitting into native checkout, and that's exactly why this product got smaller. Here is the line between what it already does and what it still doesn't.

In the shopper's handsShopify native pickupBopiSafe Every plan
Stock, per store "Pickup available", a yes/no that stays true for stock needing a transferThe available quantity at each store, from your own inventory
Choosing the storeAt checkout, from a plain list with no stock in viewOn the product page or in the cart, with the counts in view — then locked to that store at checkout
Booking a pickup time not offeredMonth calendar plus slots, with lead time and blackout days
Capacity per slot not offeredA cap per slot; full slots vanish from storefront and checkout alike, never an error
Cart mixing pickup and shippingShopify splits it itself, in native checkout — rolling out across plansUntouched — native owns the split, and we never fake an order
Number of pickup locationsUnlimitedUnlimited, including on the free plan

Everything downstream of the order stays Shopify's: real native pickup orders, Shopify's own "Ready for pickup" notifications, POS handoff, and one pickup store per order. BopiSafe adds a layer in front of checkout and gets out of the way.

What it costs

Free until you're busy.

One number decides your plan: how many pickup orders you take in a month. Everything else — every feature, every store — is the same on both.

Free

$0 / month

Up to 100 pickup orders a month. Unlimited stores, times, capacity. No watermark.

Pro

$19.90 / month

The identical product with the monthly ceiling removed. Billed through your Shopify account.

Go past the free allowance and nothing changes for your shoppers — the pickup flow keeps running, we just tell you in the admin. How a pickup order gets counted →

Common questions

The honest answers.

Something not covered? Ask us directly — email, answered within a day.

Do I need Shopify Plus?

No. BopiSafe works on every Shopify plan from Basic up. The one checkout customization it installs is a Shopify Function, and public App Store apps containing functions run on any plan.

Does it change my theme?

No theme code, no template editing. You flip one app embed on in the theme editor. The picker lives in its own element rather than in your theme's markup, and reads your theme's colours, type and button shape at runtime so it looks like it belongs.

Does it touch my checkout?

Only to hide things. One Delivery Customization Function keeps the pickup store the shopper already chose and hides pickup slots that have filled up, so checkout agrees with what the storefront showed. It never blocks a checkout and never shows an error — if something is full, it is simply not offered.

Does it split a mixed cart?

No, and that's deliberate. Shopify has taken mixed-cart splitting into native checkout and is rolling it out across plans, so we stay out of it entirely and add only the layer the platform still doesn't have: which store really has it, and when you can collect it. If the native split hasn't reached your store yet, a cart mixing a pickup-only item with a ship-only one can still stall — that gap needs a cart-splitting app, and we are honestly not it.

What happens after 100 pickup orders in a month?

Nothing on your storefront. The store picker, the times and the checkout behaviour keep running exactly as before — we will not break a working pickup flow over billing. You see a note on the app home page and get one email. The count resets on the first of each month (UTC).

How fresh is the stock number?

It comes live from your Shopify inventory and is cached for about 30 seconds, so a shopper may see a number up to roughly a minute and a half old at worst. If Shopify can't be reached we show nothing at all rather than a wrong "out of stock" — a missing line is recoverable, a false one costs you the sale.

Do you do local delivery?

Not today. BopiSafe is pickup only, on purpose — local delivery needs its own address-to-store matching, delivery windows and capacity model, and doing it badly next to pickup helps nobody.

Ready when you are

Give pickup a number.

Free to install · nothing to fill in · under two minutes to a working store picker.

Letting an app near your checkout is a big ask — see who builds it, why it got smaller, and where the edges are.