Criar uma Assinatura de Webhook
1
Abra sua Location
Vá para Dashboard → Locations e selecione a location que você deseja inscrever.
2
Abra as Configurações
Clique na aba Settings (Configurações) dessa location.
3
Criar assinatura
Role até a seção Webhooks e clique em Create subscription (Criar assinatura).
4
Preencha o formulário
Complete o diálogo Create subscription (veja os campos abaixo).
5
Salvar
Clique em Create subscription para salvar. Se “Enviar um ping de teste” estiver ativado, um evento fictício será enviado via POST ao seu endpoint para verificar se ele funciona.

Campos da Assinatura
Nome (obrigatório)
Um rótulo legível para que você possa identificar a assinatura depois (ex.:Sincronização CRM, Handler de Entrada n8n).
URL de Destino
O endpoint HTTPS que receberá os payloads dos eventos.Seu endpoint deve responder com um código de status
2xx. Respostas que não sejam 2xx são tratadas como falhas.Selecionar eventos
Escolha exatamente quais eventos devem acionar um webhook. Você pode combinar canais em uma única assinatura.- Inbound (Entrada) - uma mensagem de WhatsApp é recebida
- Outbound (Saída) - uma mensagem de WhatsApp é enviada
iMessage
- Inbound (Entrada) - um iMessage é recebido
- Outbound (Saída) - um iMessage é enviado
SMS
- Inbound (Entrada) - um SMS é recebido
- Outbound (Saída) - um SMS é enviado
Sistema
- Message failed (Falha na mensagem) - uma mensagem não pôde ser entregue (use para lógica de novas tentativas ou alertas)
Enviar um ping de teste após a criação
Quando ativado, o sistema enviará via POST um evento fictício para sua URL de Destino imediatamente após a criação da assinatura. Use isso para confirmar que seu endpoint está acessível e que seu handler interpreta os payloads corretamente.O corpo do ping de teste é
{ "type": "test.ping" }. Ele não está envolvido no envelope descrito abaixo.Formato de Entrega
Todo evento, exceto o ping de teste, é enviado via POST como JSON, envolvido neste envelope:Cabeçalhos
X-WA-Event-Id corresponde ao eventId no corpo.Payloads dos Eventos
O objetopayload difere de acordo com o canal e o tipo de evento. message.media[].type é sempre um dos seguintes: image, video, audio, document, file, ou unknown.
Mensagens de entrada
whatsapp.inbound, imessage.inbound, sms.inbound - disparado quando um contato envia uma mensagem para um dos seus números conectados.
- WhatsApp
- iMessage
- SMS
transcribedAudio fica no nível superior no WhatsApp, mas aninhado em meta.transcribedAudio no iMessage e SMS.Mensagens de saída
whatsapp.outbound, imessage.outbound, sms.outbound - disparado quando uma mensagem é enviada de um número conectado, seja digitada no dispositivo ou enviada pelo CRM.
Falha na mensagem
message.failed - disparado quando uma mensagem de saída em qualquer canal não pôde ser entregue após novas tentativas.
error.code indica por que o envio falhou. Veja Códigos de Erro para a lista completa e o que fazer em cada caso.
Novos códigos podem ser adicionados com o tempo, então trate códigos não reconhecidos como uma falha genérica em vez de assumir uma lista fixa.
Boas Práticas
- Use uma assinatura por integração. Mantém os logs e a rotação simples.
- Verifique com o ping de teste antes de confiar em uma assinatura em produção.
- Retorne
2xxrapidamente - delegue o trabalho lento a uma fila em segundo plano no seu handler. - Seja idempotente. Webhooks podem ocasionalmente ser reentregues.
- Delimite por canal. Não se inscreva em eventos que você não vai processar.
Gerenciando Assinaturas
Na seção Webhooks das Configurações da Location, você pode:- Ver todas as assinaturas ativas e a data de criação
- Excluir uma assinatura de que você não precisa mais
- Criar assinaturas adicionais para endpoints separados
Solução de Problemas
O ping de teste nunca chegou
O ping de teste nunca chegou
- Confirme que seu endpoint está acessível publicamente (sem localhost / IPs privados)
- Verifique se ele aceita
POSTe retorna2xx - Confira se regras de firewall/WAF não estão bloqueando o IP
Os eventos pararam de disparar
Os eventos pararam de disparar
- Certifique-se de que a assinatura não foi excluída
- Confirme que a location ainda tem uma instância conectada para o canal
- Verifique os logs do seu endpoint em busca de respostas
5xx(entregas com falha são retentadas algumas vezes e depois descartadas)
Eventos duplicados
Eventos duplicados
Os webhooks têm entrega “pelo menos uma vez” (at-least-once). Use o
eventId de nível superior (também enviado como o cabeçalho X-WA-Event-Id) para deduplicar do seu lado.
