Delivery

You can create and modify the configuration of the Delivery Promise directly from your OneStock backoffice, by clicking on the “Delivery” page on the menu on the left.

The delivery promise is very powerful and gives you access to several level of configuration. You will need to describe the delivery methods you want to propose to your customers, the carriers and services you want to use, the delivery routes they offer and the operations and timings to prepare the orders.

Take a seat, we’ll guide you through the configuration pages! You will also find an additional page to illustrate how to use these for different use cases.

Draft version

When you land on the “Delivery” page, you will see that the information is read-only. That’s because the configuration displayed is the Live configuration, the one currently used by the Delivery promise API.

To do changes, you first need to create a draft. When you create it, the draft version will be a replication of the live version. You can apply all the changes you need on the draft, then test it and publish it. You can publish immediately or on a specific date and time. Once published, it will replace the live version.

This way, your changes won’t impact the live version until you decide. And you can easily evaluate the impact of your changes by comparing the live version of the delivery promise and the draft version.

Illustration of the Draft mode

Please note that all the modifications mentioned below must be done in Draft mode. To do so, create a draft if it doesn’t exist or modify the existing draft by clicking on the button in the top-right corner.

Delivery methods

This page lists all the delivery methods proposed to the customers. For example: 2-hour delivery (same day), Express (next day), Standard, Click&Collect, etc.

You will need to add a delivery method configuration for each combination of: a delivery method, a specific sales channel, specific destination(s).

For example: you may have a configuration for express delivery method, for your sales channel ecom-UK, to destination UK, that specifies that you want to use only “Royal Mail-Express” and “Parcel Force-Express” carrier services.

And you may have an additional configuration for express delivery method, for your sales channel ecom-UK, but to destination Europe-except UK, that allows to use only “UPS-Express” carrier service.

Add / update delivery method

When you create a new configuration, you first need to select a delivery type.

Illustration of the creation of a delivery method

There are 3 types of delivery methods:

  • Home Delivery: orders that will be handed over to a carrier and the carrier will take care of the delivery to the customer. It also includes deliveries to pick-up locations that are managed by the carrier.

  • Click & Collect: orders that will be collected by the customer in one of the stock location of the retailer (usually a store). The order is pre-paid and the stock may come from the collection location or from other places.

  • Reserve & Collect: orders that are not paid yet and that will be collected and paid by the customer in a specific store. Only the stock from this specific location will be used to fulfil the order. No transportation will be considered.

You will also need to specify the delivery method: it is the exact name that will be used when calling the Delivery Promise API. As explained in the example above, you may have multiple configurations for the same delivery method, so it doesn’t have to be unique.

You will then need to select the stock request that will be used to check if there is stock available in the different stock locations. It must be a detailed-stock request (not unified stock) as the delivery promise will have to check the stock in individual locations. You need to select a stock request that considers the appropriate buffers and stock reservations. Although, it can contain more stock locations than the ones that will be selected by the delivery promise calculation. The algorithm will filter those according to the other configurations we will do on the delivery promise.

Definition of the stock request for Delivery promise

Before calculating the delivery promise, OneStock will check if there is stock available overall (for each item). If there isn’t, it will reply immediately that the item is not available.

Therefore it will consider the total stock available in each geographical zone and apply the buffers and other rules of the stock request and also subtract the global reservations (reservations for orders that have not yet been assigned to a specific stock location).

If you want to avoid subtracting all the global reservations from each origin zone, your stock request used for Delivery Promise should be configured to consider all the stock locations rather than only the ones from the origin zone by setting use_requested_ids on the stock location request to false.

At the creation, you will also need to define a unique ID for this specific delivery configuration, meaning the combination of delivery method, sales channel and destination(s). For example: ecomUK_UK_standard.

Sales channel

You need to select a sales channel to which this configuration will apply. You must define the delivery methods available for each sales channel.

Destinations

You need all the destinations to where this configuration will apply. You might want to force the use of different carriers depending on the destination zone. In this case, you will need to have multiple delivery-method configurations.

The destinations are geographical zones defined in the “Zones” tab (see below).

Carriers

List the carrier and associated services that are allowed for this delivery configuration (delivery method, sales channel, destinations).

OneStock will only propose the carriers that serve the selected destinations. If you cannot find your carrier, check if a transportation route to at least one of these destinations exist for this carrier service.

Operations

Select here the operations that needs to be taken into account in the delivery promise calculation. There are several types of operations:

  • At start: these operations are executed immediately at the order creation, before any other type of operations.

  • Shipment: (not applicable to reserve&collect) operations to prepare shipments from the fulfilling stock location (to the collection store or to the delivery address), before the pick-up by the carrier.

  • Receiving in collection store: (applicable only to click&collect) operations to receive parcels in the collection store (when items have been shipped from another stock location).

  • Fulfilment from collection store: (not applicable to home delivery) operations to prepare orders from the collection store when items are fulfilled from the collection store stock.

The operations displayed here are the ones defined in the tab Operations.

Priorities

OneStock evaluates all the combinations for the delivery promise and then select the best one. You need to define here what criteria to consider to select the best option. It might be the fastest option, the cheapest transportation costs, the lowest carbon footprint or actually any metric that is defined in the delivery promise. This is a list of sorting criteria, it applies the first criteria and switches to the second one in case of equality on the first one, and so on.

Carrier Network

The delivery promise is based on the configuration of the carriers' networks. You will need to define which carriers will be used to ship orders (to delivery address or to collection store). Any carrier can be configured, including internal transportation fleet, they don’t need to be integrated to OneStock.

Carrier

