Saltar al contenido principal
Disponibilidad limitada. Este evento está en despliegue y se habilita por cuenta. Consulta con tu contacto en Fire si ya aplica a la tuya.
Este es el evento store.updated de Integration Flows, documentado en esta página. No es el webhook de integraciones de agregadores con el mismo nombre que se describe en Referencia de webhooks → store.updated: ese pertenece a otro sistema, tiene otra forma y no cambia.
store.updated se dispara cada vez que la configuración de una tienda se publica a sus canales: primera publicación, publicar un borrador, re-sincronizar, prender o apagar un canal, aplicar un override, archivar. Siempre trae la tienda completa — nunca un diff. Trátalo como un reemplazo total de lo que sabes de esa tienda. Igual que store.business_day_closed, es un evento a nivel de tienda: uno por publicación, no uno por orden ni por canal. Una publicación que toca varios canales produce un solo evento con todos los canales adentro, y cada flow que la recibe recibe ese evento una sola vez, con la tienda completa.

Condición de disparo

Cada publicación de una tienda emite un store.updated. data.publication.reason te dice qué lo produjo: Pueden aparecer valores nuevos de reason (el contrato ya admite retry) y de mode. Trata un valor que no conozcas como una publicación normal: el evento igual trae la tienda completa. Una publicación también puede programarse: al programarla no se emite nada; el evento se dispara cuando llega la hora programada, con publication.mode: "scheduled" y publication.scheduledAt. Cancelar una publicación programada no emite nada. No se emite nada cuando se guardan cambios sin publicarlos a los canales, ni cuando abre o cierra el día de negocio.
Un flow limitado a ciertos canales recibe una publicación cuando toca al menos uno de ellos — y recibe el evento completo, con todos los canales. Elige los que son tuyos desde data.channels.

Ejemplo — payload real (sanitizado y abreviado)

Referencia de data.*

data.store

object
El mismo bloque de tienda V4 que viaja en los eventos de orden — uid, code, name, phone, email, address, externalId, vendor, account, locationInfo (con country.phoneCode), metadata y storeFiscalConfig (puede ser null). Referencia de campos en order.completed → data.store. phone viene en formato internacional (+ y dígitos, p. ej. +5511999990000). Puede traer un número que no es real (por ejemplo, solo ceros) si la tienda no tiene teléfono cargado, o el valor tal como se guardó si el país no tiene código telefónico. metadata es la configuración llave-valor libre de la tienda: Fire no impone sus llaves, algunas integraciones leen llaves conocidas (en el ejemplo, taxesInfo y deliveryInfo), y es {} cuando la tienda no tiene ninguna. Sobre ese bloque, este evento agrega:

data.channels

array
Todos los canales configurados en la tienda — no solo los de esta publicación (esos están en publication.channels). Un canal o tipo de servicio apagado viaja igual, con enabled: false: así te enteras de que se dio de baja.

data.operationSchedule y data.salesSchedule

array
El horario de operación de la tienda. Cada entrada: day (MONDAY … SUNDAY), startTime y endTime (HH:mm).
array
El horario de venta de la tienda, con la misma forma. Es el respaldo de los canales y tipos de servicio sin horario propio — ya aplicado en channels[].fulfillmentTypes[].schedules.

data.publication

object
La publicación que produjo este evento.

La publicación más reciente gana

Cada evento trae la tienda completa, así que la publicación más reciente reemplaza todo lo anterior. Fire ya se ocupa del orden por ti:
  • Dentro de un flow, las publicaciones de una misma tienda se entregan de a una, en el orden en que se emitieron. Las tiendas distintas avanzan en paralelo.
  • Cuando una tienda tiene una publicación nueva que cubre los mismos canales, las entregas anteriores que todavía esperaban se cancelan; las demás salen igual, en orden.
publication.sequence sigue siendo un dato útil: puedes guardar la última que aplicaste por tienda y reconocer un payload viejo si alguna vez te llega — por ejemplo, una reejecución manual de una entrega vieja, que conserva su sequence original.

Archivar

Archivar una tienda emite un store.updated con publication.reason: "archive". Trae la tienda archivada: store.status: "ARCHIVED", store.active: false, y todos los canales y tipos de servicio con enabled: false (y los canales con published: false). Si quieres tratar el archivado aparte, ramifica por reason o por status.
Integration Flows no emite un evento store.deleted aparte: archivar es un store.updated.

Handler de ejemplo

Errores comunes

  • No es un diff. Un canal que falta en tu copia no está “sin cambios” — el evento lista todos los canales. Reemplaza, no combines.
  • Un canal apagado viaja igual. Lee enabled; no asumas que un canal presente en el evento está abierto.
  • publication.channels no es la lista de canales. Dice de qué trató esta publicación; los canales de la tienda están en data.channels.
  • No deduplices por event.id. Identifica la entrega; la publicación es data.publication.id.
  • Los códigos de canal conservan las mayúsculas con que se configuraron (iFood, KIOSK). Normaliza antes de comparar.

Eventos relacionados

store.business_day_closed

El otro evento a nivel de tienda: una tienda cerró su día de negocio.

order.completed

Referencia de campos del bloque store V4 que comparte este evento.