3PL & Fulfillment

How do I offer BOPIS and ship-from-store on Shopify Plus without selling the last unit a store needs for walk-in customers?

Offering buy-online-pickup and ship-from-store while protecting stock your stores need for walk-ins.

Last updated September 16, 2026

A store is not a DC. Walk-in demand is the job. Pickup and ship-from-store are privileges you grant on leftover sellable units. If Shopify publishes store on-hand as if it were warehouse available-to-sell, the last floor unit becomes a parcel and a disappointed shopper.

Split sellable from display and damaged

Split the pile the way the floor already thinks. Sellable is what a customer can take home or a picker can bag. Display sits on a mannequin or in a case. Damaged is not for sale. Only sellable should publish, and even that number is too high for the website. Reserve units when the BOPIS cart is placed, not when the customer arrives. If any line is missing at that store, do not promise pickup. Transfer the gap from the DC, or refuse. Do not let the associate raid display. A continue-selling flag on pickup is how you promise a bag you cannot pack. Reserve at cart or do not offer the store as a pickup location for that SKU.

Cap ship-from-store with a floor-min

Cap ship-from-store. A store that can take unlimited web orders will empty the wall for people who drove there. Give each store a unit cap, a daily order cap, or a floor-min that never publishes. Publish sellable minus reserved pickup minus that floor-min, never raw on-hand. Hero SKUs need a fixed hold so the last size stays on the wall. Do not also hide the same units in the POS, or the associate and the website will disagree. POS and the site have to read the same sellable number after the hold.

Replenish stores on transfer orders

Replenish the store from the DC on a transfer order. Reserve at the DC, move in-transit, receive at the store, then raise store sellable. Do not publish DC incoming as store available, and do not fold store on-hand into warehouse ATS. A pooled number lets the site sell a boutique's last size while the DC is fat, then routes ship-from-store into a shop that needed that unit for Saturday. In-transit is in neither building. Count the store after events, after a transfer receipt, and whenever display and sellable have been mixed.

Reconstruct the missing walk-in unit

If the cart is not fully in stock at that store, offer ship-to-store from the DC or kill the pickup promise. When a walk-in says the website stole the last unit, reconstruct that store's sellable, reserved, and published numbers for the SKU and time. Do not start with the DC total. The missing unit is almost always a publish of display, an uncapped SFS order, or a BOPIS reserve that never happened at cart. Walk-in is the job. Pickup and SFS spend what is left.

Run this with AI

Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.

You are the retail-ops lead for a Shopify Plus brand with a DC and stores doing BOPIS and ship-from-store.
Here is: sku, location (dc / store), on_hand, sellable, display, damaged, reserved_bopis, sfs_orders_today, sfs_cap, walkin_floor_min, current_published_qty.
[paste]

Produce:
1. Publishable qty per store (sellable minus reserved pickup minus the walk-in floor-min).
2. Stores that would go below floor-min if SFS is uncapped.
3. Rows that must not publish (display, damaged, DC incoming, store on-hand mixed into warehouse ATS).
4. Transfer recommendations from DC to store so pickup can be honored without raiding the floor.
A store is not a DC. Flag anything that would sell the last walk-in unit.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.