Pickup Point Options
pickup_point_options functions return a list of carrier-operated
parcel lockers and partner pickup points (DHL Packstation, UPS Access
Point, InPost Paczkomat, La Poste Pickup, etc.) that the customer can
choose as a delivery destination.
Use it when:
- You integrate with a carrier API that exposes nearby drop-off lockers.
- You want to offer cheaper “last mile” parcel delivery without home signature.
- Some markets (PL, FR, DE, NL) where parcel-locker delivery is the norm.
local_pickup_options instead.
Dispatch is live; the customer-facing UI is pending. Installed
pickup_point_options functions fire on every cart verification
(consuming your daily execution quota), and their results are returned in
the verifyCart response as pickupPointOptions[]. What’s still pending
is the checkout UI consumer that lets the customer pick one of these
points — until it ships, returned options are not yet shown to
customers.Manifest
inputFields is an object of booleans (or nested objects), never an
array — each leaf must be true/false, or install validation fails with
a 400. See Input Fields.
Per-shop cap: 5 active pickup_point_options apps.
WASM execution timeout: 2000ms (configurable via
WASM_TIMEOUT_PICKUP_POINT_OPTIONS). The default is higher than
local_pickup_options because these functions typically call out to a
carrier API — see Network access.
Input
There is no
cart.cost, no countryCode / postalCode, and no
latitude / longitude on the shipping address — country arrives as
country and the postal code as zip. If your carrier lookup needs
coordinates, geocode zip + city via your own service.Output
pickupOptions: [] if the carrier returned no points in range —
the customer will fall back to regular shipping zones.
Example — DHL Packstation lookup
Caching carrier lookups
Carrier point APIs are usually slow (300-800ms) and rate-limited. Two strategies:- Cache inside your app server — proxy the carrier through your own
HTTPS endpoint and cache aggressively keyed by
country+zip. Thenallowed_hosts: ["<your-domain>"]in the manifest. - Trim the input with
inputFieldsso the same input → same output, letting LaunchMyStore’s per-cart output cache do the work.
Persistence
The options your function returns are computed and merged into the verifyCart response only — they are not persisted to the order. There is noadditionalFields.pickupPointOptions field, and the customer’s
shipping address is not rewritten to a carrier point. As noted at the top
of this page, the checkout consumer that would let a customer select one
of these points ships in the delivery-options release.
See also
- Local Pickup Options — merchant- owned in-store / curbside pickup.
- Shipping Rate — custom shipping rates.
- Network access — calling carrier APIs from inside a function.