Local Pickup Options
local_pickup_options functions return a list of merchant-owned pickup
locations (store, warehouse, kiosk) that the customer can choose
instead of having the order shipped. Use it for:
- Buy-online-pickup-in-store (BOPIS).
- Curbside pickup at a specific retail address.
- “Pick up at our warehouse” for B2B customers.
pickup_point_options instead.
Manifest is honored; runtime dispatch is reserved. You may declare
local_pickup_options in your app.json and ship a .wasm today —
LaunchMyStore stores it, lints it, and surfaces it in the developer
portal. Wiring into the checkout shipping step lands in the
delivery-options release; until then, returned options are not yet
shown to customers. Build now for forward-compat — your function will
start firing once the consumer is enabled.Manifest
local_pickup_options apps.
WASM execution timeout: 1500ms (configurable via
WASM_TIMEOUT_LOCAL_PICKUP_OPTIONS).
Input
Output
pickupOptions: [] to opt out of offering pickup for
this cart (e.g. when the cart contains items not stocked at any pickup
location).
Example — Two retail locations, distance-sorted
Persistence
Selected pickup option is stored on the order atadditionalFields.localPickupOption:
When customers see what
The pickup options returned here are shown as a third grouping in the checkout shipping-step UI, alongside merchant zones (server-side) andshipping_rate function rates (app-side):
| Source | Group in checkout |
|---|---|
| Merchant shipping zones | ”Delivery” |
shipping_rate functions | ”Delivery” (mixed in with merchant) |
local_pickup_options | ”Pickup in store” |
pickup_point_options | ”Pickup at a parcel point” |
order_ready_for_pickup vs. order_shipped).
See also
- Pickup Point Options — carrier parcel lockers / partner pickup points.
- Shipping Rate — custom shipping rates alongside merchant zones.
- Input field selection — trim the input payload to just the address fields you read.