Pular para o conteúdo principal
Qualquer um pode mandar um POST para o seu endereço. A assinatura prova que a entrega saiu da Westhetics, para este webhook, e não foi alterada no caminho. A Westhetics segue o Standard Webhooks, o mesmo padrão de outros serviços: dá para usar as bibliotecas prontas.

Os três cabeçalhos

A assinatura é o HMAC-SHA256 de {webhook-id}.{webhook-timestamp}.{corpo cru}, com a chave que vem depois do whsec_ do segredo, decodificada de base64.
Use o corpo cru, como chegou, byte a byte. Se o seu framework já interpretou o JSON e você serializar de novo, a assinatura não confere.

Com a biblioteca do padrão

As bibliotecas aceitam o segredo com o prefixo whsec_, conferem a assinatura em tempo constante e recusam entrega com mais de 5 minutos de diferença no relógio.

Sem biblioteca

O mesmo cálculo, à mão. Compare em tempo constante e recuse diferença de relógio acima de 5 minutos.

Depois de conferir

  • Ignore o repetido. A mesma entrega pode chegar de novo (uma tentativa que você respondeu tarde, um reenvio manual). Guarde o webhook-id e descarte o que já tratou.
  • Não confie na ordem. Ordene por createdAt do evento.
  • Responda rápido. 2xx em até 10 segundos; o trabalho vai para uma fila.

O segredo

O segredo whsec_… aparece quando o webhook é criado. Depois, a gestora vê em Revelar segredo, na tela do app, e o próprio app pede por GET /v1/webhooks/{id}/secret. Cada revelação fica na trilha. Trocar o segredo gera outro e mantém o anterior válido por 24 horas. Nesse tempo, cada entrega leva as duas assinaturas em webhook-signature, separadas por espaço: o seu código aceita a entrega se uma das duas conferir. Troque o segredo no seu servidor dentro desse prazo.
Última modificação em 16 de outubro de 2026