BOPIS Optimisation
Buy Online · Pick-up In Store
When an online customer is close to a store with inventory, should the retailer offer BOPIS (customer drives to pick up, saves shipping) or ship normally? Decision trades shipping saved against store labour and customer travel cost. The retailer controls offer and capacity; the customer controls the accept/decline. Canonical game-theoretic treatment is Gao & Su (2017) in Management Science; the operational assignment variant inherits structure from omnichannel fulfilment.
Why it matters
Store as a free last-mile node — when the customer supplies the transport
Where the decision sits
Order-time decision at the retailer; accept/decline decision at the customer
BOPIS is a sub-problem of omnichannel fulfilment: for online orders only, decide whether to offer BOPIS at the nearest store (the retailer's decision) and the customer then decides whether to accept or default to home delivery. The retailer's economics: save shipping fee, pay store pick-and-stage labour, consume store inventory (which may be needed for walk-ins). The customer's economics: save shipping charge, pay travel time. A retailer that over-offers BOPIS loses store-labour capacity; one that under-offers leaves shipping cost on the table.
Problem & formulation
Offer + acceptance + assignment — a three-layer model
Parameters
| Symbol | Meaning | Unit |
|---|---|---|
| \(s\) | Shipping cost saved if order picked up in store | $ / order |
| \(\ell\) | Store pick-and-stage labour cost per BOPIS order | $ / order |
| \(L_m\) | Store \(m\)’s per-cycle BOPIS labour capacity | orders |
| \(I_m\) | Store \(m\)’s inventory for the SKU | units |
| \(d_{ij}\) | Drive distance / time from order \(i\)’s zone to store \(j\) | min |
| \(\tau_i\) | Customer \(i\)’s willingness-to-drive threshold | min |
| \(h\) | Expected halo revenue per in-store pickup visit (unplanned add-ons) | $ / visit |
| \(\beta\) | Customer-travel aversion parameter | $ / min |
Decision variable
| Symbol | Meaning | Domain |
|---|---|---|
| \(x_{ij}\) | 1 if BOPIS is offered for order \(i\) at store \(j\) | binary |
| \(y_i\) | 1 if order \(i\) ends up picked up (customer accepts) | derived |
Customer acceptance rule
A customer accepts BOPIS at store \(j\) iff travel cost is below the shipping saving plus personal convenience:
The threshold \(\tau_i\) defines the customer's BOPIS trade area. Variation across customers (some value time more, some less) means a distribution of thresholds.
Retailer objective
Maximise expected contribution from BOPIS decisions, net of customer acceptance:
Each accepted BOPIS order nets \(s - \ell + h\) (shipping saved + halo revenue minus labour cost). The indicator captures that the offer is only valuable when the customer will accept.
Constraints
Simplification: greedy offer rule
For each online order \(i\), compute the nearest in-stock store \(j^{\ast}(i)\). If \(d_{ij^{\ast}} \leq \tau_i\) and store \(j^{\ast}\) has labour and inventory, offer BOPIS there. If not, ship normally. Scan orders in decreasing contribution \(s - \ell + h\) (identical here, so order is arbitrary) — greedy is optimal when contributions are uniform; otherwise sort by marginal value.
Interactive solver
Greedy BOPIS-offer policy with store capacity and customer thresholds
Under the hood
The scenario generator places 4 stores uniformly in a 100×100 zone and \(n\) online-order destinations. Each customer \(i\) gets a random willingness-to-drive \(\tau_i \sim \mathrm{Uniform}(5, \tau^{\max})\) minutes (higher \(\tau\) = more patient). For each order, the solver computes distance to every store, sorts ascending, and offers BOPIS at the nearest store with (a) labour capacity left, (b) inventory left, and (c) \(d \leq \tau_i\). If no store qualifies, the order ships normally. Contribution per BOPIS accepted = \(s - \ell + h\). Ship-all baseline: offer no BOPIS — contribution is zero (just shipping cost paid). Lift % reports the gain over ship-all.
Reading the solution
Three patterns to watch for
- Store trade areas emerge. Each store attracts the orders whose zones are within its customers' drive-time thresholds — you can see the BOPIS catchment on the canvas.
- Store capacity binds before shipping savings are exhausted. Labour capacity is the typical bottleneck; when capacity runs out, orders that would prefer BOPIS default to shipping.
- Patient customers (high \(\tau_i\)) subsidise impatient ones. Orders with small \(\tau_i\) only work if their nearest store is very close; orders with large \(\tau_i\) contribute to further stores.
Sensitivity questions
- What if labour cost doubles (union deal)? — contribution per accepted BOPIS drops; some orders flip to shipping; store capacity loosens.
- What if halo revenue is zero (customers just grab and leave)? — BOPIS only wins when shipping saving exceeds labour cost; adoption shrinks.
- What if drive-time threshold distribution is tighter (everyone wants 5 min)? — only customers near a store use BOPIS; capacity is the wrong bottleneck.
Model extensions
Strategic pricing + BOPIS
Gao & Su 2017 analyse the joint price-and-BOPIS-offer decision under heterogeneous customers. Optimal price weakly decreases when BOPIS is enabled.
Curbside vs in-store pickup
Curbside has lower halo but lower labour. Optimal to offer curbside for low-value orders, in-store for high-value.
Joint BOPIS + inventory
Stores that share inventory with online pool face trade-off: serve more BOPIS vs keep stock for walk-ins. Coupled (s,S) + BOPIS policy.
Store replenishment →Dynamic BOPIS offer
Offer BOPIS only when store inventory is above a threshold; close BOPIS during peak hours. Queueing-theoretic formulation.
Strategic consumer anticipation
Customers know BOPIS is sometimes unavailable; they delay purchase or substitute. Equilibrium game.
Omnichannel fulfilment
BOPIS is one of several fulfilment options (ship-from-store, DC, dark store). Full multi-option decision.
Omnichannel fulfilment →Ship-from-store alternative
When BOPIS is declined, customer default is home delivery — which can itself be ship-from-store.
Ship-from-store →Returns & BORIS
Buy Online, Return In Store (BORIS). Symmetric to BOPIS: customer returns, store absorbs handling, reverse-logistics cost reduced.
Returns management →Key references
Back to the retail domain
BOPIS sits in the Place × Operational cell — the sub-problem that turns stores into last-mile nodes when the customer supplies the transport.
Open Retail Landing