01When does it fire?
- On every real kitchen status transition of an order (restaurant orders) — from the KDS or the POS.
- A same-value write generates no event — the transition must be real.
- Every transition carries a <seq> suffix in its identity — the same rule as order.status_changed.
02Full payload example
{
"id": "mwh:kitchen-status-changed:9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b:3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa:1",
"type": "kitchen.status_changed",
"api_version": "v2",
"tenant_id": "9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b",
"data": {
"order_id": "3f0c8e6a-1d24-4b7f-9a3e-2c5b8d90f1aa",
"receipt_number": "RCP-20261020-1482",
"order_type": "DELIVERY",
"customer_name": "Ahmed Mahmoud",
"customer_phone": "+201001234567",
"previous_kitchen_status": "QUEUED",
"kitchen_status": "IN_PREP",
"table_number": null,
"branch_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
"changed_at": "2026-10-20T12:41:58.104337+00:00"
}
}03data fields
| Field | Meaning |
|---|---|
| order_id / receipt_number | The order id and receipt number. |
| order_type | The order type. |
| customer_name / customer_phone | The customer name and phone from the order. |
| previous_kitchen_status | The kitchen status before the transition. |
| kitchen_status | The kitchen status after the transition — e.g. IN_PREP. |
| table_number | The table number for dine-in orders — null otherwise. |
| branch_id | The branch id (UUID). |
| changed_at | The transition time, ISO 8601. |
04Event identity
Pattern: mwh:kitchen-status-changed:<tenant_id>:<order_id>:<seq> — the resource is the order itself, with an ordinal per transition.
COMPLETE YOUR INTEGRATION
