GET Returns delivery date estimates for the requested product.
GET /organizations/{organizationId}/delivery-estimates
Operation ID: getDeliveryEstimates. Security: ShopperToken (sfcc.shopper-delivery-estimates, sfcc.shopper-standard); ShopperClientContextToken (sfcc.shopper-delivery-estimates, sfcc.shopper-standard).
Returns delivery date estimates for the requested products at a destination postal code. Currently limited to one product per request. For each requested product, the platform enumerates all applicable site-level shipping methods. Estimates are returned only when the sfcc.app.shipping.estimate Commerce Apps hook is bound to a provider. If no provider is bound, the platform returns no estimates.
Each entry in the response corresponds to one requested product, and contains one entry per applicable shipping method. Methods for which the provider returned an estimate carry a deliveryWindow. Methods for which the provider could not return an estimate include a nonDeliverableReason. An empty productDeliveryEstimates array means the platform has no estimates for any of the requested products, for example, no applicable shipping methods or the provider returned no results. In this case, clients should hide the delivery estimation block.
Parameters
organizationId(path, OrganizationId, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f_ecom_' followed by a 4-character realm identifier and a 3-character instance type identifier.Example
f_ecom_zzxy_prdproductIds(query, array of ProductId, required, style: form, explode: false) The IDs of the products for which to retrieve delivery estimates. Each product must be online and site-assigned. Currently limited to one ID per request; multi-product support is reserved for a future release.
Minimum items: 1. Maximum items: 1.Example
apple-ipod-shuffleExample
[ "apple-ipod-shuffle" ]postalCode(query, string, required) The destination postal code for which to compute delivery estimates. Format depends on the destination country (for example, a 5-digit ZIP for US, a 6-character alphanumeric code for CA).
Minimum length: 1. Maximum length: 20. Example:10001.Example
10001countryCode(query, CountryCode, required) The destination country as an ISO 3166-1 alpha-2 country code (for example,US,CA,GB). Required for unambiguous resolution of the destination — postal codes are not globally unique.Example
USsiteId(query, SiteId, required) The identifier of the site that a request is being made in the context of. Attributes might have site specific values, and some objects may only be assigned to specific sites.Example: SiteId
RefArchsfdc_usid(header, string (uuid)) A unique shopper identifier (USID) for tracking client context. Used with endpoints secured with ShopperClientContextToken. This header is required for all endpoints secured with ShopperClientContextToken.
Example:550e8400-e29b-41d4-a716-446655440000.personalized(query, string) Controls whether personalization is applied to the response. When set tonone, the server skips applying personalization to the response.
Allowed values:none. Example:none.sfdc_shopper_context(header, string) Shopper context information (for example clientIP, sourceCode, and customQualifiers) passed in from a trusted backend application.
Responses
- 200
Success
Media type:
application/json. Schema:DeliveryEstimatesResult.Example: GetDeliveryEstimatesResponseExample Happy path — one product with two shipping options, both deliverable.
{ "productDeliveryEstimates": [ { "productId": "apple-ipod-shuffle", "destination": { "postalCode": "10001", "countryCode": "US" }, "shippingOptions": [ { "shippingMethodId": "GroundShipping", "name": "Ground", "description": "Standard ground shipping", "carrier": "UPS", "price": 5.99, "currency": "USD", "deliveryWindow": { "startAt": "2026-04-30T14:00:00Z", "endAt": "2026-04-30T18:00:00Z" }, "orderCutoffAt": "2026-04-27T14:00:00Z" }, { "shippingMethodId": "TwoDayShipping", "name": "Two-Day", "description": "Expedited air shipping", "carrier": "UPS", "price": 12.99, "currency": "USD", "deliveryWindow": { "startAt": "2026-04-28T09:00:00Z", "endAt": "2026-04-28T17:00:00Z" }, "orderCutoffAt": "2026-04-26T18:00:00Z" } ] } ] }Example: GetDeliveryEstimatesPartialResponseExample One shipping option is deliverable, another is not. Methods that cannot deliver for a particular reason are kept in the response with `nonDeliverableReason` populated.
{ "productDeliveryEstimates": [ { "productId": "apple-ipod-shuffle", "destination": { "postalCode": "10001", "countryCode": "US" }, "shippingOptions": [ { "shippingMethodId": "GroundShipping", "name": "Ground", "description": "Standard ground shipping", "carrier": "UPS", "price": 5.99, "currency": "USD", "deliveryWindow": { "startAt": "2026-04-30T14:00:00Z", "endAt": "2026-04-30T18:00:00Z" }, "orderCutoffAt": "2026-04-27T14:00:00Z" }, { "shippingMethodId": "OvernightShipping", "name": "Overnight", "description": "Priority overnight shipping", "carrier": "UPS", "nonDeliverableReason": "INSUFFICIENT_INVENTORY" } ] } ] }Example: GetDeliveryEstimatesEmptyResponseExample No estimates available — for example, when the provider returned an empty result.
{ "productDeliveryEstimates": [] } - 400
Bad Request
Media type:
application/problem+json. Schema:ErrorResponse.Example: GetDeliveryEstimatesBadRequestResponseExample A required parameter is missing or has an invalid value.
{ "title": "Bad Request", "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/validation", "detail": "The 'postalCode' parameter is required." } - 401
Your access token is invalid or expired and can’t be used to identify a user.
Media type:
application/problem+json. Schema:ErrorResponse.Example: UnauthorizedExample
{ "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized", "title": "Unauthorized", "detail": "Unauthorized request" } - 404
Not Found
Media type:
application/problem+json. Schema:ErrorResponse.Example: GetDeliveryEstimatesProductNotFoundResponseExample The supplied `productId` does not resolve to an online, site-assigned product.
{ "title": "Product Not Found", "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/product-not-found", "detail": "No product with ID 'apple-ipod-shuffle' for site 'SiteGenesis' could be found.", "productId": "apple-ipod-shuffle", "siteId": "SiteGenesis" }