Ship-from-Store
Store as last-mile node · Walk-in protection
Fulfil online orders directly from store inventory to shorten last-mile distance and speed delivery — but carefully, because every unit shipped from a store is a unit unavailable for the walk-in customer who arrives five minutes later. Ship-from-store (SFS) is a restricted form of omnichannel fulfilment where only stores are candidate nodes; the retailer-specific twist is a walk-in demand shadow price that adjusts the naive shipping-cost objective upward by the expected lost margin on future walk-ins. Canonical references: Bell, Gallino & Moreno (2014, 2018); Hu, Li & Shou (2022).
Why it matters
Stores double as mini-fulfilment centres in the e-commerce era
Where the decision sits
Operational routing · with a strategic inventory-protection overlay
SFS fits between general omnichannel fulfilment (which is also allowed to ship from a DC or dark store) and pure store operations. The modelling question is: given an online order and a candidate store with inventory, what is the true total cost of shipping from that store? Naive answer = per-order shipping + labour. True answer = shipping + labour + expected lost margin on the walk-in that will find no stock. The difference matters most in fast-turning, high-margin categories.
Problem & formulation
Assignment MIP plus walk-in protection shadow price
Parameters
| Symbol | Meaning | Unit |
|---|---|---|
| \(i \in \mathcal{O}\) | Pending online order | finite |
| \(j \in \mathcal{S}\) | Store (candidate SFS origin) | finite |
| \(0\) | DC (fall-back option, always has stock) | — |
| \(I_j\) | Store \(j\)’s inventory for the SKU | units |
| \(c_{ij}\) | Shipping cost from \(j\) to order \(i\) (includes labour) | $ |
| \(c_{i0}\) | Shipping cost from DC to order \(i\) (higher) | $ |
| \(\mu_j\) | Expected remaining walk-in demand at store \(j\) this cycle | units |
| \(m\) | Gross margin on a walk-in sale | $ / unit |
| \(\lambda_j(I)\) | Walk-in shadow price = probability the next walk-in is lost × margin, given current stock \(I\) | $ |
Decision variable
| Symbol | Meaning | Domain |
|---|---|---|
| \(x_{ij}\) | 1 if order \(i\) ships from store \(j\); 0 otherwise. \(x_{i0} = 1\) means ship from DC | binary |
Walk-in shadow price
When stock is abundant, the marginal cost of one more SFS unit is zero (plenty left for walk-ins). When stock is tight, it approaches the full walk-in margin. A simple closed-form uses the newsvendor critical-fractile intuition:
\(\bar F_j\) is the survival function of walk-in demand. When \(I\) is large, \(\bar F_j(I) \approx 0\) and SFS is free of walk-in cost. When \(I\) is small (or zero), \(\bar F_j(I) \approx 1\) and every SFS unit costs an expected walk-in margin. Bell-Gallino-Moreno 2018 implement a richer Bayesian version.
Objective
Each assignment pays the true cost: shipping+labour plus the walk-in shadow price evaluated at the post-assignment inventory level. DC has \(\lambda_0 = 0\) by convention.
Constraints
One assignment per order; store inventory capacity; DC has no capacity bound in the simplified version.
Interactive solver
Greedy-assignment with and without walk-in protection — compare the two
Under the hood
The scenario generator places 4 stores (fixed coords) + 1 DC (grid centre) + \(n\) online orders (random zones). Store \(j\)’s walk-in survival function is approximated as Poisson with rate \(\mu_j\): \(\bar F_j(I) = \mathbb{P}(\text{Poisson}(\mu_j) \geq I)\). The protected policy assigns each order to the store / DC with minimum \(c_{ij} + \lambda_j(I_j - \text{used}_j)\), decremented after each assignment. The naive policy assigns to the nearest in-stock store (or DC). Expected walk-in loss for each policy is \(m \cdot \sum_j \mathbb{E}[(D^{\text{walk-in}}_j - I_j^{\text{left}})^+]\), computed via Poisson tail. Realistic savings of 2-10% typically emerge when walk-in demand is high relative to inventory.
Reading the solution
Three patterns to watch for
- Protected policy routes to DC more often as inventory dips. As a store depletes, the shadow price rises, eventually making DC cheaper. Naive policy keeps shipping from store and strands walk-ins.
- High-margin SKUs get more protection. Double the margin and the shadow price doubles — fewer SFS, more DC.
- DC fall-back costs the retailer slower delivery but saves walk-ins. The SLA penalty trade-off appears in the cross-link to omnichannel-fulfilment.
Sensitivity questions
- What if walk-in demand drops (seasonal low)? — shadow prices collapse; SFS becomes free; lift vs naive shrinks.
- What if store inventory is deeper? — same: shadow prices drop; protected and naive converge.
- What if DC ship cost doubles (fuel shock)? — fall-back is more expensive; protected policy is willing to risk more walk-in losses; SFS share rises.
Model extensions
Dynamic shadow prices
Bell-Gallino-Moreno 2018: use a Bayesian filter to update walk-in demand belief as the cycle unfolds; Lagrangian look-ahead gives future-demand-aware pricing.
Multi-SKU
When stores share labour but have separate per-SKU inventory, shadow prices couple across SKUs via the labour constraint.
Return-aware SFS
Route online orders AWAY from zones with high return rates — saving reverse-logistics cost.
Returns management →Joint SFS + replenishment
SFS depletes store stock faster than planned; replenishment policy must adapt (higher \(S\), more frequent delivery).
Store replenishment →Omnichannel embedding
SFS is one of several fulfilment modes; full model optimises across DC / SFS / BOPIS / dark store.
Omnichannel fulfilment →BOPIS sibling
BOPIS uses store inventory too, but customer picks up rather than ships — different labour and shadow-price structure.
BOPIS →Strategic capacity planning
If SFS is a permanent channel, store labour and inventory should be designed for it — upstream decision.
Store location →Routing after assignment
Once assigned, SFS orders batch into delivery routes — logistics last-mile problem.
Delivery routing →Key references
Back to the retail domain
Ship-from-store sits in the Place × Operational cell — store inventory doubles as last-mile supply when walk-in shadow prices are respected.
Open Retail Landing