Evento novo (junho 2026). Nasce diretamente na v1 — não existe forma v0.
order.status_updated dispara quando o KDS (Kitchen Display System) reporta que um pedido avançou de status na cozinha: começou a ser preparado (preparing), está pronto (ready) ou foi despachado (dispatched).
O Fire recebe o reporte do KDS pelo webhook de status de entrada, valida que ele referencia um evento emitido pelo Fire para esse pedido, aplica um gate anti-regressão (um status nunca retrocede: dispatched não volta para ready) e só então emite este evento. Por isso você recebe um evento por avanço real — sem duplicados, sem retrocessos.
Condição de disparo
O Fire emiteorder.status_updated quando tudo a seguir é verdadeiro:
- O KDS reportou um status de cozinha para um pedido existente
- O status avança o percurso (gate anti-regressão:
preparing→ready→dispatched) - O reporte passou na validação de origem (referencia um evento que o Fire emitiu para esse pedido)
| Cobertura | Todos os países |
| Status | preparing → ready → dispatched (monotônico) |
| Chave de idempotência | event.id |
| Dispara mais de uma vez | Uma vez por avanço de status (máx. 3 por pedido); retentativas compartilham event.id |
| Origem do dado | kitchen.source — apenas kds hoje; o campo fica aberto a fontes futuras |
O que vem em data
É um payload leve (thin) — diferente de order.completed, não carrega o pedido completo. Carrega o necessário para agir sobre uma mudança de status: a identidade do pedido, refs mínimas de canal / loja, o tipo de fulfillment, e o bloco kitchen (o avanço + o percurso). Omite de propósito orderLines, payments, taxes, client, device e o endereço de entrega — você já recebeu isso em order.completed; faça o match por orderId / externalOrderId e aplique a mudança.
Identidade e contexto
UUID do pedido no Fire — faça o match com o
order.completed que você recebeu.Código legível do pedido.
O id do pedido no canal/agregador — use-o para fazer o match do lado deles.
Status de negócio do pedido (
COMPLETED / CANCELLED). Contexto — o percurso da cozinha é paralelo.code (canônico, sempre presente — ex. 99) e uid. O nome legível do canal vem do seu catálogo de channels, não deste evento.Ref mínima da loja:
code, name, mais account { uid, name } e vendor { uid, name }.service.code — DELIVERY ou PICKUP. Dá sentido ao status (um ready para delivery vs pickup).O bloco kitchen
O avanço que disparou o evento + o percurso completo. Distinto do bloco
kds (dados estáticos do pedido capturados na injeção).Casos de uso típicos
- Acompanhamento do pedido para o cliente — “seu pedido está pronto” no app ou tela de retirada
- Notificar o agregador — avisar iFood/Rappi/99food que o pedido está pronto para o entregador
- Métricas de cozinha — tempos preparing→ready por loja/estação a partir de
history
O que NÃO faz
- Não muda o status do pedido.
data.statuscontinua"COMPLETED"— o percurso de cozinha é paralelo ao ciclo de pagamento/faturamento. - Nunca retrocede. Se o KDS reportar
readydepois dedispatched, o Fire descarta (gate anti-regressão) e não emite nada. - Não substitui
order.completed. Assine os dois:order.completedpara o fato de negócio,order.status_updatedpara o progresso físico.

