Evento nuevo (junio 2026). Nace directamente en v1 — no existe forma v0.
order.status_updated dispara cuando el KDS (Kitchen Display System) reporta que una orden avanzó de estado en cocina: empezó a prepararse (preparing), está lista (ready) o fue despachada (dispatched).
Fire recibe el reporte del KDS por el webhook entrante de estados, valida que referencie un evento emitido por Fire para esa orden, aplica un gate anti-regresión (un estado nunca retrocede: dispatched no vuelve a ready) y solo entonces emite este evento. Por eso recibes un evento por avance real, sin duplicados ni retrocesos.
Condición de disparo
Fire emiteorder.status_updated cuando todo lo siguiente es verdadero:
- El KDS reportó un estado de cocina para una orden existente
- El estado avanza el recorrido (gate anti-regresión:
preparing→ready→dispatched) - El reporte pasó la validación de origen (referencia un evento que Fire emitió para esa orden)
| Cobertura | Todos los países |
| Estados | preparing → ready → dispatched (monotónico) |
| Llave de idempotencia | event.id |
| Dispara más de una vez | Una vez por avance de estado (máx. 3 por orden); reintentos comparten event.id |
| Origen del dato | kitchen.source — solo kds hoy; el campo queda abierto a futuras fuentes |
Qué hay en data
Es un payload liviano (thin) — a diferencia de order.completed, no arrastra la orden completa. Lleva lo necesario para actuar sobre un cambio de estado: la identidad de la orden, refs mínimas de canal / tienda, el tipo de fulfillment, y el bloque kitchen (el avance + el recorrido). A propósito omite orderLines, payments, taxes, client, device y la dirección de delivery — eso ya lo recibiste en order.completed; matcheá por orderId / externalOrderId y aplicá el cambio.
Identidad y contexto
UUID de la orden en Fire — matcheá contra el
order.completed que recibiste.Código legible de la orden.
El id de la orden en el canal/agregador — usalo para matchear de su lado.
Estado de negocio de la orden (
COMPLETED / CANCELLED). Contexto — el recorrido de cocina es paralelo.code (canónico, siempre presente — ej. 99) y uid. El nombre legible del canal sale de tu catálogo de channels, no de este evento.Ref mínima de tienda:
code, name, más account { uid, name } y vendor { uid, name }.service.code — DELIVERY o PICKUP. Le da sentido al status (un ready para delivery vs pickup).El bloque kitchen
El avance que disparó el evento + el recorrido completo. Distinto del bloque
kds (datos estáticos de la orden capturados al inyectarse).Casos de uso típicos
- Tracking de orden para el cliente — “tu pedido está listo” en app o pantalla de retiro
- Notificar al agregador — avisar a iFood/Rappi/99food que la orden está lista para el repartidor
- Métricas de cocina — tiempos preparing→ready por tienda/estación a partir de
history
Lo que NO hace
- No cambia el estado de la orden.
data.statussigue siendo"COMPLETED"— el recorrido de cocina es paralelo al ciclo de pago/facturación. - No retrocede. Si el KDS reporta
readydespués dedispatched, Fire lo descarta (gate anti-regresión) y no emite nada. - No reemplaza a
order.completed. Suscríbete a ambos:order.completedpara el hecho de negocio,order.status_updatedpara el progreso físico.

