Skip to main content

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.
For your own retail locations / warehouses use 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

Return 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. Then allowed_hosts: ["<your-domain>"] in the manifest.
  • Trim the input with inputFields so the same input → same output, letting LaunchMyStore’s per-cart output cache do the work.
Both reduce WASM runtime and stay under the 2000ms timeout.

Persistence

The options your function returns are computed and merged into the verifyCart response only — they are not persisted to the order. There is no additionalFields.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