Understanding Delivery Promise operation
This feature is in closed beta, meaning only selected customers can access it. If you're interested in implementing it, please contact our Support team.
This guide explains how Delivery Promise operates, covering:
- Hooks: Discover the hooks used to manage user location, fulfillment options, and Delivery Promise workflows.
- Filter options: Learn how shoppers can filter products by delivery or pickup methods.
- Location priority: Understand the order and logic used to determine the shopper's location for accurate delivery estimates.
To learn how to implement Delivery Promise in your store, see the guide Implementing Delivery Promise.
Hooks
This feature introduces the following hooks as part of the regionalization and location workflow:
useGeoLocation
: Uses the browser's geolocation API or other client-side methods to auto-detect the user's location when not provided.useRegion
: Accesses or updates the user's region information, such as postal code or location, and manages region validation flows.useRegionModal
: Handles modal display logic for region selection, especially when the location input is mandatory.useDeliveryPromise
: Manages all logic for querying, displaying, and updating delivery availability filters and states.
Filter options
Delivery Promise offers shoppers two product filtering options:
- Global filters: Apply to all store navigation.
- Product List Page (PLP) or search page: Apply only to the current page the shopper is viewing.
Learn more about filter usage and user flows in the Delivery Promise Figma Community page.
Global filters
Global filters remain active across all user navigation and are applied to all product searches until they change or are cleared.
Shoppers can filter available products globally using the Filter by store, which displays only products available for pickup at a specific store. This filter shows all available pickup points within a 50 km pickup radius configured in Checkout. The number of pickup points displayed is unlimited.

PLP or search page filters
In PLPs or search pages, the shopper may have the following options to filter:
- Deliver to: Displays available products according to the shopper's location.
- Pickup at: Displays the store set in the global pickup point filter, or the one closest to the shopper's location. To change the store set in
Pickup at {storeName}
, the shopper can click on it and select a new store in the modal that opens. This filter shows all available pickup points within a 50 km radius for pickup configured in Checkout. The number of pickup points displayed is unlimited. - Pickup nearby: Displays products available for pickup at nearby stores. This filter shows up to 40 pickup points within 10 km of the shopper's location.
- Pickup anywhere: Displays products available for pickup at any participating store within the merchant's network, rather than restricting results to a selected pickup location or geographic proximity. It's mainly used by B2B stores.

Understanding location priority
To provide accurate Delivery Promise estimates, FastStore projects determine user location based on the following priority:
- Logged-in user's address: If the user is logged in and has a saved address, this information is used.
- User-provided location: If the user is logged in but doesn't have a saved address, or isn't logged in but provides their location, like a postal code, this data is used.
- Default postal code: If the user hasn't provided a location, isn't logged in, or has no saved address, we check if the merchant has configured a default postal code for all buyers. Learn to do so in Defining a default postal code.
- No postal code (not required): If no postal code is provided and not required, products are displayed without using Delivery Promise.
- No postal code (required): If no postal code is provided when required, a modal is displayed that the buyer can't close until a postal code is entered. To make the postal code required, open your
discovery.config.js
file and change themandatory
field in thedeliveryPromise
object totrue
, as shown in the Default settings section.
To better understand how this flow works, see the following diagram: