Como enviar leads de formulários para um CRM usando webhook
Webhook é o jeito mais direto de fazer um lead sair do formulário e entrar no CRM em segundos, com as respostas e a origem da campanha. Este guia explica o que é um webhook, mostra o payload exato que o BRForms envia e os três caminhos para ligar isso ao seu CRM, com ou sem ferramenta intermediária.
O que é um webhook
É uma requisição HTTP que um sistema faz automaticamente para uma URL de outro sistema quando um evento acontece. No caso de um formulário, o evento é o envio da resposta: a cada novo lead, o formulário faz um POST para a URL do seu CRM (ou da sua automação) com os dados do lead.
É o conteúdo enviado no corpo da requisição, normalmente em JSON: as respostas do lead, a data, o identificador da resposta e a atribuição (UTMs e identificadores de clique).
A diferença para uma integração "nativa" é que o webhook não depende de conector pronto entre duas ferramentas. Qualquer sistema que aceite uma requisição HTTP pode receber o lead: um CRM com endpoint de entrada, um fluxo no n8n, um cenário no Make, um Zap no Zapier ou um servidor seu. Por isso ele é o formato universal de integração de formulários.
A diferença para a planilha é o tempo e o controle: o webhook chega em segundos e permite decidir o que fazer com cada lead (criar negócio, distribuir, avisar o vendedor), enquanto a planilha é uma cópia estática. Os dois podem coexistir, como mostra o guia do ecossistema formulário, CRM e tráfego pago.
O fluxo: do formulário ao vendedor
Em tráfego pago, os minutos entre o envio e o primeiro contato pesam no resultado. O webhook resolve a parte técnica desse tempo: o lead está no CRM antes de o vendedor terminar de ler o aviso. A parte de processo (quem atende, em quanto tempo) continua sendo do time comercial.
O que o BRForms envia
A cada envio, o BRForms faz um POST com Content-Type: application/json para a URL configurada. As respostas vão rotuladas pela pergunta (com o texto da opção escolhida, não um código interno) e a atribuição completa do lead vai junto. Exemplo real de payload:
{
"events": ["lead", "lead-qualificado"],
"form": {
"id": "3f1c2a7e-8b4d-4c1e-9a2f-5d6e7f8a9b0c",
"title": "Diagnóstico gratuito"
},
"submission": {
"id": "9b8d4c21-6e5f-4a3b-8c7d-1e2f3a4b5c6d",
"created_at": "2026-08-25 14:32:10",
"answers": {
"Qual seu principal objetivo?": "Vender mais pelo WhatsApp",
"Segmento": "Serviços",
"Faturamento mensal": "R$ 10 mil a R$ 50 mil por mês",
"Nome": "Ana Ribeiro",
"E-mail": "ana@empresa.com.br",
"WhatsApp": "11999136806"
},
"utm_source": "facebook",
"utm_medium": "cpc",
"utm_campaign": "frio-diagnostico",
"utm_content": "video-01",
"utm_term": null,
"fbclid": "IwAR2x...",
"gclid": null,
"referrer": "https://l.facebook.com/",
"landing_url": "https://brforms.com/sua-conta/diagnostico?utm_source=facebook&utm_medium=cpc&utm_campaign=frio-diagnostico&utm_content=video-01",
"country": "BR"
}
}
| Campo | O que é e como usar |
|---|---|
events | Lista do que motivou o disparo: lead quando a opção "Enviar toda resposta concluída" está marcada, mais o nome de cada regra da Lógica com ação de webhook que foi atendida (ex.: lead-qualificado). É o campo que o seu fluxo usa para decidir a prioridade. |
form.id e form.title | Identificam o formulário. Úteis quando vários formulários apontam para a mesma URL e o fluxo precisa saber de qual veio o lead. |
submission.id | Identificador único da resposta. Um reenvio (automático ou manual) manda o mesmo id, então use-o para não criar o contato duas vezes. |
submission.created_at | Data e hora do envio em UTC, no formato AAAA-MM-DD HH:MM:SS. Converta para o fuso do CRM se ele não fizer isso sozinho. |
submission.answers | Objeto pergunta → resposta, com o rótulo de cada campo como chave. Seleção múltipla vira texto separado por vírgula; anexos viram o nome do arquivo. |
utm_source a utm_term | As cinco UTMs capturadas da URL do formulário. Chegam como null quando não estavam na URL. |
fbclid e gclid | Identificadores de clique da Meta e do Google. Guarde-os no CRM: são a chave para importar conversões offline quando o lead virar cliente. |
referrer e landing_url | Página que encaminhou o visitante e URL completa em que o formulário foi aberto (com todos os parâmetros). |
country | País do visitante em código de duas letras, estimado pela rede. |
Os detalhes técnicos da entrega: sucesso é qualquer resposta HTTP 2xx; redirecionamentos não são seguidos; o tempo limite é de 10 segundos; em caso de falha o BRForms tenta de novo duas vezes em seguida (2 e 5 segundos depois), depois reprocessa de hora em hora, e o detalhe da resposta tem um botão de reenvio manual. O User-Agent da requisição é mpa-forms-webhook. A referência completa está no guia do webhook na Central de Ajuda.
Três caminhos para chegar ao CRM
1. CRM com endpoint de entrada de leads
Vários CRMs oferecem uma URL própria para receber leads por webhook ou formulário externo (é comum em ferramentas como RD Station, HubSpot, Pipedrive e Kommo, cada uma com o próprio formato e o próprio lugar na interface). Quando existe, é o caminho mais curto: você cola a URL no BRForms e o CRM cria o contato. O ponto de atenção é o mapeamento: o CRM precisa saber que "E-mail" vai para o campo de e-mail e que utm_campaign vai para um campo personalizado. Alguns CRMs fazem isso na tela de configuração do endpoint; outros só aceitam o formato deles, e aí entra o caminho 2.
2. Intermediário: n8n, Make ou Zapier
É o caminho mais flexível e o mais usado. O fluxo tem três passos: um gatilho de webhook que recebe o JSON do BRForms, um passo de mapeamento (pegar answers["Nome"], answers["E-mail"], utm_campaign, gclid) e uma ação que cria o contato ou o negócio no CRM usando o conector da ferramenta. A vantagem é que a lógica fica visível e editável: dá para adicionar um passo de aviso no WhatsApp da equipe, um filtro por evento ou uma gravação em planilha sem tocar no formulário.
- Crie o fluxo com um gatilho do tipo webhook e copie a URL gerada.
- Cole a URL no BRForms (aba Tracking & Integrações → Webhook) e publique o formulário.
- Envie uma resposta de teste no formulário publicado: o payload aparece no gatilho e os campos ficam disponíveis para mapear.
- Adicione a ação do CRM (criar contato, criar negócio) e ligue cada campo do payload ao campo correspondente.
- Adicione o que mais fizer sentido: aviso ao vendedor, planilha de controle, tarefa de follow-up.
- Ative o fluxo e envie um segundo teste para confirmar que o contato chegou ao CRM com origem e respostas.
3. Planilha primeiro, CRM depois
Operações que ainda não têm CRM, ou que querem uma cópia independente de todos os leads, usam o Google Sheets como destino principal e alimentam o CRM a partir dela (por importação periódica ou por uma automação que lê linhas novas). O BRForms tem essa integração nativa, sem webhook; o guia como integrar formulários com Google Sheets mostra as colunas que chegam e o que fazer com a planilha. Quando o time crescer, o webhook entra sem precisar mexer no formulário.
Só o lead qualificado, ou todos com etiqueta
O webhook do BRForms tem dois gatilhos, e a combinação deles define a estratégia de entrega. A opção Enviar toda resposta concluída dispara em todo envio com o evento lead. As regras da aba Lógica com a ação disparar webhook disparam a mesma URL com um nome de evento próprio quando a condição é atendida (por exemplo, faturamento acima de R$ 50 mil dispara lead-qualificado).
| Configuração | O que o CRM recebe | Quando usar |
|---|---|---|
| Toda resposta, sem regras | Todos os leads com events: ["lead"] | Time comercial atende todo mundo e prioriza manualmente |
| Toda resposta + regra de qualificação | Todos os leads; os qualificados chegam com events: ["lead", "lead-qualificado"] num único envio | O fluxo distribui: qualificado para a fila prioritária, o resto para nutrição |
| Só a regra (opção "toda resposta" desmarcada) | Apenas os leads que atenderam à condição, com events: ["lead-qualificado"] | O CRM deve conter só leads com perfil; os demais ficam no BRForms e na planilha |
Na prática, a segunda linha é a mais útil: o CRM recebe tudo (nada se perde) e o campo events permite uma condição simples no fluxo, como "se a lista contém lead-qualificado, criar negócio na etapa Qualificado e avisar o vendedor; senão, criar só o contato". Os critérios para essa regra estão em como qualificar leads automaticamente antes de enviar para o comercial, e a configuração da regra no guia de lógica condicional.

