Skip to main content
O Coexy entrega eventos via POST com Content-Type: application/json. O header x-coexy-signature carrega a assinatura HMAC-SHA256 — verifique-a antes de processar qualquer dado.

Headers de cada entrega

Use o webhook-id para descartar entregas repetidas. A assinatura cobre só o body.

Formato do payload

O body entregue é o objeto value do evento da Meta (WhatsApp Cloud API), sem transformações: o mesmo conteúdo que a Meta coloca em entry[].changes[].value. O envelope (object, entry, changes, field) não é repassado. A exceção são os eventos próprios do Coexy, channel_status_update e channel_health_update, descritos em Webhooks. Exemplo de evento messages:
Use metadata.phone_number_id para saber de qual canal veio o evento. Os eventos não trazem o nome do campo: se o webhook assina mais de um evento, identifique o tipo pelo conteúdo (messages/statuses no evento messages; event: "channel_status_update" ou "channel_health_update" nos eventos do Coexy; message_template_id em message_template_status_update) ou crie um webhook por tipo de evento. Para a estrutura de cada tipo de evento, consulte a documentação oficial da Meta (o body corresponde ao value dos exemplos):

Processando eventos

Python (FastAPI)

verify_signature está em Segurança.
O mesmo evento pode chegar mais de uma vez (retentativas e reenvio manual). Descarte entregas repetidas pelo header webhook-id. Ao persistir mensagens, use o id de cada mensagem (o wamid) — um upsert com on conflict (wamid) do nothing evita duplicatas; os status de uma mesma mensagem compartilham o wamid.