Display a delivery date on a product detail page, cart, and checkout
Show customers exactly when their order will arrive, before they buy. Displaying an expected delivery date at every step of the shopping journey reduces uncertainty, builds purchase confidence, and cuts down on “Where’s my order?” support tickets. Shippo Estimate returns an ML-poweredestimated_delivery_date_utc for each service level, so you can surface a real calendar date, not a vague transit window, wherever your customer sees shipping options.
How it works
The Estimate API is a standalonePOST /v2/estimates endpoint. It returns ML-powered predicted delivery dates across carriers and service levels. It does not return pricing. For use cases that require both delivery dates and rates, call POST /v2/estimates and POST /shipments separately and join the results on servicelevel.token.
Call POST /v2/estimates with the origin ZIP, destination ZIP, parcel dimensions, and the planned ship date. The response includes a predictions array with one entry per service level, sorted fastest first. Each entry contains estimated_delivery_date_utc, which you convert to the destination’s local timezone before displaying.
You can call this endpoint at multiple points in the shopping flow:
- Product detail page Use the customer’s saved or estimated destination ZIP to show an expected delivery range next to each service option.
- Cart Re-call the endpoint when the customer confirms their shipping address to refresh the dates.
- Checkout Display the selected service level’s predicted delivery date in the order summary before the customer confirms payment.
Request
Create an Estimate with the origin zip and the customer’s destination zip. The estimate object is returned.Response
Thepredictions array returns one entry per supported service level, sorted fastest first.
Display example
estimated_delivery_date_utc is in UTC. Always convert to the destination timezone before displaying.
The Estimate API does not return pricing. To display rates alongside delivery dates, call
POST /shipmentsseparately and join on servicelevel.token. See Power rate shopping decisions for a combined flow example.