Fired when a route is published or republished in Routific
Overview
The route.published event is triggered when a dispatcher publishes or republishes a route. Each published or republished route generates its own webhook payload. If multiple routes are published or republished at the same time, one webhook event is sent for each route.
The HTTP request body contains the full route object (equivalent to the Fetch Routes response for that route) combined with the full timeline (equivalent to the Fetch Route Timeline response), so you can act on the complete picture without making any follow-up API calls.
Topic Name
route.published
Request Headers
content-type: application/json
x-routific-signature: v0=96f75bab20672af9db0549863fe1b2c6feagf3233708e0670e642effe7b920703
x-routific-topic: route.published
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.published",
"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",
"actualArrivalTime": "2024-09-25T08:42:00-07:00",
"actualDepartureTime": "2024-09-25T08:53: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",
"plannedDepartureTime": "2024-09-25T09:10:00-07:00",
"actualArrivalTime": "2024-09-25T09:12:00-07:00",
"actualDepartureTime": "2024-09-25T09:12:00-07:00",
"distanceFromPreviousStopInKilometers": 7.1,
"orders": []
}
]
}
}
| 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. |
