Skip to main content

Webhook Events

distributed

Fires when an incoming order gets assigned to a Pickpad device.

When: Right after order distribution finishes — the order matched a station and landed on an available Pickpad.

Webhook URL setting: Order distributed webhook

{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "distributed",
"queueId": null,
"payload": {
"orderId": "order-123",
"orderStatus": 10,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ "id": "pad-1", "name": "Pickpad #1", "stationId": "station-001" }],
"cluster": null
}
}

placed

Fires when an order is marked ready/prepared on the Pickpad.

When: The order status moves to READY (20) or PICKPAD (25) — usually when the kitchen marks the order as prepared.

Webhook URL setting: Order prepared webhook

{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "placed",
"queueId": null,
"payload": {
"orderId": "order-123",
"orderStatus": 20,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ ... }],
"cluster": null
}
}

taken

Fires when an order is physically picked up from the Pickpad device.

When: The Pickpad's weight sensor detects the order has been removed. There's a configurable delay (default 30 seconds) between that detection and the webhook actually going out, so the weight reading has time to settle.

Webhook URL setting: Order taken webhook

Additional behavior:

  • If Check order accuracy is enabled, the webhook includes the measured weight
  • The webhook only goes out after the delay set in Taken webhook delay (0–60 seconds)
  • If the order weight is still above the minimum threshold when it's time to send, delivery is retried
{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "taken",
"queueId": null,
"payload": {
"orderId": "order-123",
"orderStatus": 30,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ ... }],
"cluster": null
}
}

canceled

Fires when an order is canceled.

When: The order status moves to CANCELED (50) — from a POS webhook reporting the cancellation, or from staff canceling the order manually on the dashboard.

Webhook URL setting: Order canceled webhook

{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "canceled",
"queueId": null,
"payload": {
"orderId": "order-123",
"orderStatus": 50,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ ... }],
"cluster": null
}
}

weight_deviation

Fires when the weight measured on a Pickpad doesn't match what's expected for the order that's currently on it.

When: The order is still actively in progress on the pad (placed but not yet ready, taken, or completed) when a weight mismatch is detected. If the order has already moved past that point, no webhook is sent.

Webhook URL setting: Order accuracy webhook

Additional behavior:

  • Only sent when Check order accuracy is enabled — see Order Accuracy.
  • Includes the live weight reading off the device at send time (the cluster's combined weight if the pad is part of a cluster, otherwise the pad's own current weight).
{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "weight_deviation",
"queueId": null,
"payload": {
"orderId": "order-123",
"orderStatus": 25,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ ... }],
"cluster": null
}
}

Event Lifecycle

Here's the sequence of webhook events a typical order goes through:

Order received → (queued) → distributed → placed → taken
↘ weight_deviation (while placed, if the weight is off)
↘ canceled (at any point)
StepWhat happensWebhook event
0No pad free (or account always queues) — order waits in the queue(none — queueId set in the API response, no webhook until placed)
1Order distributed, assigned to a Pickpad or clusterdistributed
2Kitchen prepares order, marks readyplaced
3Customer picks up order from Pickpadtaken (after delay)

queueId and cluster appear on every event above — see Webhook Payload for the full field reference, and Orders Queue for how the queue and virtual clusters affect distribution.

Responding to Webhooks

Your server should return a 2xx status code to acknowledge receipt. Anything outside the 2xx range triggers up to 3 retries with exponential backoff.

There's no required response body.