Tema
Do formulário do site para o WhatsApp sem ninguém digitar: o gatilho de webhook
Todos os outros gatilhos de um fluxo esperam o cliente escrever. O Webhook é o contrário: um sistema de fora (o formulário do site, o CRM, o ERP, uma planilha automatizada) avisa o Columba de que algo aconteceu, e o Columba inicia a conversa no WhatsApp com a pessoa certa, já sabendo o que ela pediu.
O caso mais comum é o lead do site. Hoje, o formulário manda um e-mail, alguém lê quando lê, copia o telefone, abre o WhatsApp e escreve "oi, vi que você se interessou". Com o webhook, isso acontece no segundo seguinte ao envio, e a IA ou uma sequência de mensagens faz o primeiro contato.
Como funciona
- Você cria um fluxo com o gatilho Webhook. Ao salvar, o Columba gera a URL e o token do fluxo.
- O sistema de origem faz um
POSTnessa URL com os dados em JSON e o token no cabeçalhoX-Webhook-Token(ou em?token=). - O Columba localiza o contato pelo telefone ou cria um novo, abre a conversa no número de WhatsApp escolhido e inicia o fluxo.
- Tudo o que veio no JSON fica disponível no fluxo como
{{webhook.campo}}, inclusive campos aninhados ({{webhook.lead.origem}}).

A configuração
| Campo | O que é |
|---|---|
| URL e Token | Gerados ao salvar. O botão de atualizar gera um token novo e invalida o antigo |
| Canal | WhatsApp: abre a conversa e o fluxo fala com o contato. Sem canal: o fluxo roda só ações internas (tags, ficha do contato, funil, chamados, chamada HTTP, avisos à equipe), sem abrir conversa |
| Número de WhatsApp | Por qual número a conversa nasce. Sem escolha, o primeiro número público conectado |
| Telefone, Nome, E-mail | O caminho de cada dado dentro do JSON, com ponto para níveis (lead.telefone) |
| DDI padrão | Aplicado quando o telefone vem sem código do país (55). Telefone com + é respeitado |
| Tags no contato | Aplicadas ao contato criado ou encontrado |
| Se este contato já estiver em um fluxo | Reiniciar (padrão) interrompe o fluxo atual daquela conversa e começa este. Ignorar mantém o que estava rodando e só registra o evento |
Só o telefone é obrigatório. O resto você mapeia com um clique depois do primeiro evento de teste.
O evento de teste
A parte que mais economiza tempo: com o painel do gatilho aberto, o Columba fica ouvindo. Mande um POST de teste (o exemplo em curl está no próprio painel, pronto para copiar) e o último payload aparece com todos os campos. Cada campo tem um botão para marcá-lo como Telefone, Nome ou E-mail. Você não precisa saber de antemão como o seu formulário nomeia as coisas.

Um fluxo em rascunho só registra o evento; para executar de verdade, publique.
Um fluxo de primeiro contato
O fluxo da imagem faz o básico bem feito:
- Gatilho Webhook, com telefone em
lead.telefone, nome emlead.nome, tag Lead. - Enviar Texto: "Olá,
{{contact.name}}! Vi que você pediu um orçamento pelo nosso site ({{webhook.lead.origem}}). Posso te ajudar por aqui mesmo?" - Aguardar Resposta com timeout de 4 horas.
- Se respondeu, Resposta IA qualifica, com a mensagem original do formulário no prompt (
{{webhook.lead.mensagem}}) para não perguntar de novo o que o lead já disse. - Se não respondeu, Notificar Equipe: "Lead do site sem resposta há 4 h", para um humano decidir se liga.
O que o lead escreveu no formulário é a diferença entre "oi, vi que você se interessou" e "oi, vi que você quer 40 cadeiras para o auditório". Use os campos do payload no prompt da IA e nas mensagens.
As travas de segurança
Iniciar conversa é o tipo de automação que pode virar spam se não tiver freio. Por isso:
- Conversa em atendimento humano nunca é interrompida. Se o contato está falando com alguém da equipe, o evento fica registrado e o fluxo não roda.
- Limite de 60 eventos por minuto por fluxo.
- Contato bloqueado ou descadastrado não recebe nada.
- A resposta do webhook diz se o fluxo iniciou e, se não, o motivo. O sistema de origem pode registrar isso.
- Contatos diferentes rodam em paralelo, cada um na sua conversa. A regra "se já estiver em um fluxo" vale só para o mesmo contato.
E a trava que não é técnica: o webhook só cabe para quem pediu contato. Formulário preenchido, pedido feito, boleto que a própria pessoa gerou. Lista comprada não é evento. O WhatsApp bane número que inicia conversa com quem não pediu, e a política de campanhas vale aqui também.
QR Code ou API oficial?
Num número conectado por QR Code, o fluxo manda texto livre para qualquer contato, então o primeiro contato sai como está escrito no nó. Num número pela API oficial da Meta, iniciar uma conversa fora da janela de 24 horas exige um modelo aprovado, e o nó Enviar Texto não é um modelo. Para o gatilho de webhook, prefira um número por QR Code, ou combine os dois como descrito em API oficial ou QR Code.
Três usos além do formulário
- Lead novo no CRM (ou numa planilha com automação): o CRM chama o webhook e a IA faz a primeira abordagem antes de o vendedor ver o lead. O vendedor entra pela transferência quando o lead está qualificado.
- Pedido aprovado no ERP: "seu pedido 4821 foi aprovado, previsão de entrega dia 30". Canal WhatsApp, sem IA, uma mensagem e encerra.
- Boleto vencido: modo Sem canal. O fluxo aplica a tag Inadimplente, atualiza a ficha e avisa o financeiro pelo sino, sem mandar nada ao cliente. A cobrança continua sendo decisão humana.
Qualquer ferramenta que faça um POST com JSON serve de origem: o próprio backend do site, um plugin de formulário, ou automações como Zapier, Make e n8n no meio.
Depois que estiver no ar
Duas medidas dizem se o webhook está valendo a pena: o tempo até a primeira resposta humana e a taxa de resposta ao primeiro contato, nos relatórios do funil. Se o lead responde e ninguém pega, o problema não está no webhook, está na fila.
O gatilho de webhook está em todos os planos do Columba. Referência em Gatilhos, ou teste por 7 dias.