Reportar eventos do site
POST/site-events
É por aqui que um site conectado conta o que aconteceu nele — um pedido pago, um cadastro, um carrinho abandonado —, até 100 eventos por chamada. É o que o plugin do WordPress chama, e qualquer plataforma própria com a API key de um site conectado pode chamar também.
O site não precisa saber quais fluxos existem: ele reporta o evento pelo nome, e todo fluxo
ativo e publicado com o gatilho de evento do site que escuta esse nome o recebe (no máximo
20 fluxos por evento, pela prioridade), assim como as execuções que estão esperando por
ele. No fluxo, o que vier em data fica disponível como {{trigger.<caminho>}} —
{{trigger.order.total}} —, ao lado de trigger.$event (id, name, occurred_at) e
trigger.$site (id, url, name).
Nomes. <origem>.<objeto>.<acontecimento>, em minúsculas, de 2 a 4 segmentos e até
80 caracteres: wc.order.paid, wp.user.registered. As origens wp, wc, wcs,
form e fcrc são as do catálogo do plugin; os eventos da sua própria integração vão em
custom — custom.assinatura.renovada.
Contato. O bloco contact passa pela mesma sincronização de POST /contacts/sync,
com os campos em snake_case e com os gatilhos ligados: um contato novo ou uma tag
adicionada iniciam os fluxos de sempre. Sem um contato válido, nenhum fluxo começa — mas
um bloco contact inválido não recusa o evento, que fica registrado com o motivo.
Resposta. 202 quer dizer registrado e enfileirado: nenhum fluxo roda dentro da
requisição. Cada evento responde por si — um inválido volta em rejected, com a posição e
o motivo, sem derrubar o lote; um id que o site já reportou conta em duplicates e não
muda nada. A entrega é "pelo menos uma vez": reenviar é seguro. Cada evento tem até 64 KB
entre data e contact.
Esta rota não responde 402: com a conta bloqueada, os eventos são aceitos e registrados
sem rodar fluxos, para que o site não acumule reenvios.
Idempotência. Com o header Idempotency-Key, uma repetição da mesma chamada devolve
a primeira resposta, com Idempotent-Replayed: true. A mesma chave com outro corpo é
recusada com 422 idempotency_key_reused; enquanto a primeira requisição ainda roda, a
repetição recebe 409 idempotency_in_progress.
Só a API key de um site conectado reporta eventos — ela vem com a permissão
events:write. Uma API key comum recebe 404 site_not_found.
Request
Responses
- 202
- 401
- 403
- 404
- 409
- 413
- 422
- 429
Eventos registrados. O destino de cada um está em accepted, duplicates ou rejected.
Token ausente, malformado, desconhecido ou revogado (authentication), ou
conta suspensa (tenant_inactive).
Uma sessão do painel em vez de uma API key (site_key_required), ou uma API key sem a permissão events:write (key_permission_denied).
A API key não está ligada a um site conectado (site_not_found). Conecte o site de novo pelo plugin.
O site está pausado no painel (site_paused); um evento traz um site_url diferente do endereço em que o site foi conectado (site_url_mismatch, com esse endereço em registeredUrl) — uma cópia de um site, como a de homologação, precisa ser conectada à parte, e o lote inteiro é recusado; ou uma requisição com a mesma Idempotency-Key ainda está em andamento (idempotency_in_progress).
O corpo passou de 512 KB (payload_too_large). Divida o lote.
Corpo inválido — events ausente, vazio ou com mais de 100 itens (invalid_request, com issues) —, ou a mesma Idempotency-Key com outro corpo (idempotency_key_reused). Um evento inválido não recusa o lote: ele volta em rejected.
Limite de requisições excedido (rate_limit).
Response Headers
Segundos a aguardar antes de tentar de novo.
Categoria do limite aplicada — send, media ou default.
Qual balde os outros headers descrevem — key (a API key), session (o painel) ou account (o teto da conta).
Teto de requisições da categoria na janela atual.
Requisições restantes na janela atual.