Saltar para o conteúdo principal
Disponibilidade limitada. Este evento está em implantação e é habilitado por conta. Consulte seu contato no Fire para saber se já se aplica à sua.
Este é o evento store.updated de Integration Flows, documentado nesta página. Não é o webhook de integrações de agregadores com o mesmo nome descrito em Referência de webhooks → store.updated: aquele pertence a outro sistema, tem outro formato e não muda.
store.updated é disparado toda vez que a configuração de uma loja é publicada nos seus canais: primeira publicação, publicar um rascunho, ressincronizar, ligar ou desligar um canal, aplicar um override, arquivar. Ele sempre traz a loja completa — nunca um diff. Trate-o como uma substituição total do que você sabe sobre essa loja. Assim como store.business_day_closed, é um evento no nível da loja: um por publicação, não um por pedido nem por canal. Uma publicação que envolve vários canais gera um único evento com todos os canais dentro, e cada flow que a recebe recebe esse evento uma única vez, com a loja completa.

Condição de disparo

Cada publicação de uma loja emite um store.updated. data.publication.reason diz o que o gerou: Podem aparecer valores novos de reason (o contrato já admite retry) e de mode. Trate um valor que você não conhece como uma publicação normal: o evento continua trazendo a loja completa. Uma publicação também pode ser agendada: ao agendá-la nada é emitido; o evento é disparado quando chega a hora agendada, com publication.mode: "scheduled" e publication.scheduledAt. Cancelar uma publicação agendada não emite nada. Nada é emitido quando mudanças são salvas sem publicá-las nos canais, nem quando o dia de negócio abre ou fecha.
Um flow limitado a certos canais recebe uma publicação quando ela envolve pelo menos um deles — e recebe o evento completo, com todos os canais. Escolha os que são seus em data.channels.

Exemplo — payload real (sanitizado e abreviado)

Referência de data.*

data.store

object
O mesmo bloco de loja V4 que viaja nos eventos de pedido — uid, code, name, phone, email, address, externalId, vendor, account, locationInfo (com country.phoneCode), metadata e storeFiscalConfig (pode ser null). Referência de campos em order.completed → data.store. phone vem em formato internacional (+ e dígitos, p. ex. +5511999990000). Pode trazer um número que não é real (por exemplo, só zeros) se a loja não tem telefone cadastrado, ou o valor como foi salvo se o país não tem código telefônico. metadata é a configuração chave-valor livre da loja: o Fire não impõe as chaves, algumas integrações leem chaves conhecidas (no exemplo, taxesInfo e deliveryInfo), e é {} quando a loja não tem nenhuma. Sobre esse bloco, este evento acrescenta:

data.channels

array
Todos os canais configurados na loja — não só os desta publicação (esses estão em publication.channels). Um canal ou tipo de serviço desligado viaja do mesmo jeito, com enabled: false: é assim que você fica sabendo que ele saiu do ar.

data.operationSchedule e data.salesSchedule

array
O horário de operação da loja. Cada entrada: day (MONDAY … SUNDAY), startTime e endTime (HH:mm).
array
O horário de venda da loja, no mesmo formato. É o padrão para canais e tipos de serviço sem horário próprio — já aplicado em channels[].fulfillmentTypes[].schedules.

data.publication

object
A publicação que gerou este evento.

A publicação mais recente vence

Cada evento traz a loja completa, então a publicação mais recente substitui tudo o que veio antes. O Fire já cuida da ordem para você:
  • Dentro de um flow, as publicações de uma mesma loja são entregues uma por vez, na ordem em que foram emitidas. Lojas diferentes avançam em paralelo.
  • Quando uma loja recebe uma publicação nova que cobre os mesmos canais, as entregas anteriores que ainda estavam esperando são canceladas; as demais saem do mesmo jeito, em ordem.
publication.sequence continua sendo um dado útil: você pode guardar a última que aplicou por loja e reconhecer um payload antigo se algum dia ele chegar — por exemplo, uma reexecução manual de uma entrega antiga, que mantém sua sequence original.

Arquivar

Arquivar uma loja emite um store.updated com publication.reason: "archive". Ele traz a loja arquivada: store.status: "ARCHIVED", store.active: false, e todos os canais e tipos de serviço com enabled: false (e os canais com published: false). Se quiser tratar o arquivamento à parte, ramifique por reason ou por status.
Integration Flows não emite um evento store.deleted separado: arquivar é um store.updated.

Exemplo de handler

Erros comuns

  • Não é um diff. Um canal que falta na sua cópia não está “sem mudanças” — o evento lista todos os canais. Substitua, não mescle.
  • Um canal desligado viaja do mesmo jeito. Leia enabled; não assuma que um canal presente no evento está aberto.
  • publication.channels não é a lista de canais. Diz do que tratou esta publicação; os canais da loja estão em data.channels.
  • Não deduplique por event.id. Ele identifica a entrega; a publicação é data.publication.id.
  • Os códigos de canal mantêm as maiúsculas com que foram configurados (iFood, KIOSK). Normalize antes de comparar.

Eventos relacionados

store.business_day_closed

O outro evento no nível da loja: uma loja fechou seu dia de negócio.

order.completed

Referência de campos do bloco store V4 que este evento compartilha.