Skip to main content

Segurança do Webhook

Todas as requisições de webhook recebidas da Meta são verificadas usando assinaturas HMAC-SHA256 para garantir autenticidade e integridade.

Como Funciona

  1. A Meta assina cada payload do webhook usando o App Secret da sua aplicação
  2. A assinatura é enviada no header X-Hub-Signature-256
  3. O Grwthy verifica a assinatura antes de processar qualquer evento
Meta → POST https://grwthy.com/whatsapp/webhook
       Header: X-Hub-Signature-256: sha256=<hmac_hex>
       Body: { ... payload do webhook ... }

       Assinatura verificada por conta

       ✅ Válida → evento processado
       ❌ Inválida → 403 Forbidden

Formato da Assinatura

O header X-Hub-Signature-256 contém:
sha256=<hash HMAC-SHA256 codificado em hex>

Verificação

A assinatura é verificada por conta usando o appSecret que você forneceu ao criar a conta. A conta é identificada pelo phone_number_id no payload do webhook.

Respostas de Erro

StatusCenário
403Header X-Hub-Signature-256 ausente
403Nenhuma conta encontrada para o phone number ID no payload
403Conta está inativa
403Assinatura não corresponde

Gerenciamento do App Secret

  • O App Secret é armazenado de forma segura e criptografado — nunca é exposto nas respostas da API
  • Definido durante a criação da conta pelo campo appSecret
  • Pode ser atualizado via PATCH /whatsapp/accounts/:id se rotacionado na Meta
Se você rotacionar o App Secret no painel da Meta, atualize-o imediatamente via API para evitar falhas na verificação do webhook.

Boas Práticas

  • Mantenha o App Secret sincronizado entre a Meta e o Grwthy
  • Monitore erros 403 no webhook — podem indicar secrets desconfigurados
  • Use HTTPS para todos os endpoints de webhook (exigido pela Meta)