Skip to main content

Verificação da assinatura HMAC

Todo evento carrega o header x-coexy-signature com uma assinatura HMAC-SHA256 no formato sha256=<hex>. Rejeite qualquer requisição sem assinatura válida.
Não use comparação de string direta (signature === expected). A Web Crypto API com crypto.subtle.verify usa comparação em tempo constante, prevenindo timing attacks. Nunca reimplemente isso manualmente.

Usando no endpoint


Responda 200 antes de processar

O Coexy aguarda 10 segundos pela resposta. Se seu endpoint demorar mais, o evento é marcado como falha e reenviado. Padrão correto: responda 200 imediatamente, processe em background.
Em Supabase Edge Functions, use EdgeRuntime.waitUntil() para garantir que o processamento conclua mesmo após o retorno da Response. Veja o guia Supabase.

Idempotência

O Coexy pode reenviar o mesmo evento em caso de falha de rede ou timeout. Use o campo wamid como chave de idempotência.

Credenciais

Nunca exponha essas credenciais no frontend, logs, ou repositórios públicos. Se o hmac_secret for comprometido, delete o webhook e crie um novo — um novo secret será gerado.