Boas práticas para uma integração que não quebra
- Deduplique por
submission.id. Reenvios automáticos ou manuais mandam o mesmo id; antes de criar o contato, verifique se ele já existe. A maioria das ferramentas de automação tem um passo de "buscar antes de criar". - Proteja a URL com um token. O webhook não carrega assinatura; inclua um segredo na própria URL (
https://seu-fluxo.com/webhook?token=SEGREDO) e rejeite requisições sem ele. A URL precisa ser pública e começar com http ou https; endereços de rede interna não são aceitos. - Responda rápido e com 2xx. O BRForms espera até 10 segundos. Se o CRM demora para processar, receba o webhook, responda 200 e faça o trabalho pesado depois (todas as ferramentas de automação fazem isso por padrão).
- Mapeie a atribuição para campos do CRM. Crie campos personalizados para
utm_source,utm_medium,utm_campaign,utm_content,gclidefbclid. Sem eles, a origem morre no formulário e a análise de custo por venda por campanha fica impossível. - Normalize o telefone. O BRForms entrega o número como o lead digitou, com o DDD. Se o CRM ou a ferramenta de WhatsApp exige DDI, adicione o 55 no fluxo.
- Trate as falhas nas duas pontas. No BRForms, o status do webhook aparece no detalhe de cada resposta (com reenvio); na automação, ligue as notificações de erro. Uma URL que muda sem aviso é a causa mais comum de "sumiram os leads".
- Use um único webhook por formulário e distribua no fluxo. Precisa mandar para o CRM, para a planilha e para o WhatsApp do time? Aponte para o n8n, Make ou Zapier e faça a distribuição lá.
Casos de uso além de "criar o contato"
Depois que o payload está chegando, o fluxo vira um ponto de automação da operação comercial inteira. Alguns usos frequentes:
- Distribuição entre vendedores: rodízio simples (um lead para cada vendedor, em sequência) ou por regra (segmento, região, faturamento), usando as respostas do payload.
- Aviso no grupo do time: mensagem no WhatsApp, Slack ou Telegram com nome, principal resposta e origem, para o primeiro contato acontecer em minutos. Funciona junto com o aviso de lead por e-mail nativo.
- Tarefa de follow-up: criar uma atividade no CRM com prazo (ligar em até 1 hora para lead qualificado, em até 24 horas para os demais).
- Planilha de controle: uma linha por lead com origem e status inicial, para o gestor de tráfego acompanhar sem entrar no CRM.
- Enriquecimento: consultar o CNPJ informado numa API pública e preencher porte e segmento antes de criar o negócio.
- Fechamento do ciclo com a mídia: guardar
gclidefbclidno negócio e, quando ele for ganho, importar a conversão offline no Google Ads ou enviar o evento à Meta. O formulário entrega a chave; o CRM fecha o ciclo.
Como configurar no BRForms
- No editor do formulário, abra Tracking & Integrações → Webhook e cole a URL do seu CRM ou do gatilho da automação.
- Mantenha Enviar toda resposta concluída marcado para receber todos os leads (ou desmarque para enviar só os que atenderem a uma regra).
- Se quiser etiquetar o lead qualificado, vá em Lógica, crie uma regra com a condição (ex.: faturamento acima do seu corte) e adicione a ação disparar webhook com um nome de evento, como
lead-qualificado. - Publique o formulário e envie um teste. Na tela de Respostas, o detalhe do lead mostra o status do webhook (ok ou erro) e o botão de reenvio.

O webhook está disponível em todos os planos, inclusive no grátis, e as UTMs e identificadores de clique vão no payload sem configuração extra. Se o seu formulário atual está em outra ferramenta, a clonagem com IA recria os campos a partir do link, e o webhook é ligado em seguida.
Perguntas frequentes
O que é webhook em um formulário?
É o mecanismo pelo qual o formulário avisa outro sistema, em tempo real, que uma resposta foi enviada: ele faz uma requisição HTTP POST para uma URL configurada, com os dados do lead em JSON. É o formato universal para ligar formulários a CRMs e ferramentas de automação, sem depender de conector específico.
Meu CRM não tem webhook. Como faço?
Use um intermediário: n8n, Make ou Zapier recebem o webhook do formulário e criam o contato no CRM pelo conector da ferramenta (a maioria dos CRMs tem). Se nem isso existir, o caminho é a planilha: o lead vai para o Google Sheets e o CRM importa a partir dela.
O webhook envia só os leads qualificados?
Você escolhe. Com "Enviar toda resposta concluída" marcado, todos os leads são enviados, e os que atenderem a uma regra da Lógica chegam com o nome do evento (como lead-qualificado) na lista events. Com a opção desmarcada e uma regra ativa, só os leads que atenderem à condição são enviados.
O que acontece se o meu CRM estiver fora do ar?
O BRForms tenta de novo duas vezes em seguida, depois reprocessa de hora em hora até conseguir, e o detalhe da resposta mostra o erro com um botão de reenvio manual. O lead nunca se perde: ele fica salvo no painel do BRForms independentemente do webhook.
Como sei de qual campanha veio o lead que chegou no CRM?
Pelos campos utm_source, utm_medium, utm_campaign, utm_content e utm_term do payload, capturados automaticamente da URL do formulário. Mapeie-os para campos personalizados do CRM na integração. Os identificadores gclid e fbclid também vão junto, para conversões offline.
Crie uma conta grátis no BRForms, cole a URL do seu webhook e receba cada lead com respostas rotuladas, UTMs e identificadores de clique. Sem cartão de crédito.
Criar conta grátis