Skip to main content
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 emite order.status_updated cuando se cumple cualquiera de las siguientes condiciones:
  • El KDS reportó un estado de avance (preparing, ready o dispatched) que pasa el gate anti-regresión (preparingreadydispatched)
  • El KDS reportó cancelled para la orden (sin restricción anti-regresión — puede llegar desde cualquier estado de cocina)
En ambos casos, el reporte debe referenciar un evento que Fire emitió para esa orden (validación de origen).

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.codeDELIVERY 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.status sigue siendo "COMPLETED". Cuando kitchen.status = "cancelled", data.status será "CANCELLED".
  • No retrocede para estados de avance. Si el KDS reporta ready después de dispatched, Fire lo descarta (gate anti-regresión) y no emite nada. cancelled está exento de esta regla.
  • No reemplaza a order.completed. Suscríbete a ambos: order.completed para el hecho de negocio, order.status_updated para el progreso físico.