Evento nuevo (junio 2026). Nace directamente en v1 — no existe forma v0.
order.status_updated dispara cuando el KDS (Kitchen Display System) reporta un cambio de estado en cocina: empezó a prepararse (preparing), está lista (ready), fue despachada (dispatched) o fue cancelada en cocina (cancelled).
Para los tres estados de avance, Fire aplica un gate anti-regresión (un estado nunca retrocede: dispatched no vuelve a ready) y solo emite este evento cuando el estado genuinamente avanza. cancelled es la excepción — bypasea el gate y puede llegar desde cualquier estado de cocina. Por eso recibes un evento por cambio real, sin duplicados ni retrocesos.
Condición de disparo
Fire emiteorder.status_updated cuando se cumple cualquiera de las siguientes condiciones:
- El KDS reportó un estado de avance (
preparing,readyodispatched) que pasa el gate anti-regresión (preparing→ready→dispatched) - El KDS reportó
cancelledpara la orden (sin restricción anti-regresión — puede llegar desde cualquier estado de cocina)
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
string
UUID de la orden en Fire — matcheá contra el
order.completed que recibiste.string
Código legible de la orden.
string
El id de la orden en el canal/agregador — usalo para matchear de su lado.
string
Estado de negocio de la orden (
COMPLETED / CANCELLED). Contexto — el recorrido de cocina es paralelo.object
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.object
Ref mínima de tienda:
code, name, más account { uid, name } y vendor { uid, name }.object
service.code — DELIVERY o PICKUP. Le da sentido al status (un ready para delivery vs pickup).El bloque kitchen
object
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” o “tu pedido fue cancelado” en app o pantalla de retiro
- Notificar al agregador — avisar a iFood/Rappi/99food que la orden está lista para el repartidor o que fue cancelada en cocina
- Métricas de cocina — tiempos preparing→ready por tienda/estación a partir de
history - Flujo de cancelación — disparar limpieza downstream (liberar repartidor, reembolso, alerta a ops) cuando
kitchen.status = "cancelled"
Lo que NO hace
- No cambia el estado de la orden — excepto en la cancelación. Para los estados de avance (
preparing,ready,dispatched),data.statussigue siendo"COMPLETED". Cuandokitchen.status = "cancelled",data.statusserá"CANCELLED". - No retrocede para estados de avance. Si el KDS reporta
readydespués dedispatched, Fire lo descarta (gate anti-regresión) y no emite nada.cancelledestá exento de esta regla. - No reemplaza a
order.completed. Suscríbete a ambos:order.completedpara el hecho de negocio,order.status_updatedpara el progreso físico.

