Fired when a driver's action causes ETAs to be recomputed on a published or live route
Overview
The route.eta_updated event is triggered when the etas on the route gets updated. ETA updates happen as a result of driver running ahead of or behind schedule, arriving at stop, departing a stop, marking an order for re-attempt or attempting a stop out of sequence.
Each route that has an updated ETA generates its own webhook payload.
The HTTP request body is similar to that of Route Published but the timeline reflects the live state of the route with Actual ETAs for completed stops and new updated ETAs for upcoming stops.
Topic Name
route.eta_updated
Request Headers
content-type: application/json
x-routific-signature: v0=96f75bab20672af9db0549863fe1b2c6feagf3233708e0670e642effe7b920703
x-routific-topic: route.eta_updated
x-routific-event-id: evt_nRUoQC3hvBb5zohygsa1iP8eEK
x-routific-timestamp: 2026-06-10T15:03:58Z
| Field | Type | Description |
|---|---|---|
x-routific-event-id | String | Unique identifier for this webhook event. This value should remain the same across retries and can be used as an idempotency key. |
x-routific-timestamp | DateTime | Date and Time in UTC for when the webhook delivery attempt was made. |
x-routific-signature | String | Signature of the webhook payload and metadata. For HMAC-SHA256 signatures, the value is prefixed with v1, |
x-routific-topic | String | Event name of the webhook |
Request Body
{
"type": "route.eta_updated",
"timestamp": "2024-09-25T14:30:00Z",
"data": {
"route": {
"uuid": "246612f0-f160-4649-bb16-292ebaa43555",
"name": "Route 11",
"date": "2024-09-25",
"status": "planned",
"workspaceId": 47,
"workingTimeInSeconds": 4200,
"distanceInKilometers": 18.3,
"ordersCount": 2,
"driver": {
"uuid": "7f5a7b8d-67e3-4c6f-9f20-5b2e4f6c91a1",
"name": "John Doe",
"email": "[email protected]"
}
},
"timeline": [
{
"sequence": 0,
"type": "start_location",
"stopUuid": "0f9b4e74-0d6d-4cf0-b11b-f2c9a74f0001",
"plannedArrivalTime": "2024-09-25T08:00:00-07:00",
"plannedDepartureTime": "2024-09-25T08:00:00-07:00",
"actualArrivalTime": "2024-09-25T07:58:00-07:00",
"actualDepartureTime": "2024-09-25T08:03:00-07:00",
"distanceFromPreviousStopInKilometers": 0,
"orders": []
},
{
"sequence": 1,
"type": "delivering_stop",
"stopUuid": "1f9b4e74-0d6d-4cf0-b11b-f2c9a74f0002",
"plannedArrivalTime": "2024-09-25T08:15:00-07:00",
"plannedDepartureTime": "2024-09-25T08:25:00-07:00",
"actualArrivalTime": "2024-09-25T08:17:00-07:00",
"actualDepartureTime": "2024-09-25T08:27:00-07:00",
"distanceFromPreviousStopInKilometers": 6.4,
"orders": [
{
"uuid": "e494bee9-8f01-42b6-9ef2-b61bca2df8f3",
"status": "delivered",
"uri": "/v1/orders/e494bee9-8f01-42b6-9ef2-b61bca2df8f3",
"customerOrderNumber": "CUST-1001",
"routificOrderNumber": "ROUT-20A1"
}
]
},
{
"sequence": 2,
"type": "delivering_stop",
"stopUuid": "2f9b4e74-0d6d-4cf0-b11b-f2c9a74f0003",
"plannedArrivalTime": "2024-09-25T08:40:00-07:00",
"plannedDepartureTime": "2024-09-25T08:50:00-07:00",
"distanceFromPreviousStopInKilometers": 4.8,
"orders": [
{
"uuid": "8a2c9978-bb12-46ad-9c79-cd321f04f79a",
"status": "delivered",
"uri": "/v1/orders/8a2c9978-bb12-46ad-9c79-cd321f04f79a",
"customerOrderNumber": "CUST-1002",
"routificOrderNumber": "ROUT-20B2"
}
]
},
{
"sequence": 3,
"type": "end_location",
"stopUuid": "3f9b4e74-0d6d-4cf0-b11b-f2c9a74f0004",
"plannedArrivalTime": "2024-09-25T09:10:00-07:00",
"distanceFromPreviousStopInKilometers": 7.1
}
]
}
}
| Field | Type | Description |
|---|---|---|
type | string | Full-stop delimited event type. For this webhook, the value is route.published. |
timestamp | string | ISO 8601 timestamp for when the route publish event occurred. |
data | object | Event-specific payload containing route, timeline, stop, and order details. |
route.uuid | string | Unique identifier of the route. |
route.name | string | Name of the route. |
route.date | string | Date when the route is planned for. Format: yyyy-mm-dd. |
route.status | string | Current status of the route. Possible values: planned, published, executing, and completed. |
route.workspaceId | integer | ID of the workspace where the route belongs. |
route.workingTimeInSeconds | integer | Total working time for the route in seconds. |
route.distanceInKilometers | number | Total distance covered by the route in kilometers. |
route.ordersCount | integer | Number of orders assigned to the route. |
route.driver | object | Driver assigned to the route. |
route.driver.uuid | string | Unique identifier of the driver assigned to the route. |
route.driver.name | string | Name of the driver assigned to the route. A null value will be returned if no driver is assigned. |
route.driver.email | string | Email address of the driver assigned to the route. |
timeline.sequence | integer | Zero-based position of the timeline entry. |
timeline.type | string | Type of event. Possible values: start_location, delivering_stop, end_location, and idling. |
timeline.stopUuid | string | Unique stop identifier. |
timeline.distanceFromPreviousStopInKilometers | number | Distance from the previous stop in kilometers. |
timeline.plannedArrivalTime | string | Expected or planned time of arrival at this stop. |
timeline.plannedDepartureTime | string | Expected or planned time the stop will be completed and departed from. |
timeline.actualArrivalTime | string | Actual time the vehicle arrives at this stop. |
timeline.actualDepartureTime | string | Actual time the stop was completed and departed from. |
timeline.orders | array | Orders associated with a stop. Routific can aggregate multiple orders under a single stop. Only delivering_stop timeline event types contain orders. |
timeline.orders.uuid | string | Unique identifier of the order. |
timeline.orders.status | string | Current status of the order. Possible values: scheduled, not scheduled, delivered, and missed. |
timeline.orders.uri | string | URL endpoint to access additional details about the order. |
timeline.orders.customerOrderNumber | string | Customer-provided order number. |
timeline.orders.routificOrderNumber | string | Routific order number. This always uses the ROUT-XXYY format. |
