> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryoto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Last-mile delivery in OTO FLEX

> Complete deliveries in the OTO Flex app, contact the customer, share live tracking, handle failed delivery attempts and optimize routes.

> [!NOTE]
>
> **Where to find it:** OTO FLEX → Orders → Processing Orders — [Open in OTO ↗](https://app.tryoto.com/oto-flex)

The last stage, and the only one the customer sees. Everything here is either about completing the delivery or about handling the fact that a meaningful share of attempts do not complete.

## Completing a delivery

### Scan and deliver

The driver scans the parcel at the door and marks it delivered. The scan is what stops the wrong parcel being handed over on a multi-stop route.

### Proof of delivery

**Proof of Delivery** offers **four** options — twice as many as pickup, because at the door there is a counterparty whose identity can be verified.

| Option | What it proves |
| - | - |
| **Photo** | That the parcel arrived, and in what state. It does not prove *who* received it. |
| **OTP** | A one-time code the customer reads out. This is the one that proves the right person took delivery. |
| **Photo and OTP** | Both. Condition and identity, for high-value goods and COD. |
| **Barcode** | A scan at the door — precise about which parcel, useful on a multi-stop route with similar boxes. |

![Proof of Delivery options](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/flex-8-proof-delivery.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=56b3db4bba01fbbf48ec1a4ced3e3b14)

Fig. 1 — OTP and Photo and OTP exist only on the delivery side. Pickup offers Photo and Barcode alone.

> [!TIP]
>
> **A photo is not a signature**
>
> A photo on a doorstep proves something was left somewhere. **OTP** proves it was handed to someone who could produce the code — which is the difference that matters in a “never received it” dispute, and the reason to use **Photo and OTP** on anything valuable or collected in cash.

**Force Proof of Delivery** makes it mandatory — verbatim: *“When you open force proof of delivery drivers cannot deliver an order without proof.”*

A third toggle, **Force Driver Delivery Note**, goes further: *“When the Driver Delivery Note is enforced, the driver will be required to enter a delivery note before updating the order as delivered.”* A note is free text, so it captures the thing neither a photo nor a code can — left with the neighbour, handed to the receptionist, customer refused one item.

> [!TIP]
>
> **Forcing has a cost**
>
> Every forced field is a few seconds at every door, and drivers route around friction. Force proof where disputes are expensive — high-value goods, COD — rather than everywhere by default.

## Talking to the customer

### Call or text from the app

The driver contacts the customer from within the app, without the customer's number being exposed as a phone number they keep.

### Predefined messages

**OTO FLEX → Configuration → Predefined Messages** holds the templates a driver can send with one tap — *on my way*, *five minutes away*, *unable to reach you*. The product describes the mechanism precisely:

> “Create messages for drivers to send via WhatsApp in OTO Flex. Drivers can select a message from a dropdown within an order, and WhatsApp will open with the chosen message ready to send.”

Each template takes a **Title** — what the driver sees in the dropdown — and a **Message** of up to **4,096 characters**. **Sort Rules** orders the dropdown, so the message used forty times a day sits at the top rather than wherever it happened to be created.

![Creating a predefined message](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/flex-12-predefined-msg.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=0751a4db4d7f1466c4d90a76dc820bca)

Fig. 2 — The placeholder is the feature worth noticing: “Type ‘/’ to check the list of the saved fields that you can use.”

> [!TIP]
>
> **Merge fields make the template personal**
>
> Typing **/** in the message body inserts a saved field, so a template can carry the customer's name and the order number without the driver typing anything. That is the difference between a message that reads as a form letter and one that reads as though someone sent it.

> [!NOTE]
>
> **It opens WhatsApp, it does not send**
>
> The driver picks a template and WhatsApp opens with the text ready. The driver still presses send, and can edit first — which keeps a person in the loop and makes the template a starting point rather than an automation. Worth knowing when you write them.

> [!TIP]
>
> **Why templates rather than free text**
>
> Consistency and safety. Templates keep tone predictable, keep the message in the customer's language, and keep a driver from improvising something the brand would rather not have sent.

### Contact restricted outside the delivery window

Drivers are blocked from contacting a customer outside a predefined range. It protects customers from calls at inconvenient hours and protects the merchant from a driver using order contacts for anything other than the delivery.

## Live tracking for the customer

The customer follows the delivery on a map in real time. This is the most visible benefit of running a fleet: it is the experience people associate with food delivery, and it is rarely available on a carrier shipment.

![The customer tracking page](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/flex-13-tracking-page.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=ccf94ddf0e19c8ffe15adf15905ad385)

Fig. 3 — Order number, current status with its timestamp, both ends of the trip, and the driver — on one page, with a language selector.

| Panel | What the customer sees |
| - | - |
| **Order Number** | So they know they are looking at the right delivery. |
| **Status** | The current state with the time it changed — *Collected*, and when. |
| **Trip Details** | **Pickup** and **Drop-off** addresses in full, marked green and red. |
| **Courier Information** | The driver, by name and photo. |
| **Language selector** | The customer picks the language rather than inheriting the merchant's. |

> [!TIP]
>
> **Naming the driver is the point**
>
> A carrier tracking page gives a customer a status and a number. This one gives them a person — which is what turns *where is my parcel* into *I can see who is bringing it*. It is also why the driver **Image** field on the driver record is worth filling in.

The page carries your [notification branding](https://docs.tryoto.com/modules/customer-notification/overview.md) and shows the **Fleet Name** set in fleet settings rather than a carrier's, so a merchant delivering with their own riders presents it as their own service.

## When delivery fails

### Custom failure reasons

Failure reasons are defined by you, in **Settings → Advanced → Reason Settings** — the same list that governs hold reasons. Structured reasons rather than free text are what make failure reportable: *customer not home* and *address not found* call for completely different fixes, and you cannot tell them apart in a text field.

### Multiple warehouse or terminal visits

An order can pass through more than one facility on its way — a hub, then a local terminal, then the customer — with each visit tracked as part of one order's journey rather than as separate shipments.

### Reverse shipments

Drivers collect from customers as well as delivering to them, so a return is a fleet task like any other. It can be a collection on its own or picked up on the same visit as a delivery, which is the efficiency an exchange depends on. See [Returns receiving](https://docs.tryoto.com/modules/return-management/returns-receiving.md) for what happens next.

## Route optimization

Up to **20 orders** can be optimized in one request, using the Google API key configured in fleet settings. Larger rounds are planned in batches — see [Planning](https://docs.tryoto.com/modules/oto-flex/planning.md).

## Related

* [Customer Notification](https://docs.tryoto.com/modules/customer-notification/overview.md) — the tracking page, the feedback page and the failed-delivery page.
* [Return Management](https://docs.tryoto.com/modules/return-management/overview.md) — what a collected return becomes.
* [Fleet management](https://docs.tryoto.com/modules/oto-flex/fleet-management.md) — driver performance, measured on these outcomes.


## Related topics

- [OTO FLEX: delivery with your own drivers](https://docs.tryoto.com/modules/oto-flex/overview.md)
- [Order sync: how orders get into OTO](https://docs.tryoto.com/modules/omnichannel-oms/order-sync.md)
- [Create shipments, print labels and track parcels](https://docs.tryoto.com/modules/shipping-management/shipping-and-tracking.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.