Order Integration
With the Order API, newly accepted orders and status updates are sent directly to your service via a webhook.
Once configured, Deliveroo will begin notifying you about order-related events via the Order Events webhook. You may also opt-in to receive events related to rider status through an additional Rider Events webhook.
Whether your site is tablet-less or tablet-based, your integration will have to follow one of the two flows described below.
To switch a site to tablet-less mode, please contact your account manager.
Webhooks?
A webhook is a mechanism that calls your HTTPS endpoint when certain event occurs. In this case, the event is the Deliveroo order or a change related to it and the HTTPS call is what informs your till about order details.
Your webhook should be an HTTPS endpoint which listens to events from Deliveroo.
Tablet-less Flow
- A customer places an order through Deliveroo's website or app.
- Deliveroo sends an
order.new
event via the Order Events webhook with the order's status asplaced
. - You inject the order into the POS.
- The site accepts (or rejects) this order and you call the Update Order Status endpoint. If this does not happen within 10 minutes (this timeout may be different depending on your region), the order will be auto-rejected.
- Deliveroo sends an
order.status_update
event with the new order status.- If you have the legacy POS webhook configured and accepted the order, you'll receive the legacy
new_order
POS webhook.
- If you have the legacy POS webhook configured and accepted the order, you'll receive the legacy
- If the order is of scheduled type, you have to send another request to our Update Order Status endpoint to confirm it before the site starts to prepare it. After your call succeeds, we'll send you a notification about the status change.
- If the customer cancels the order, Deliveroo will notify you about the order status change via Order Events webhook (
order.status_update
event) and POS (Legacy) webhook (cancel_order
event). Please see Canceled Orders for more details.
Order Preparation
- All orders must be accepted (with
accepted
status present in thestatus_log
in the event) before they are prepared.- For the vast majority of orders, the time you receive the order will be almost equal to the
start_preparing_at
timestamp.- Sometimes
start_preparing_at
may be far in the future (for example scheduled orders or when the site is close to closing). In these situations we recommend you wait untilstart_preparing_at
before printing or showing the order in the kitchen- For the avoidance of doubt: preparation time is inclusive of any time required to accept the order
Tablet-based Flow
- A customer places an order through Deliveroo's website or app.
- The order is shown on the site's tablet. At the same time, Deliveroo sends an
order.new
event via the Order Events webhook with the order's status asplaced
oraccepted
. - The site accepts or rejects the order from the tablet. If this does not happen within 10 minutes (this timeout may be different depending on your region), the order will be auto-rejected.
- Deliveroo sends an
order.status_update
event with the new order status.- If you have the legacy POS webhook configured and accepted the order, you'll receive the legacy
new_order
POS webhook.
- If you have the legacy POS webhook configured and accepted the order, you'll receive the legacy
- You inject the order into the POS.
- You Create a Sync Status. This indicates that your integration injected the order successfully into the site's in-store system.
- If the order is of scheduled type, you have to manually confirm it from the tablet before the site starts to prepare it. After your call succeeds, we'll send you a notification about the status change.
- If the customer cancels the order, Deliveroo will notify you about the order status change via Order Events webhook (
order.status_update
event) and POS (Legacy) webhook (cancel_order
event). Please see Canceled Orders for more details.
Tablet-less Flow - Only for Grocery/Retail Integrators using Deliveroo PA
- A customer places an order through Deliveroo's website or app.
- Deliveroo sends an
order.new
event via the Order Events webhook with the order's status asplaced
. - The integrator can start processing the webhook event and send a HTTP 200 response to Deliveroo.
- The Deliveroo Picking App works in conjunctions and the all the events related to Picking can be performed on that application like Start Picking, Amendments, Substitution and Accept/rejection of order which would automatically sends the signals back to Deliveroo. No action is required from Integrator Side.
- Deliveroo sends an
order.status_update
event with the new order status. - If the customer cancels the order, Deliveroo will notify you about the order status change via Order Events webhook (
order.status_update
event).
Order Flow only for Grocery/Retail Integrators using Deliveroo Order Picker
The above flow is not relevant for the partners using Deliveroo Order Picker Solution to Pack and Accept orders. No actions are required to integrate with the Order Picker app. For more details, Please consult with your Technical Integration Manager.
New orders need to reach the kitchen / site without any delays or buffers
Deliveroo calculates dynamic prep times for every order to ensure smooth operations. We do this using an algorithm called the prep time model.
It is very important to avoid introducing any artificial delays, holds or buffers to the prep times calculated by the Deliveroo prep time model.
Avoid artificial buffer times
Adding artificial buffer times or delays before you release orders to the kitchen / site will over-inflate your prep times, and reduce your orders on Deliveroo.
Make sure to avoid introducing any delays in your API, integrator, middleware, POS or KDS systems.
The diagram below explains why buffer times will over-inflate your prep times. If you have concerns about managing your orders and feel like you need a buffer then please contact the Deliveroo integration team for further information here
Scope of Implementation
To use our Order API, you need to fulfill the below requirements. You don't need to support every endpoint and webhook callback, but we recommend that you do for the best experience.
Required
To be compatible with our Order API, you need to integrate the following features:
- Listen for events through an Order Events webhook endpoint in your integration. The endpoint must verify and process payloads sent to your integration, as described by tablet-less or tablet-based flows.
- Check and update Order Events webhook configuration through Get and Update.
- Accept/reject orders through Update Order Status endpoint for tablet-less restaurants.
- Send sync status through Create Sync Status for an Order endpoint for tablet-based restaurants.
Recommended
To make the most out of your Deliveroo integration, we recommend you integrate the following additional features:
- Listen for events through a Rider Event webhook endpoint in your integration. The endpoint must verify and process payloads sent to your integration.
- Check and update Rider Events webhook configuration through Get and Update.
- Get order details using Get Single Order Details and Get Orders endpoints.
- Inform Deliveroo how the order preparation goes through the Create Preparation Stage endpoint.
POS Webhook
The POS (Legacy) webhook (the one receiving
new_order
andcancel_order
events) is deprecated. No further development will take place for it. Please refer to the new Order Events and Rider Status webhooks.View POS API documentation here
Updated 2 days ago