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
- A Meta assina cada payload do webhook usando o App Secret da sua aplicação
- A assinatura é enviada no header
X-Hub-Signature-256
- 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
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
| Status | Cenário |
|---|
403 | Header X-Hub-Signature-256 ausente |
403 | Nenhuma conta encontrada para o phone number ID no payload |
403 | Conta está inativa |
403 | Assinatura 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)