Skip to main content

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.
For carrier-operated parcel lockers / partner pickup points (e.g. DHL Packstation, UPS Access Point) use 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

Per-shop cap: 5 active local_pickup_options apps. WASM execution timeout: 1500ms (configurable via WASM_TIMEOUT_LOCAL_PICKUP_OPTIONS).

Input

Output

Return an empty 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 at additionalFields.localPickupOption:
The shipping address on the order is set to the merchant location address so fulfillment / tax / invoicing flow downstream as if it were a standard ship-to order.

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) and shipping_rate function rates (app-side):
SourceGroup 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”
The customer picks one. The chosen group determines which post-purchase emails the merchant sends (order_ready_for_pickup vs. order_shipped).

See also