Skip to main content
developer

Implementing estimated delivery date

By showing an estimated time of delivery, you are answering one of the most common questions customers shopping online are asking: when will my order arrive?

There are a few things you need to bear in mind when setting this up:

Your internal lead time is vital for a correct estimated delivery time

To use the lead times you receive from our APIs, you need to account for your own lead times as well and add them to the query as the shipping date and time.

If you do not provide the date and time for shipment handover to Bring when querying the Shipping Guide API, the response will assume the query time stamp is the shipment handover. E.g.: date = current date and time = current time stamp - the result will be an overly optimistic ETA in checkout.

Calculate your your shipping date and time before querying Shipping Guide.

1 Order placed before cut-off time

In the first case, the query to shipping guide will use today as shipping date, and 21:00 or blank as shipping time. A typical Bring lead time for packages to larger cities is one day, and the end user will be shown "tomorrow" as their delivery estimate.

Cut-off time can also be shown to the end user, both for providing transparency into what they can expect, and how they can benefit from ordering now, instead of later.

2 Order placed after cut-off time

In the second example, the same webshop gets an order at 19:17. Orders placed after 17:00 will not be packed in time for the pickup the same day. They do not need to be prioritised in the warehouse, and will be picked the next day. An additional day is added to the webshop lead time.

In this case, the query will set date = tomorrow’s date. With the same Bring distribution lead time, the end user will be shown "2 days" as their delivery estimate.

1
Order placed
14:32
Cut-off
17:00
Warehouse lead time
4 hours from order placement
Bring pickup
21:00
Bring distribution lead time
1 day from goods collected
= ETA 1 day
2
Cut-off
17:00
Order placed
19:17
Bring pickup
21:00
Warehouse lead time
4 hours from order placement
Bring pickup
21:00
Bring distribution lead time
1 day from goods collected
= ETA 2 days
A webshop with a default lead time of 4 hours from order placement has a warehouse lead time of 0 days. This means that orders placed before cut-off at 17:00 will leave the warehouse on the same day with the last Bring pickup at 21:00.

Internal lead time as min-max values

While we recommend having as precise estimated delivery time as possible, we understand that sometimes, a range is needed to account for uncertainties or large volumes. By configuring internal lead time from minimum to maximum, you get this flexibility.

  • If the value for both minimum and maximum lead time is equal, (e.g.: 0–0 days) you are able to present an exact estimated delivery date in checkout.
  • If the value for minimum and maximum lead time differ (e.g.: 1–2 days), you should provide the user with a range instead of exact date.

For exact date, use the expectedDeliveryDate response from shipping guide, for a range, use workingDays.

Examples of different ways to show ETA in checkout

Estimated time of arrival

1 Ask the user for their address and postal code

Some postal codes are split into several delivery zones, which impacts lead time for parcel to mailbox and home delivery. The general rule is that population hubs will have more frequent delivery than the rest of the postal code.

Because of this, we recommend that you query our APIs with both postal code and address.

There will still be instances where it is not possible to accurately provide a lead time, for example if the address is misspelled. You will then receive the following warning in the shipping guide response.

"warnings": [
  { 
    "code": "ADDRESS_NOT_MATCHED",
    "description": "Recipient address can't be matched. Expected leadtime has been calculated based on postal code only, and might therefore be incorrect."
  }

If this code is received, the estimate is the default for the postal code, which can be used for showing an estimated delivery time, but you should not allow the customer to select a specific date, as the returned alternate delivery dates might be wrong for the actual delivery address.

2 Show estimated delivery time as a range

When you have uncertain lead times, it is recommended to show the estimated delivery day as a range (see "Configure internal minimum and maximum lead time" above).

In this example, the internal lead time might be 0–1 days. The min and max values of internal lead time should be added to Bring’s workingDays variable from Shipping Guide.

3 Estimated time (hh:mm) package will be ready for pickup

For the Pickup Parcel service, in addition to showing estimated day of arrival, you can show the estimated time when the parcel will be ready for pickup at the pickup point location. This service is based on machine learning and is kept continually updated.

Use the estimateddeliverytime query parameter to get the delivery time. You can send in a list of pickup locations with the pickuppoints parameter to get estimated delivery time for each individual pickup location.

4 Showing estimated delivery time for services, with selectable date

Home delivery has the option to order a specific date of delivery. For these kind of services, you may show a from value for the estimated time in the service description, to give users a hint that they may select other options when exploring the shipping method.

5 Displaying alternative delivery dates

A table or drop down are good ways to allow users to select the delivery date that fits their needs the best. You should also show the delivery time window to make the package journey transparent for the customer.

We recommend presenting five possible delivery dates in the checkout. Pricing the options differently may help offsetting any extra costs for expedite handling in your warehouse.

Use the following parameters to retrieve the recommended delivery dates for home delivery in Shipping Guide API:

"withUniqueAlternateDeliveryDates": true, //removes duplicate alternatives
"numberOfAlternativeDeliveryDates": 5 // recommended max value to display