Create Sync Status for an Order

Use this endpoint to tell us if the order has been successfully sent to the site's in-store system. If the status is failed, use the reason and notes values to tell us why.

If we don't receive your sync status after 3 minutes, or we receive a failed status, we'll send a message to the Deliveroo tablet prompting staff to check their in-store system for the order, and enter manually into the till if needed.

Once we've received a final sync status (or the 3 minute timeout occurs), it cannot be updated.

This endpoint is idempotent on the final status: if you re-send the same status and reason we already hold for the order, we reply with HTTP 200 and the stored status, and nothing changes. Only status and reason are compared — notes and occurred_at are still required on a repeat but are not stored, so send any detail you need us to keep on the first call. Sending a different status or reason gives you an HTTP 409.

Two cases are never absorbed and always give you an HTTP 409. First, a status that disagrees with what we hold, such as failed after we already recorded a success — we will not overwrite it. Second, an order where the 3 minute timeout elapsed before we received any status from you, because the status we stored then is timeout, which is not a value you can send. If we did receive your status in time, a repeat of it is absorbed however long afterwards it arrives.

failed with reason webhook_failed is not a final status. If we hold no final status for the order, re-sending it is recorded as a new sync status rather than absorbed; if we already hold a final status, it disagrees with it and you get an HTTP 409 like any other mismatch.

Stop retrying once you get a 200 or a 409. Both are final answers: a 200 means we hold your status, a 409 means we already hold a status we will not replace. Retry on a 5xx, a 429, or a network error, with exponential backoff — a 429 means you have exceeded the per-order rate limit documented below, so back off and retry rather than dropping the status. Any other 4xx is also final: the request is malformed, so stop and investigate rather than retrying, because retrying will not change the answer.

We don't require sync status calls for sites marked as tabletless. If such a site is using Deliveroo tablet and some orders will fail to be synchronized, the tablet will not show notifications about the failures.

This endpoint is rate limited at 1 request per 10s per order.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

Related order id in format {market}:{order_uuid}.

Body Params

SyncStatus body.

string
enum

Status of the sync status. Can be succeeded or failed.

Allowed:
string | null
enum

Required if the status is failed. This explains why the order could not be sent to the in-store system in the site.

string | null

Free text field to provide more information as to why the order failed to reach the in-store system. e.g. which items or prices were wrong.

string

Time the sync status was received in the ISO-8601 format.

Responses

Language
Credentials
OAuth2
URL
LoadingLoading…
Response
Choose an example:
application/json