Guide · Retail
Why your BOPIS keeps failing.
Buy-online-pickup-in-store gets blamed on the app: the notifications, the pickup screen, the curbside flow. It almost never is. BOPIS sells your store's stock, and the count is wrong before the order ever arrives. The fix is on the floor, not the website. Here is why it breaks, and how to make it hold.
This guide, in 5 parts
BOPIS is huge, and it runs on a count that is wrong a third of the time.
Pickup is not a niche. About 97 million Americans use buy-online-pickup-in-store, and US click-and-collect sales reached roughly 109 billion dollars in 2024, with in-store pickup the largest share of it.
But every one of those orders is a promise made against the store's inventory record, and that record is right about 65% of the time. BOPIS takes a quiet back-office error and hands it straight to the customer, who is standing at the counter when the gap shows up.
So between 10% and 25% of omnichannel orders get cancelled because the stock was not there at pickup. The app is the messenger. The inventory is the message.
« BOPIS does not break the inventory. It exposes it, to the customer, at the worst moment. »
It is blamed on the app. It is an inventory-truth problem.
When pickup fails, the front end takes the blame, because that is what the customer touched. But the failures almost all start upstream, where the count meets the floor. Here are the six that do the damage.
The shelf count was wrong before the order arrived
BOPIS sells the store's stock, and the average store record is right about two-thirds of the time. The app did its job: it promised what the system said was there. The system was wrong on the floor, and the customer found out at the counter.
The sync lags, so the count is true only at dawn
Many setups push store stock to the website on a schedule, not in real time. The number is honest when it is written and a lie by lunchtime, after a morning of sales the website never saw. The customer buys the gap.
The item exists, but nobody can find it
The unit is in the building and in the count, sitting in a back-room tote, a go-back cart, or the wrong bin. Stock that cannot be located in time is stock that cannot be picked, and the order ages out into a cancellation.
Nobody owns the pick, so the queue waits for a free moment
When an order downloads to a screen but no one is assigned to work it, the pick happens whenever someone has a minute. The customer is already in the car park. Slow picks turn good stock into a bad experience.
Returns and reservations are not counted as gone
An item put aside for one customer, or just handed back at a return desk, often is not subtracted from what the website is still selling. So the same unit gets promised twice, and the second buyer loses the race they did not know they were in.
Shrink and miscounts quietly drain the truth
Theft, breakage and receiving errors all move the real shelf away from the recorded one, a little every day. Without a count that catches the drift, the record degrades until BOPIS is selling a store that no longer exists.
What gets blamed
The app
The notification was slow. The pickup screen is clunky. Curbside is confusing. So the budget goes to the front end, the flow gets re-skinned, and the cancellations do not move.
Symptom, not cause.
What actually broke
The count, on the floor
The shelf did not match the record. The unit could not be found, or was sold twice, or was the last one on a count nobody could trust. Fix that and the same app starts keeping its promises.
Cause, fixed where the stock lives.
The inventory-truth checklist.
An inventory truth is a count the floor can stand behind: one live number, kept close to the shelf, with the promise sized to what is really there. Six items make it true. Each has a pass-test you can check in plain language, no dashboard required.
- One live count, not an overnight copy. The website reads the store's real quantity in or near real time, not a nightly export that is stale by mid-morning. Pass test: a unit sold at the till disappears from the website inside minutes, not the next day.
- Cycle counts that catch the drift. Count high-velocity and BOPIS-eligible items often, in small recurring sweeps, so the record stays close to the shelf instead of being trued once a year. Pass test: top-selling SKUs are counted on a known cadence, and the variance is trending down.
- A buffer on thin stock, not a promise on the last unit. Stop offering the final one or two units for pickup, where a single miscount or theft empties the shelf. Hold a small safety threshold so the promise is one the floor can keep. Pass test: BOPIS goes unavailable before the count hits zero, not after.
- A findable home for every pickup unit. Every BOPIS item has a known location and a staging spot, so a picked order is grabbed, not hunted. Pass test: a picker can locate any ordered unit without a floor-wide search or a call to a manager.
- Reservations and returns leave the sellable count. When a unit is set aside or handed back, it is subtracted from what the website can still sell, instantly. Pass test: the same physical unit can never be promised to two BOPIS orders at once.
- A named owner for the pick queue. Someone is responsible for working incoming orders inside a set window, every shift, not whenever a moment appears. Pass test: every order is picked within its promised window, and a missed one has an owner, not an excuse.
Fix the floor first, tune the app last.
The order matters. Polishing the pickup flow on top of a wrong count just disappoints the customer faster. Work the floor first, then let the app earn the attention. This is a Hub Map call: sequence the work by where the failure actually starts, not where the customer noticed it.
Measure the real gap before touching the app
Pull the cancellation and not-available rate for BOPIS, then walk the floor and count a sample of BOPIS-eligible items against the system. The gap between the screen and the shelf is your actual problem, and it is almost never the website. Fix the success number first: the cancellation rate you will not ship above.
In shortFind the gap between the count and the shelf, in real numbers.
Make one stock count true and live
Get the website reading the store's real quantity in or near real time, and start cycle-counting the fast and BOPIS-eligible SKUs so the record stops drifting. This is the upstream fix everything else leans on. Until the count is true, every download, pick and promise inherits the same lie about what is on the shelf.
In shortOne quantity, true on the floor, read live by the site.
Protect the promise on thin and lost stock
Add a safety buffer so the last unit is not sold blind, and give every pickup item a findable home with a staging spot. Subtract reservations and returns from the sellable count the moment they happen. These are floor moves, not software, and they stop the failures the count alone will not catch.
In shortBuffer the thin stock, locate every unit, count what is set aside.
Assign the pick, then turn the app loose
Name who works the queue each shift and the window they work it in, so good stock is not lost to a slow pick. Only now does the app deserve attention: better notifications, a cleaner pickup flow, curbside. Tune the front end last, on top of a floor that can actually keep the promise.
In shortOwn the pick window first, polish the app second.
Frequently asked.
Our BOPIS cancellation rate is too high. Is it the app or the inventory?
Almost always the inventory. The app promises what the system says is on the shelf, and the average store record is right about two-thirds of the time. So an order is taken for stock that is not really there, and it cancels at the counter. Before you re-platform the front end, measure the gap between your count and your floor. That gap, not the app, is what you are paying for in lost orders.
We push store stock to the website every night. Is that enough?
No, not for BOPIS. An overnight copy is honest at dawn and wrong by mid-morning, after a run of in-store sales the website never saw. The customer buys into that gap and the order fails at pickup. BOPIS needs the website reading the store's real quantity in or near real time, so a unit sold at the till leaves the sellable count in minutes, not the next day.
Can our team fix this without buying new software?
Often, yes, and a lot of it is floor work, not a purchase. Cycle counts, a safety buffer on thin stock, a findable home for every pickup unit, and a named owner for the pick queue are operating changes your store teams can run now. New tooling helps the live-count and locate problems, but tools sit on top of the floor discipline. Get the floor right first, or the software just automates a wrong number faster.
How accurate does our inventory actually need to be for BOPIS?
Accurate enough that the last unit you offer is really there. The average store sits near 65% record accuracy, and BOPIS exposes every point of that error straight to the customer. You do not need perfection everywhere. You need high accuracy on the fast-moving, BOPIS-eligible SKUs, plus a buffer so you are not promising the final unit on a count you cannot fully trust.
Should we just turn BOPIS off until inventory is fixed?
Rarely the right call, because the demand is real and growing, and switching it off concedes it to a competitor. The better move is to narrow it: offer pickup only on the SKUs and stores where the count is trustworthy and the floor can keep the promise, then widen as accuracy improves. Shrink the promise to what you can keep, rather than break it across the whole catalogue.
Much of this is floor work you can run yourselves. Cycle counts, a buffer on thin stock, a findable home for every pickup unit, and a named owner for the pick queue are operating changes, not a purchase.
Bring us in when the count and the website will not stay in sync, when the floor discipline keeps slipping back, or when you want pickup fixed fast across a store estate without a long hire.
BOPIS is one join in a bigger picture, covered in the omnichannel playbook. This is the how-to under our flagship offer, The Whole Way, where we build and stay until the promise holds. On sequencing the work, see the Hub Map.
Cancelling pickup orders you should be keeping?
No deck, no gate. A working session on the real count, the real floor and the real pickup flow, with the operators who would close the gap.