Skip to main content

Webhook Events

distributed

Fired when an incoming order is assigned to a Pickpad device.

When: Immediately after order distribution logic completes. The order matched a station and was assigned to an available Pickpad.

Webhook URL setting: Order distributed webhook

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

placed

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

When: The order status transitions to READY (20) or PICKPAD (25). This typically happens when the kitchen marks the order as prepared.

Webhook URL setting: Order prepared webhook

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

taken

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

When: The Pickpad's weight sensor detects the order has been removed. There is a configurable delay (default 30 seconds) between detection and webhook dispatch to allow accurate weight measurement.

Webhook URL setting: Order taken webhook

Additional behavior:

  • If Check order accuracy is enabled, the webhook includes the measured weight
  • The webhook is only sent after the delay configured in Taken webhook delay (0–60 seconds)
  • If the order weight is still above the minimum threshold at webhook time, delivery is retried
{
"accountId": "acc-123",
"locationId": "loc-001",
"event": "taken",
"payload": {
"orderId": "order-123",
"orderStatus": 30,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": { ... },
"pickpads": [{ ... }]
}
}

canceled

Fired when an order is canceled.

When: The order status transitions to CANCELED (50), either from the POS system or manually.

note

The canceled event is dispatched but there is no separate webhook URL setting for it. It is sent to the Order distributed webhook URL if configured.

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

Event Lifecycle

A typical order goes through these webhook events in sequence:

Order received → distributed → placed → taken
↘ canceled (at any point)
StepWhat happensWebhook event
1Order arrives via API, assigned to Pickpaddistributed
2Kitchen prepares order, marks readyplaced
3Customer picks up order from Pickpadtaken (after delay)

Responding to Webhooks

Your server should return a 2xx status code to acknowledge receipt. Non-2xx responses trigger up to 3 retries with exponential backoff.

No specific response body is required.