Route ETAs Updated

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
FieldTypeDescription
x-routific-event-idStringUnique identifier for this webhook event. This value should remain the same across retries and can be used as an idempotency key.
x-routific-timestampDateTimeDate and Time in UTC for when the webhook delivery attempt was made.
x-routific-signatureStringSignature of the webhook payload and metadata. For HMAC-SHA256 signatures, the value is prefixed with v1,
x-routific-topicStringEvent 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
      }
    ]
  }
}
FieldTypeDescription
typestringFull-stop delimited event type. For this webhook, the value is route.published.
timestampstringISO 8601 timestamp for when the route publish event occurred.
dataobjectEvent-specific payload containing route, timeline, stop, and order details.
route.uuidstringUnique identifier of the route.
route.namestringName of the route.
route.datestringDate when the route is planned for. Format: yyyy-mm-dd.
route.statusstringCurrent status of the route. Possible values: planned, published, executing, and completed.
route.workspaceIdintegerID of the workspace where the route belongs.
route.workingTimeInSecondsintegerTotal working time for the route in seconds.
route.distanceInKilometersnumberTotal distance covered by the route in kilometers.
route.ordersCountintegerNumber of orders assigned to the route.
route.driverobjectDriver assigned to the route.
route.driver.uuidstringUnique identifier of the driver assigned to the route.
route.driver.namestringName of the driver assigned to the route. A null value will be returned if no driver is assigned.
route.driver.emailstringEmail address of the driver assigned to the route.
timeline.sequenceintegerZero-based position of the timeline entry.
timeline.typestringType of event. Possible values: start_location, delivering_stop, end_location, and idling.
timeline.stopUuidstringUnique stop identifier.
timeline.distanceFromPreviousStopInKilometersnumberDistance from the previous stop in kilometers.
timeline.plannedArrivalTimestringExpected or planned time of arrival at this stop.
timeline.plannedDepartureTimestringExpected or planned time the stop will be completed and departed from.
timeline.actualArrivalTimestringActual time the vehicle arrives at this stop.
timeline.actualDepartureTimestringActual time the stop was completed and departed from.
timeline.ordersarrayOrders associated with a stop. Routific can aggregate multiple orders under a single stop. Only delivering_stop timeline event types contain orders.
timeline.orders.uuidstringUnique identifier of the order.
timeline.orders.statusstringCurrent status of the order. Possible values: scheduled, not scheduled, delivered, and missed.
timeline.orders.uristringURL endpoint to access additional details about the order.
timeline.orders.customerOrderNumberstringCustomer-provided order number.
timeline.orders.routificOrderNumberstringRoutific order number. This always uses the ROUT-XXYY format.