{ brand_id, branch_id, orders } — and the same headers.
What changes is why klikit is calling you and which field in the order
matters most.
klikit.order.created.v2
When it fires
A customer placed an order through one of klikit’s surfaces (aggregator marketplace, direct ordering web, kiosk) and the order has been confirmed. This is the trigger for “ring the kitchen / send the ticket to the POS”.What you receive
orders is an array. Today it’s almost always length 1, but klikit reserves
the right to batch several brand-new orders into a single delivery if they
land in the same tick.
What to do
- Verify
x-klikit-signature(recipe). - Dedupe on
x-klikit-event-id. - Return
200within 10 seconds. - Push to your POS / kitchen display on a background worker.
klikit.order.status.updated
When it fires
An existing order moved to a new state. That includes the forward path (PLACED → ACCEPTED → PREPARING → READY → DISPATCHED → DELIVERED) and
the cancellation path (any → CANCELLED). Use this to keep your own order
view in sync with klikit’s source of truth without polling.
What you receive
The same envelope. Thestatus field on each order reflects the new
state — decode via the
OrderStatus reference dictionary.
What to do
Verify, dedupe, reply 200 fast, then update your own order record.klikit.order.cart.updated
When it fires
A customer or operator edited the items / quantities on an in-progress order before it was finalised — added a topping, removed an item, swapped a modifier. Subscribe to this only if you mirror live cart state into your POS (e.g. for a kitchen display that wants to prep ahead of the finalACCEPTED
event).
What you receive
The same envelope. Thecart array on each order reflects the new
line-item state — treat it as the replacement, not as a delta.
What to do
Verify, dedupe, reply 200 fast, then replace your local cart state.If you don’t preview baskets in your POS, you don’t need this event. Skip it
and consume only
klikit.order.created.v2 + klikit.order.status.updated.