Meta Tech Provider

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
Começar teste grátis

Nada é cobrado por 7 dias. Cancele quando quiser.

Não guardamos mensagensBusiness App + Cloud APIMCP para Claude e ChatGPTNo ar em 2 minutos
1 URL

O que a integração inteira é: um destino HTTPS por conta.

2 fields

messages e smb_message_echoes, os eventos do caminho de mensagem roteados para você.

hub.challenge

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.
Fazendo isso com o EasyCoexistence

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

Webhooks do WhatsApp explicados