Event types
The full catalog of webhook events. The vocabulary carries the truth: order.unconfirmed is first-class, and must never be collapsed into order.failed.
| Event | Meaning |
|---|---|
order.building | The order was accepted and the cart is being built. |
order.carted | The cart is priced and ready. Carries store, items, modifiers, totals, and pickup time. |
order.placing | The person confirmed; Layout is submitting to the merchant. |
order.placed | The order reached the merchant, with evidence. Fires only on a confirmed placement. |
order.failed | The order could not be placed, with a reason code. Nothing was charged. |
order.unconfirmed | Placement is genuinely uncertain. Do not retry blindly and do not treat as failed — that is the double-charge trap. |
order.needs_approval | A money ceremony is required. Layout hands the person a hosted link; you get the outcome. |
order.challenge | The checkout raised a challenge; Layout pauses and resumes once it clears. |
Example payload
{
"event": "order.placed",
"delivery_id": "dl_9f3a2c",
"order": {
"id": "ord_7c21",
"state": "placed",
"store": "Sweetgreen — Market St",
"items": 2,
"total_minor": 2140,
"currency": "usd"
},
"user": { "id": "usr_4b8e" },
"sent_at": "2026-09-10T17:01:07Z"
}