Skip to main content

Webhook Payload

All webhook events share the same payload structure. The payload is wrapped in a data envelope.

Full Example

{
"data": {
"accountId": "acc-123",
"locationId": "loc-001",
"event": "distributed",
"payload": {
"orderId": "order-123",
"orderStatus": 10,
"stationId": "station-001",
"pickpadIds": ["pad-1"],
"order": {
"id": "order-123",
"status": 10,
"locationId": "loc-001",
"shortNumber": "A123",
"basePrice": 27.48,
"isPickup": true,
"isDelivery": false,
"isAsap": true,
"inPlace": false,
"weight": 700,
"autoComplete": true,
"autoPickpad": true,
"stationId": "station-001",
"expectedPickupTime": 1712678400,
"user": {
"name": "John",
"fullName": "John Doe",
"phone": "+1234567890",
"email": "john@example.com",
"id": "customer-456"
},
"dishes": [
{
"id": "dish-1",
"name": "Classic Burger",
"count": 2,
"price": 12.99,
"categoryId": "cat-burgers",
"variation": "Large",
"weight": 350
}
]
},
"pickpads": [
{
"id": "pad-1",
"name": "Pickpad #1",
"orderId": "order-123",
"stationId": "station-001",
"priority": 1,
"customerName": "John",
"shortNumber": "A123",
"hasCurrentOrder": true,
"hasCompletedOrder": false,
"hasReadyOrder": false,
"properties": {
"targetWeight": 700,
"currentWeight": 685,
"accuracy": 97.8
},
"dishes": [
{
"id": "dish-1",
"name": "Classic Burger",
"count": 2,
"price": 12.99,
"weight": 350,
"variation": "Large",
"categoryId": "cat-burgers"
}
]
}
]
}
}
}

Envelope

The webhook body is wrapped in a data object:

{ "data": { ... } }

When Use static IP for webhooks is enabled, two additional fields are added at the top level: _method ("POST") and _url (your webhook URL). The request is sent to the proxy, which forwards it.

Data Fields

FieldTypeDescription
accountIdstringYour account ID
locationIdstringLocation where the order was placed
eventstringEvent type: distributed, placed, taken, canceled
payloadobjectEvent data (see below)

Payload Fields

FieldTypeDescription
orderIdstringOrder identifier (external ID)
orderStatusnumberCurrent order status
stationIdstring | nullStation the Pickpad belongs to
pickpadIdsstring[]IDs of assigned Pickpad devices
orderobjectFull order data (same format as Sending Orders)
pickpadsobject[] | nullAssigned Pickpad device details

Order Object

The order field contains the order data in the same format used for Sending Orders, including user, dishes, fulfillment flags, and pricing.

Pickpad Object

Each item in the pickpads array describes the physical device the order was assigned to.

FieldTypeDescription
idstringPickpad device ID
namestringPickpad display name
orderIdstring | nullCurrent order ID on this Pickpad
stationIdstringStation this Pickpad belongs to
prioritynumberDevice priority in the station
customerNamestring | nullCustomer name displayed on screen
shortNumberstring | nullOrder number displayed on screen
hasCurrentOrderbooleanWhether the Pickpad currently has an active order
hasCompletedOrderbooleanWhether the current order is completed (taken/finished)
hasReadyOrderbooleanWhether the current order is ready for pickup
propertiesobject | undefinedWeight and accuracy data (present when device has sensor data)
dishesobject[]Dishes assigned to this Pickpad

Pickpad Properties Object

Present when the Pickpad device has weight sensor data available.

FieldTypeDescription
targetWeightnumberExpected order weight in grams (sum of dish weights)
currentWeightnumberActual measured weight on the device in grams
accuracynumberWeight accuracy percentage (0–100)

Pickpad Dish Object

FieldTypeDescription
idstringDish identifier
namestringDish name
countnumberQuantity
pricenumberPrice per item
weightnumberWeight per item in grams
variationstringSize/variant
categoryIdstringCategory identifier