Skip to content

On demand, a driver accepted

POST

Sent on the first accept only. A driver giving the job back is not pushed; for a held order read sale.driver by GET.

X-Delivr-Signature
required
string

t=<unix seconds>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. During a secret rotation a second v1= (old secret) is added; accept when any v1 matches. t is the attempt’s time.

X-Delivr-Event-Id
required
string format: uuid

The event’s stable id (same as body id); identical on retries and replays.

X-Delivr-Event
required
string
Delivr-Api-Version
required
string
Media typeapplication/json

Thin event. id is stable per event and order: retries and replays reuse it, so dedupe on it. No ordering guarantee: events of one order may arrive out of order or late. data is the order as it was when the event was queued (it may be newer than the event), with its version: apply data as order state only when version is higher than the last you applied, but act on every new event id (some events share a version). GET /v1/merchant/orders/{order} is the source of truth.

object
id
required
string format: uuid
type
required

An EventType or webhook.test.

string
apiVersion
required
string
createdAt
required

When it happened.

string format: date-time
data
required

Fields present when they apply. Never the door code, pickup instructions or note.

object
orderId
string format: uuid
reference
string
externalRef
string
type
string
Allowed values: on_demand window
status

On demand: placed → awaiting_goods → searching → driver_assigned → picked_up → delivered. Window: placed → scheduled → picked_up → delivered. cancelled and failed end either, with reason.

string
Allowed values: placed awaiting_goods scheduled searching driver_assigned picked_up delivered cancelled failed
version

The order’s version (as on the order) when the event was queued. Absent on webhook.test.

integer format: int64
reason

Why a cancelled or failed order ended.

string
Allowed values: no_driver goods_not_ready no_capacity undeliverable cancelled_by_merchant cancelled_by_delivr other
readyAt
string format: date-time
window
object
start
required
string format: date-time
end
required
string format: date-time
previousWindow
object
start
required
string format: date-time
end
required
string format: date-time
predecessorId
string format: uuid
successorId
string format: uuid
choiceDeadline
string format: date-time
fallbackReason
string
Allowed values: expired no_window
proofOfDelivery
object
deliveredAt
required
string format: date-time
receiverName
string
sale

Held orders only (assisted checkout). “Driver found” = status pending and driver assigned. The order status alone is not enough (it stays driver_assigned while a driver gives the job back).

object
status
required
string
Allowed values: pending completed abandoned
driver
required
string
Allowed values: searching assigned reassigning
completeBy

The checkout budget passes then and the order is cancelled at its current fee stage. Present while it runs.

string format: date-time
completedAt
string format: date-time
test

webhook.test only.

boolean

Received. Any other answer, no answer within 15 s, or a redirect (not followed) is a failure, retried after 30 s, 2 m, 10 m, 30 m, 1 h, 3 h, 6 h, 6 h, 6 h (10 attempts, about 23 h), then given up (replayable for 30 days).