> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/picking/pick-job-target-time.md).

# Pick job target time

The target time is the time when an order should be picked up by a shipping provider, or the earliest time a consumer is expected to pick up the fulfilled order.​

So, there's the possibility to specify a date and time for each order. This information is supplied from a connected shop system, or our systems will calculate the target time.

{% hint style="warning" %}
It's not possible to (manually) change the target time after it has been calculated.
{% endhint %}

## Calculating order target time

### Ship-from-store

If no target time was supplied in the order, a check for [cutoff times](#cut-off-times)/pickup times of carriers at the facility is made. The system checks whether it's possible to fulfill the order (operationally) before the selected carrier arrives on that day. If this is the case, the target time equals the pickup time of the selected carrier on that day.

If it's not possible to fulfill the order before today's pickup time of the selected carrier, the target time is the next upcoming cutoff time of this carrier for which it can be guaranteed that the fulfillment took place beforehand.

In addition, this check includes the fulfillment times as well as the closing days of the facility. The [buffer time](#picking-fulfillment-buffer) is only considered within the defined fulfillment times of a facility.

#### Example 1

* Order has type ship-from-store and DHL as the selected carrier.
* DHL's pickup times within the facility is at 16:00 Monday-Friday.
* Fulfillment times at this facility is 09:00-18:00 Monday-Friday.
* No closing days were defined in this example
* [Fulfillment buffer](#picking-fulfillment-buffer) (for example, the amount of time that an employee needs to fulfill an order) is 2 hours
  * If an order was created at 13:30 on Monday the generated target time would be 16:00 on Monday.&#x20;
    * If you add 2 hours buffer to 13:30, it equals 15:30. This is before DHL's pickup at at 16:00, so it can be picked up on the same day. And the target time is always the time of the pickup of the carrier, so 16:00 on Monday.
  * If an order was created 14:30 on Monday the generated target time would be 16:00 Tuesday.
    * If you add 2 hours buffer to 14:30, it equals 16:30. This is after DHL's pickup at at 16:00, so it has to be picked up the next day. And the target time is always the time of the pickup of the carrier, so 16:00 on Tuesday.

#### Example 2

* Order has type ship-from-store and DHL as the selected carrier.
* DHL's pickup times within the facility is 11:00 Monday-Friday.
* Fulfillment times at this facility is 09:00-17:00 Tuesday-Friday.
* No closing days were defined in this example
* [Fulfillment buffer](#picking-fulfillment-buffer) (for example, the amount of time that an employee needs to fulfill an order) is 2 hours
  * If an order was created at 08:00 on Monday the generated target time would be 11:00 on Monday.&#x20;
    * If you add 2 hours buffer to 08:30, it equals 10:00. This is before DHL's pickup at at 11:00, so it can be picked up on the same day. And the target time is always the time of the pickup of the carrier, so 11:00 on Monday.
  * If an order was created 14:30 on Monday the generated target time would be 16:00 Tuesday.
    * If you add 2 hours buffer to 14:30, it equals 16:00. This is before DHL's pickup at at 11:00, so it has to be picked up the next day. And the target time is always the time of the pickup of the carrier, so 11:00 on Tuesday.

### Click-and-collect

If no target time was supplied in the order, the systems predict when the pick job is ready for pickup taking the [fulfillment buffer](#picking-fulfillment-buffer) as well as the [fulfillment times](/documentation/getting-started/facilities/managed-facilities.md#facilities-fulfillmenttimes) into consideration.

The target time is calculated by adding the fulfillment process time to the point of time when the pick job was created. The fulfillment process time is only considered within the defined fulfillment times of a facility.

#### Example 1

* Order has the type click-and-collect
* Fulfillment times at this facility is Monday-Friday 09:00-18:00
* No closing days were defined in this example
* [Fulfillment buffer](#picking-fulfillment-buffer) (for example, the amount of time that an employee needs to fulfill an order) is 4 hours
  * If an order was created 16:00 on Monday the generated target time would be 11:00 Tuesday.
    * If you add 4 hours buffer to 16:00, it equals 20:00, so this is out of the fulfilment times and it must be split within them. So, we take 2 hours buffer on Monday, which equals 18:00. Then add 2 hours buffer to 09:00 Tuesday, it equals 11:00. So, the target time is 11:00 on Tuesday.

#### Example 2

* Order has the type click-and-collect
* Fulfillment times at this facility is Monday-Friday 09:00-18:00
* No closing days were defined in this example
* [Fulfillment buffer](#picking-fulfillment-buffer) (for example, the amount of time that an employee needs to fulfill an order) is 4 hours
  * If an order was created 08:00 on Monday the generated target time would be 13:00 Monday.
    * The buffer can only start from 09:00 due to the fulfilment times. So, 09:00 plus the 4 hour buffer equals a target time of 13:00.

### Service jobs

If the order is connected to a service job or multiple [service jobs](/documentation/by-pillar/store-operations/services/service-jobs.md), the execution time of the service job(s) will be taken into account for the calculation of the target time by adding the execution time to the order time.

**Example**

An order was created 16:00 on Monday. The cumulated execution time of related service jobs is 80 minutes. So, the target time calcutoion would be based on 17:20 (16:00 plus 80 minutes).

### No target time

In cases where a target time can't be determined, the target time is set to `undefined`. This typically occurs when certain constraints prevent the calculation of a feasible fulfillment time. For example, when a manual facility assignment is triggered, but the newly assigned facility has no available fulfillment slot. In such cases, a target time can't be calculated and is set to `undefined` in the pick job.

### **Capacities**

Setting maximum capacities per day and per fulfillment slot can have an impact on the calculated target time of a pick job. In case there is no fulfillment capacity left before the carrier pick up time on the same day the order is placed, the target time is adjusted to the next free capacity slot and its corresponding pick up time.

Nevertheless, if the target time is defined within the order (hard target time), the target time is simply passed on.

In order to consider capacities, systems check for the next pickup time of the selected carrier which is reachable when the order is picked within the planned fulfillment slot. Only if the pickup time can be reached including free capacity this pickup time is selected as the new target time.

In addition to checking the capacity, systems also consider whether the task can be picked before the target time. In case the time at which the order was created plus the average picking duration exceeds the target time, the next upcoming slot is selected. If the target was supplied in the order it might happen that the order cann't be routed and so, gets the status `unroutable`.

**Example:**

* Order comes in on Monday 14:00
* Average fulfillment duration is 30 minutes
* Order should be fulfilled by DHL, DHL's daily pick up time is 16:00
* If we don't plan capacities (rating/fence is inactive) the target time would be Monday 16:00
* If we do plan capacities and the slot is planned < Monday 15:30 the target time would be Monday 16:00
* If we do plan capacities and the slot is planned, for example, Wednesday 15:00, the target time would be Wednesday 16:00
  * We use the starting point of the future capacity slot
    * If the starting point plus the average fulfillment duration is before pickup time (1) then pickup time (1) otherwise pickup time (2 (next target time))
    * If the date now is within the slot, we use date now + avg. duration < pickup time (1) then pickup time
* If our time triggered reroute function is active and the target time, without this feature active would be after the time triggered timeframe, the target time would be: Pick job created + set reroute timeframe
* If our time triggered reroute function is active and the target time, without this feature active would be before the time triggered timeframe and it can be met (pick job created + average fulfillment duration < pick job created + set reroute timeframe), the target time would be: carrier cutoff time, which can be met
  * e.g., 2 pm Pj created / 2 hours time to start picking / 30 min avg. FF duration / Carrier cutoff 3 pm -> target time would be 3 pm
  * e.g., 2 pm Pj created / 2 hours time to start picking / 3 hours! avg. FF duration / Carrier cutoff 3 pm -> target time would be 4 pm

## Time frame for future capacity planning

The time frame for future capacity planning setting ensures that systems don't occupy capacities that are too far in the future. In the setting, a limit can be set which defines how many days in the future capacities can be used and booked. This serves as the base for the capacity fence.

The value includes always the capacity of a calendar day. The value can be set as a tenant-wide default via API and/or via the Backoffice or for a specific facility. If one changes the default, only the facilities using the default value change - facilities which have their own value defined, are not changed (even if this value is the same as the default).

**Example:**

* Today is 14:00 on Monday
* Parameter is set to 3 days

→ the capacity until Thursday (including Thursday) can be used for planning.

{% hint style="info" %}
Capacities have an own collection within the database where one can find the already planned capacity for a slot. The collection is called **ocff-XXX-git/pre/prd.routing-v1-reservation-slot.**
{% endhint %}

## Cutoff times

The cutoff time defines the time point when parcels are usually picked up at a facility by a carrier. This time point can vary depending on the weekday as well as on public holidays. If affects same-day delivery eligibility and must align with the facility's fulfillment schedule.

You can define different cutoff times with fulfillmenttools:

* A ship-from-store cutoff time for a specific facility-carrier connection
* A tenant-wide default cutoff time
* A tenant-wide cutoff time for click-and-collect orders

These cutoff times, in combination with the concept of a lead time, allow to predict whether or not an incoming order can be fulfilled in time to be shipped via a certain carrier.

This must be set in the [facility-carrier connection](/documentation/by-pillar/advanced-order-routing/complex-routing-with-combinatorics/network-model/facility-connection.md).

## **Fulfillment buffer**

The fulfillment buffer is a timespan that represents the complete fulfillment process including picking and packing.

This buffer time can be defined on facility level via API and in Backoffice by users with the role Admin or Supervisor. An admin can also define a tenant-wide default fallback via API, which is initially set to 240 minutes.

In the final pick job, there's always a target time defined.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/picking/pick-job-target-time.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
