Saltar al contenido principal
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 emite order.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: preparingreadydispatched)
  • El reporte pasó la validación de origen (referencia un evento que Fire emitió para esa orden)
CoberturaTodos los países
Estadospreparingreadydispatched (monotónico)
Llave de idempotenciaevent.id
Dispara más de una vezUna vez por avance de estado (máx. 3 por orden); reintentos comparten event.id
Origen del datokitchen.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.
{
  "event": {
    "id": "7f3c2a1b-9d4e-4f6a-8b2c-1e5d3a7f9c0b",
    "type": "order.status_updated",
    "createdAt": "2026-06-10T18:24:31.000Z"
  },
  "data": {
    "orderId": "443bb714-fb69-4538-9ecb-de0acad7b88f",
    "orderCode": "OC-br-001",
    "externalOrderId": "f3bf9fa1-baa8-4050-9e37-4e6d905ee308",
    "businessDayDate": "2026-05-25",
    "status": "COMPLETED",
    "channel": { "code": "99", "uid": "6bac8d41-..." },
    "store": {
      "code": "BR-SP-001",
      "name": "Lab Store BR",
      "account": { "uid": "100", "name": "Sandbox" },
      "vendor":  { "uid": "100.2.1", "name": "Deli Burger BR" }
    },
    "fulfillment": { "service": { "code": "DELIVERY" } },
    "kitchen": {
      "status": "ready",
      "previousStatus": "preparing",
      "rank": 2,
      "occurredAt": "2026-06-10T18:24:29.000Z",
      "stationName": "Cocina caliente",
      "providerEventId": "kds-evt-8842",
      "kdsEventLogId": "1a2b3c4d-...",
      "source": "kds",
      "history": [
        { "status": "preparing", "rank": 1, "occurredAt": "2026-06-10T18:12:02.000Z", "stationName": "Cocina caliente" },
        { "status": "ready",     "rank": 2, "occurredAt": "2026-06-10T18:24:29.000Z", "stationName": "Cocina caliente" }
      ]
    }
  }
}

Identidad y contexto

orderId
string
UUID de la orden en Fire — matcheá contra el order.completed que recibiste.
orderCode
string
Código legible de la orden.
externalOrderId
string
El id de la orden en el canal/agregador — usalo para matchear de su lado.
status
string
Estado de negocio de la orden (COMPLETED / CANCELLED). Contexto — el recorrido de cocina es paralelo.
channel
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.
store
object
Ref mínima de tienda: code, name, más account { uid, name } y vendor { uid, name }.
fulfillment
object
service.codeDELIVERY o PICKUP. Le da sentido al status (un ready para delivery vs pickup).

El bloque kitchen

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” 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.status sigue siendo "COMPLETED" — el recorrido de cocina es paralelo al ciclo de pago/facturación.
  • No retrocede. Si el KDS reporta ready después de dispatched, Fire lo descarta (gate anti-regresión) y no emite nada.
  • No reemplaza a order.completed. Suscríbete a ambos: order.completed para el hecho de negocio, order.status_updated para el progreso físico.