GET /v1/whatsapp/messages/{id} repetidamente, a Superlead envia um POST para a sua URL a cada transição de status, a cada mensagem recebida de um lead e a cada mensagem que a sua equipe envia pelo app do WhatsApp.
É assim que se resolve o caso clássico do WhatsApp: a Meta aceita um envio fora da janela de 24 horas (201 accepted) e o falha segundos depois, de forma assíncrona — a falha chega no seu webhook, com o motivo.
Configuração
1
Cadastre seu endpoint
No painel da Superlead, em Integrações → Webhooks, adicione a URL HTTPS que vai receber os eventos.
2
Guarde o signing secret
Na criação, você recebe um signing secret (
whsec_...) — ele é exibido nesse momento; guarde em local seguro. É com ele que você verifica a autenticidade de cada entrega.3
Responda 2xx rápido
Ao receber um evento, responda
2xx imediatamente e processe de forma assíncrona. Entregas sem 2xx são reenviadas automaticamente com backoff.Evento whatsapp.message.updated
Disparado a cada transição de status de uma mensagem enviada: sent, delivered, read ou failed — um evento por transição.
- Correlação: o
wamidé o mesmo retornado porPOST /v1/whatsapp/messages— use-o para casar o evento com o envio no seu sistema. error: presente apenas quandostatuséfailed. Ocodeé o código numérico da Meta — o mesmo que aparece comoupstream_codeemGET /v1/whatsapp/messages/{id}. Para os significados, veja o catálogo de erros.- Para status de sucesso (
sent,delivered,read),errorvemnull.
Evento whatsapp.message.received
Disparado quando um lead envia mensagem para o seu número. Exemplo com texto:
type, o corpo traz o bloco correspondente no lugar de text: image/video/document (com link, mimeType, caption), audio (com voice), location, contacts ou interactive (resposta de botão/lista). Mensagens vindas de anúncios click-to-WhatsApp incluem também o bloco referral com os dados da campanha (sourceId, headline, ctwaClid, ad, campaign).
Evento whatsapp.message.sent
Disparado quando alguém da sua equipe envia mensagem a um lead pelo app WhatsApp Business ou pelo WhatsApp Web/desktop (número em modo coexistência). É o sinal de que um humano está na conversa.
Envios feitos pela sua própria integração via POST /v1/whatsapp/messages não geram este evento — você já sabe o que enviou, e o acompanhamento de entrega chega pelo whatsapp.message.updated.
- Direção:
fromé o seu número conectado à Superlead etoé o telefone do lead — o espelho exato dowhatsapp.message.received. - Correlação: use
message.topara casar o evento com o lead no seu sistema (por exemplo,GET /v1/leads?phone=...). - Corpo por tipo: mesmos blocos do
received—text,image,video,audio,document,sticker,locationecontacts. Paravideoedocument, o campolinkvem omitido (o arquivo ainda não foi processado pela Superlead).
O objeto sender
Identifica quem enviou a mensagem:
Verificando a assinatura
Cada entrega vem assinada nos headerssvix-id, svix-timestamp e svix-signature (infraestrutura Svix — mesmo padrão usado por Clerk, Resend e outros). Verifique com a biblioteca da sua linguagem e o signing secret do endpoint:
Boas práticas
- Idempotência: reentregas acontecem (é a garantia de “pelo menos uma vez”). Use o
iddo evento (evt_...) como chave de deduplicação no seu lado. - Ordem não garantida: um
deliveredpode chegar depois de umread. Use otimestampdo evento, não a ordem de chegada. - Webhook + polling: para fluxos críticos, combine os dois — webhook como caminho principal e
GET /v1/whatsapp/messages/{id}como reconciliação periódica.