To start defining the carrier’s network, you need first to create the carrier. Click on the “Carrier” tab and then on the button “Add carrier”.

Specify its:

  • ID: it will be used in every communication with the external systems,

  • Name: it will be displayed in the backoffice,

  • Image: it will be displayed in the backoffice.

After creating the carrier, you can create new transportation routes and apply restrictions.

The carrier may provide multiple service levels. Each service is configured in OneStock under the same carrier but has its own definition of the transportation routes. You can add new service levels when adding a new route.

Restrictions

Restrictions can be configured for any service level proposed by the carrier. Every time you specify a restriction, you can select to which service it apply.

Restrictions specify which items can not be managed by the carrier for the selected service(s). You can indicate specific item features (for example: hazardous items), or specific weight or dimensions of the items.

Routes

The transportation routes define the carrier network. Each route is a link between an origin zone and a destination zone supported by a specific carrier service.

The origin zone and destination zone are geographical zones that are defined separately in the backoffice. You will find information about zones and how to define them below in this page.

Each transportation route will define the transit time, the associated schedules (for pick-up, transit and delivery), the costs and other metrics (carbon footprint, shipping fees…) and the constraints in terms of dimensions and weights.

The level of detail of the transportation network you define must be consistent with these characteristics. You can define your zones at the country level, region level, or even city level if you need to do so. You just need to define the zones according to this.

Definition of a route

A route is a transportation from an origin zone to a destination zone, with a specific service level of a specific carrier.

You need to define 3 elements on the route, described below:

  • Transit time

  • Costs

  • Planning

Transit time

The transit time defines the total transportation time from the origin to the destination. This transportation time will be starting from the pick-up time and will be counted only during the transportation time of the carrier. The delivery will then occur on the next available delivery time slot. The pick-up time, transportation time and delivery time are defined on the planning tab (see paragraph below).

The transit time is actually an interval of a minimum and a maximum transportation time.

Example: if the pick-up is done on the Saturday at 6pm and there is no transportation on Sunday, a transit time of 12 hours will be ready for delivery on Monday at 4am. If the next delivery slot starts on Monday at 8am, the delivery will be done at that time.

The same rule applies for the calculation of the minimum arrival time and the maximum arrival time.

Costs

The “Costs” tab is very important as it not only defines the costs but also all the constraints that will apply on the shipments.

Many different metrics can be configured in the cost grid of the route: shipping fees (paid by the end customer), transportation costs (paid to the carrier), carbon footprint, and any other custom metric.

When you arrive on the “Costs” tab for a new route, you need to add a cost table. You can optionally add a constraint on the order price, in case you want to apply different shipping fees (or other metric) depending on it.

For example: you can define a cost table with a constraint [Order price < €50] and another one with a constraint [Order price ≽ €50]. Note that you can duplicate a cost table, so it is advised to create and complete a cost table for the first order price range and then duplicate it and adjust it.

After creating the cost table, you must add at least one criteria. Each will be a row on the cost table, with specific constraints on the weight and dimensions of the shipment and associated metrics (transportation costs, etc.). You can add multiple criteria, in order to define different metrics based on the weight or dimensions of the shipment.

For example: the transportation cost and carbon footprint may vary depending on the weight of the shipment. You can define a criteria for shipment < 1kg with a transportation cost of £5 and another criteria for shipment ≽ 1kg with a transportation cost of £8.

You must also define all the constraints that apply on the shipment such as the maximum dimensions accepted by the carrier.

If a shipment doesn’t match with any criteria in the cost table, the delivery promise will understand that this carrier service cannot be used for this shipment. It will look for other options.

You can easily duplicate a complete cost table, in order to apply a different constraint on the order price.

You can also do mass updates by selecting several or all rows in the cost table and clicking on the Modify button. Then, you can edit all the fields and apply the changes. The fields that have the same value on all the selected rows are filled in and the fields that don’t have the same value on all the selected rows are indicated with a dash.

To delete a row in the cost table, you must click on it and click on the Delete button in the bottom-left corner.

Planning

In the Planning tab, you need to define the 3 calendars that will apply for this route: pick-up calendar, transit calendar and delivery calendar.

In order to facilitate maintenance and updates, you can just select existing calendars, as the calendars are expected to be shared across multiple routes. If you want to use a new calendar, you must first create it.

To create a calendar, you must click on the Calendar button on the top-right corner.

After defining the calendars you need, you can select them for your route. The calendar displayed on the page is updated to let you see the actual schedule that applies.

A dropdown allows to change the timezone used for display. This timezone is just for display purpose but doesn’t affect the calendar.

Please refer to the paragraph explaining the Transit time to understand how the calendars impact the calculations of the ETA.

Zones

This page lists all the geographical zones that have been defined and allows creating new ones.

When you create a zone, you must define:

  • The name of the zone (it will be displayed on the screens)

  • The ID of the zone (technical ID, used in the API messages)

  • An optional comment to give information about this zone

  • A zone type:

    • Unitary: a zone defined by the countries, the zip codes, the timezones and/or the stock locations. You use only some of these criteria to define the zone and the stock locations can be either included or excluded of the zone. For example: you can define a zone for US, zip codes starting with “40”, timezone “America/Kentucky/Louisville” and exclude the warehouse A.

    • Group: a zone defined by a list of included Unitary zones, minus a list of excluded Unitary zones.

Unitary Zone

An unitary zone is defined by one or more of the following :

  • Countries

  • Included and excluded zipcodes

  • Timezones

  • Included or excluded stock locations

For example: you can define a zone for US, zip codes starting with “40”, timezone “America/Kentucky/Louisville” and exclude the warehouse A.