Pular para o conteúdo principal
Webhooks enviam eventos, como mensagens recebidas, para o seu endpoint HTTPS. Gerencie endpoints com webhooks em um cliente de equipe ou de projeto e verifique cada solicitação com os utilitários de webhooks. Endpoints de projeto recebem os eventos dos Números do projeto, como mensagens e chamadas. Endpoints de equipe recebem eventos da equipe, como eventos do ciclo de vida de Clientes e campanhas. Veja Webhooks para todos os tipos de evento.

Crie um endpoint

Guarde o segredo de assinatura no seu gerenciador de segredos. A API o retorna apenas nesta resposta. secretAvailable é false quando a resposta não pode incluí-lo. Altere um endpoint com update(webhookId, { ... }). Defina enabled: false para pausar as entregas e chame delete(webhookId) para removê-lo.

Verifique um webhook

Toda entrega traz um cabeçalho x-webhook-signature. Verifique-o com os bytes exatos da solicitação antes de ler o evento:
Este handler roda como um Cloudflare Worker. A mesma chamada webhooks.verify funciona em qualquer handler que consiga ler o corpo bruto, incluindo Node.js, Deno e Bun. Leia o corpo como bytes. Interpretar o JSON e serializá-lo de novo muda os bytes e invalida a assinatura. webhooks.verify rejeita uma assinatura inválida antes de interpretar o corpo. Use webhooks.verifySignature para obter um resultado true ou false sem interpretar o corpo. As novas tentativas de entrega reutilizam o id do evento. Guarde os IDs já processados e ignore as repetições.

Trate cada tipo de evento

isEvent restringe um evento ao tipo da carga dele:
Tipos de evento que o SDK instalado não conhece continuam sendo verificados. A carga deles não é tipada.

Envie uma entrega de teste

Em um cliente de equipe, test aceita apenas eventType. Em um cliente de projeto, ele também aceita um body de evento nativo codificado em base64, junto com o sessionId de um Número desse projeto. Veja Envie uma entrega de teste.

Teste seu receptor sem a API

webhooks.createFixture assina o corpo de um evento localmente, sem chamar a API. Use-o em testes unitários:
Passe fixture.body para o seu handler sem alterações. Use um segredo de teste, nunca um de produção. As fixtures abrangem apenas o formato nativo. Endpoints que usam o formato da Meta são assinados com o cabeçalho X-Hub-Signature-256. Veja Formatos de entrega.

Troque um segredo de assinatura

A resposta retorna o novo segredo uma única vez. O segredo anterior continua válido até previousValidUntil. Faça o deploy do novo segredo no seu receptor antes disso.

Inspecione entregas e tente novamente

listAttempts(deliveryId) e retrieveAttempt(deliveryId, attemptId) mostram cada tentativa. Uma tentativa que falhou inclui um trecho com dados ocultados da resposta do seu endpoint. Para enviar de novo um evento mais antigo, veja Reenvie um evento.

Mudanças nos recursos do Número

O beta de recursos por número, para equipes inscritas, emite session.capabilities_updated. As versões do SDK que incluem esse evento expõem SessionCapabilitiesUpdatedPayload e o restringem com isEvent(event, "session.capabilities_updated"). A carga contém a visão canônica dos recursos do número e changedKeys. Veja Recursos por número para as regras de elegibilidade e de eventos em fila. Verifique a assinatura antes de examinar a carga.

Notificações de identidade da API oficial

Os webhooks da API oficial mantêm os metadados opcionais parentBsuid. Um evento contact.update com identityChange informa a nova identidade e a identidade anterior, quando o WhatsApp a fornece. Não mescle registros de contato só porque um ID pai coincide. Veja Identidades de usuário para os campos transmitidos e as restrições do ID pai. Fixe uma versão do SDK cujos tipos de webhook incluam esses campos antes de depender do acesso tipado.