Overview
Overview
The Deliveroo Rider Status API lets you receive real-time updates about the rider assigned to an order — their status, live location, and estimated arrival — pushed to your system as webhooks. Unlike request/response APIs, you don't poll for rider information; Deliveroo sends it to a webhook URL you register.
You can begin testing here.
Registering your webhook
Register a Rider Status webhook URL in the Developer Portal. Deliveroo will POST a rider status event to that URL each time the rider's status or details change for an order under your integration.
Securing webhooks
Rider status webhooks are signed. Verify the signature before trusting a payload — see Securing Webhooks.
Event payload
Each event describes an order and the rider(s) assigned to it:
{
"order_id": "GB1234567",
"restaurant_brand_id": "your-brand-external-id",
"stacked_with": ["GB1234568"],
"delivery_priority": ["GB1234567", "GB1234568"],
"delivery_stack": [
{ "order_id": "GB1234568", "delivery_priority": 1, "order_source": "deliveroo", "delivery_status": "rider_in_transit" }
],
"delivery_eta": { "lower": "2026-07-08T11:40:00Z", "upper": "2026-07-08T11:50:00Z" },
"riders": [
{
"full_name": "Alex M.",
"status_log": [
{ "at": "2026-07-08T11:20:00Z", "status": "rider_assigned" },
{ "at": "2026-07-08T11:35:00Z", "status": "rider_in_transit" }
],
"estimated_arrival_time": "2026-07-08T11:45:00Z",
"at": "2026-07-08T11:35:02Z",
"lat": 51.5074,
"lon": -0.1278,
"accuracy_in_meters": 12.5,
"contact_number": "+44...",
"customer_to_rider_contact_number": "+44...",
"bridge_code": "1234",
"bridge_number": "+44..."
}
]
}Fields
| Field | Description |
|---|---|
order_id | Deliveroo order ID |
restaurant_brand_id | Your restaurant brand's external ID |
stacked_with | Other order IDs stacked with this one |
delivery_priority | Order IDs in delivery-priority order |
delivery_stack[] | Orders in the rider's delivery stack — order_id, delivery_priority, order_source, delivery_status |
delivery_eta | Delivery ETA window (lower/upper, RFC 3339). Omitted when no estimate is available. Same window as in the Order webhook |
riders[] | The rider(s) assigned to this order (see below) |
Rider fields (riders[])
| Field | Description |
|---|---|
full_name | Rider full name |
status_log[] | Append-only log of rider status changes — each entry has at (timestamp) and status (see values below) |
estimated_arrival_time | Rider's estimated arrival time |
at | Timestamp when this update was generated |
lat / lon | Rider's current GPS latitude / longitude |
accuracy_in_meters | Accuracy radius of the GPS fix, in metres |
contact_number | Partner-to-rider contact number |
bridge_number | Partner-to-rider bridge number (masked call-bridging line) |
bridge_code | Partner-to-rider bridge code |
customer_to_rider_contact_number | Customer-to-rider contact number |
Rider status values
| Status | Meaning |
|---|---|
rider_assigned | Rider assigned for pickup |
rider_confirmed_at_restaurant | Rider arrival at the restaurant confirmed in-app |
rider_arrived | Rider arrived at restaurant |
rider_in_transit | Rider en route to customer |
rider_nearby | Rider has broken the geo-fence and is near the customer |
rider_confirmed_at_customer | Rider confirmed at customer |
rider_unassigned | Rider unassigned from the order |
Updated 1 day ago
Did this page help you?
