Webhooks que o CrazyLeads recebe
Estes endereços são o contrário do resto desta documentação: em vez de você chamar o CrazyLeads, é o sistema de origem que chama. Você cola o endereço lá — na Hotmart, na Tally, na Kiwify — e os dados passam a chegar sozinhos.
Os endereços
O endereço exato, com a sua chave, aparece na tela da fonte quando você a cria — não monte na mão. A coluna da direita diz como o CrazyLeads confere que a chamada veio mesmo de quem diz ter vindo.
| Origem | Como provamos que é você |
|---|---|
Hotmart webhook.crazyleads.com.br/webhooks/hotmart/v1/{chave} | Token da integração, conferido a cada chamada. Cabeçalho X-HOTMART-HOTTOK |
Kiwify webhook.crazyleads.com.br/webhooks/kiwify/v1/{chave}?signature=… | Assinatura do corpo com o segredo da fonte. Parâmetro signature, na própria URL |
Tally webhook.crazyleads.com.br/webhooks/tally/v1/{chave} | Assinatura do corpo com o segredo da integração. Cabeçalho tally-signature |
Zoom webhook.crazyleads.com.br/webhooks/zoom/v1 | Assinatura com carimbo de tempo, mais o desafio de validação da Zoom. Cabeçalhos x-zm-signature e x-zm-request-timestamp |
SendGrid webhook.crazyleads.com.br/webhooks/sendgrid/v1/{chave} | Assinatura de curva elíptica (ECDSA) com a chave pública da sua conta. Cabeçalhos X-Twilio-Email-Event-Webhook-Signature e -Timestamp |
Meta (Facebook e Instagram via Página) apiserver.crazyleads.com.br/api/sources/meta/webhook/ | Assinatura do corpo com o segredo do aplicativo Facebook; verificação por desafio ao assinar. Callback público no apiserver — a Meta chama direto, sem proxy Next. Cabeçalho X-Hub-Signature-256 |
Meta (Instagram Login direto) apiserver.crazyleads.com.br/api/sources/instagram/webhook/ | Assinatura com o segredo do aplicativo Instagram Login. Mesmo contrato do webhook Facebook: URL pública no apiserver, HMAC, sem sessão de usuário. Cabeçalho X-Hub-Signature-256 |
Webhook genérico webhook.crazyleads.com.br/webhooks/webhook/v1/{chave} | Assinatura do corpo — configurável, e é você quem decide se existe. Cabeçalho x-webhook-signature |
ActiveCampaign webhook.crazyleads.com.br/webhooks/activecampaign/v2/{chave} | A chave do endereço é a credencial: não há assinatura no corpo. A própria URL |
Formulário (form proxy) webhook.crazyleads.com.br/form/{projeto}/{slug} | Endereço público por desenho: recebe o envio do formulário do navegador. A própria URL |
Pixel pixel.crazyleads.com.br/events | Endereço público por desenho: o pixel roda no navegador do visitante. Identificação do projeto no corpo |
Quando o endereço é a credencial
Em parte dos receptores a chave que vai na URL é a única coisa que identifica você — porque o sistema de origem não assina o que envia. Nesses casos, o endereço é um segredo: não publique em repositório, não cole em ticket de suporte, não deixe em página de configuração compartilhada. Se desconfiar que vazou, recrie a fonte para gerar um endereço novo.
No webhook genérico a assinatura é sua decisão: configure um segredo e assine o corpo. Sem segredo configurado, nada distingue uma chamada sua de qualquer outra que conheça o endereço — e aí vale a mesma regra do parágrafo acima, com menos folga.
O que esperar da entrega
O receptor grava o que chegou e responde rápido; o processamento vem depois, então o 200 significa recebido, não já virou lead. Reenvio em caso de falha é bem-vindo, mas não é tratado igual em todos: Hotmart, ActiveCampaign e o webhook genérico derivam uma chave de idempotência do próprio corpo, então o mesmo conteúdo repetido não vira registro novo. Nos demais isso não está garantido — se a sua origem reenvia com frequência, mande um identificador estável no corpo. Assinatura que não confere é recusada com 403 e a chamada não entra — se uma integração parou de aparecer, o segredo divergente entre os dois lados é a primeira coisa a conferir.