Webhooks do WhatsApp: mensagens direto no seu servidor
Um webhook do WhatsApp é um endpoint HTTPS que você indica, e a Meta posta eventos nele: mensagens recebidas, status de entrega, mudanças de qualidade e atualizações de conta. Num número em Coexistência o destino pode ser o seu próprio servidor, então as conversas não passam por provedor nenhum.
- A Meta posta eventos direto na sua URL
- Seu endpoint, não a plataforma de um provedor
- Um override por conta do WhatsApp Business
Nada é cobrado por 7 dias. Cancele quando quiser.
O que a integração inteira é: um destino HTTPS por conta.
messages e smb_message_echoes, os eventos do caminho de mensagem roteados para você.
O valor que a Meta manda no handshake GET e que seu endpoint precisa devolver.
O que a Meta manda de fato para um webhook?
Eventos, em categorias, e a distinção entre elas decide sua arquitetura.
O caminho de mensagem carrega o que os clientes enviam e, num número em Coexistência, ecos do que sua equipe envia pelo app do WhatsApp Business. São os campos messages e smb_message_echoes, e são os que contêm conteúdo de conversa.
O caminho operacional carrega todo o resto: account_update quando um estado de conexão muda, phone_number_quality_update quando qualidade ou throughput se move, account_alerts, account_review_update, business_capability_update e phone_number_name_update. Esses não contêm conteúdo de conversa e são do que o monitoramento é feito.
Um provedor que se coloca no caminho de mensagem recebe o primeiro grupo. Um que não se coloca, não recebe.
Como a Meta verifica um endpoint?
Com uma requisição GET antes de entregar qualquer coisa, e falhar nisso é o motivo mais comum de uma configuração que parece pronta nunca receber mensagem.
A Meta chama sua URL com hub.mode valendo subscribe, seu hub.verify_token, e um valor hub.challenge. Seu endpoint precisa devolver aquele challenge como corpo bruto da resposta, não embrulhado em JSON e sem nada acrescentado. Se não devolver, a Meta nunca começa a entregar, e nenhum painel vai avisar.
O endpoint também precisa ser HTTPS. Um endpoint que devolve 404 em silêncio, ou um atrás de uma camada de autenticação que rejeita a Meta, parece idêntico a uma configuração funcionando até a primeira mensagem não chegar.
O destino pode apontar para o seu próprio servidor?
Pode, e é essa a parte que difere entre provedores.
A Meta permite que um app sobrescreva onde uma dada conta do WhatsApp Business entrega os webhooks. Nós apontamos esse override para a sua URL, o que move os eventos do caminho de mensagem do nosso callback para o seu. Ficamos com os eventos operacionais, porque o painel e os alertas são feitos deles.
A consequência é arquitetural, não uma política que a gente publica. Conteúdo de conversa não tem onde ser armazenado do nosso lado, porque nunca é entregue a nós. Uma conta sem override cai no nosso callback padrão, onde o handler descarta esses eventos sem persistir.
O que acontece com o destino quando um número reconecta?
Ele é removido, e essa é a falha que quase ninguém planeja.
O destino não é propriedade do número de telefone. É um override na assinatura do nosso app à conta do WhatsApp Business. Quando uma conexão é removida, pela regra de quatorze dias de inatividade da Meta ou por outro motivo, o app é desinstalado daquela conta e o override vai junto.
Reconectar restaura o envio e restaura o monitoramento. Não restaura a entrega no seu servidor, e nada reporta erro, então o primeiro sinal é um cliente dizendo que ninguém respondeu. Nós reaplicamos o override em toda reconexão, porque isso aconteceu com um número real que reconectou limpo e ficou mudo.
Erros comuns
- Devolver JSON no GET de verificação. A Meta quer o valor bruto de hub.challenge e nada mais.
- Usar uma URL temporária ou de teste. A Meta continua entregando nela depois que a ferramenta que a gerou para de escutar.
- Achar que o destino sobrevive a uma reconexão. Ele vive numa assinatura de app e é desinstalado junto.
- Colocar o endpoint atrás de autenticação que rejeita a requisição da Meta.
A EasyCoexistence aponta o override de webhook para o seu endpoint, valida antes da chamada, e reaplica automaticamente depois de qualquer reconexão. A partir de R$ 29,90 por número por mês, caindo para R$ 7,90 em volume, com os 7 primeiros dias grátis.
Perguntas frequentes
Minhas mensagens passam pela EasyCoexistence?
Não. O override manda os eventos do caminho de mensagem da Meta direto para o seu endpoint. Eventos de uma conta sem override caem no nosso callback e são descartados sem persistir.
Posso mudar o destino depois?
Pode, a qualquer momento, pelo painel ou pelo conector MCP. Passar null volta para o nosso padrão.
E se meu servidor estiver fora quando a Meta entregar?
A Meta tenta de novo por um período e depois para. As mensagens ainda chegam no app do WhatsApp Business no celular, então o negócio não perde nada mesmo quando a integração perde.
Um webhook só serve para vários números?
Serve. Aponte todos para o mesmo endpoint e ramifique pelo phone number id que recebe, no payload.
Continue lendo
Pronto para começar?
Configure o WhatsApp Coexistence em minutos, não em meses. O aplicativo continua funcionando no celular.
Começar teste grátisNada é cobrado por 7 dias. Cancele quando quiser.Verificado em