Rastrear conversas do WhatsApp vindas de anúncios significa ligar três registros: o clique que abriu o contato, a conversa criada e o resultado comercial confirmado depois. Em anúncios Click to WhatsApp, a ponte é o ctwa_clid, recebido no webhook junto do objeto referral. Em links wa.me abertos por uma landing page, a ponte precisa ser criada antes de sair do site, guardando fbclid e UTMs sob uma referência curta que viaje na mensagem pronta.
Essas rotas não são intercambiáveis. Acrescentar UTMs ao fim de um wa.me não cria ctwa_clid, e abrir uma conversa não prova que houve lead qualificado ou venda. O desenho confiável salva o identificador no primeiro ponto em que ele existe, associa cada avanço ao mesmo registro e só envia à API de Conversões um evento que também aparece no CRM ou na fonte financeira.
Pontos principais:
- CTWA entrega
ctwa_clidnoreferralda mensagem recebida pelo webhook. - Uma landing page precisa guardar
fbclide UTMs antes de abrir owa.me. - O
wa.meleva uma mensagem pronta. Use nela uma referência opaca, não todos os dados da campanha. LeadSubmitted,QualifiedLeadePurchaseprecisam corresponder a fatos registrados pela operação.- Uma solução pronta compensa quando manter webhooks, filas, associação e monitoramento virou um produto paralelo.
O que significa rastrear uma conversa do WhatsApp?
Rastrear uma conversa, neste contexto, é atribuir sua origem e seus resultados sem transformar o atendimento em vigilância do conteúdo. O registro mínimo responde qual entrada trouxe o contato, quando a conversa começou, qual identificador acompanhou o clique e em que etapa comercial o lead chegou. A mensagem pode ter vindo de um anúncio CTWA ou de um botão no site. A origem muda o identificador disponível. O resultado também precisa de uma definição operacional, como lead enviado, lead qualificado ou compra confirmada. Contar qualquer mensagem como venda treina a campanha para volume de conversa, mesmo quando o time precisa de receita. A ligação correta nasce quando o primeiro webhook ou a referência do link encontra um registro persistente da conversa. Depois, CRM e pagamento atualizam esse mesmo registro. O relatório passa a mostrar conversas, qualificação e vendas como fatos separados, cada um com horário, origem e recibo de entrega.
O telefone ajuda a encontrar o contato no atendimento, mas não pode virar a única chave de atribuição. Voltas acontecem. Uma pessoa pode reaparecer meses depois por outro anúncio, retomar um chat antigo e ainda usar o mesmo número em mais de uma compra. Guarde a identidade do clique e da conversa junto do estado comercial.
Qual é a diferença entre anúncio CTWA e link wa.me?
O anúncio CTWA abre o WhatsApp dentro de um fluxo publicitário da Meta. Quando a pessoa envia a mensagem, o webhook da plataforma pode incluir um objeto referral com o anúncio de origem e o ctwa_clid. A referência oficial de webhooks da WhatsApp Business Platform descreve esse objeto em mensagens iniciadas pelo clique no anúncio e avisa que o usuário pode remover os dados de referência. Já um botão wa.me numa landing page é só um link para iniciar o chat. O WhatsApp não conhece, por conta própria, os parâmetros que chegaram ao seu site. Cabe à página capturar fbclid e UTMs, respeitar o estado de consentimento e criar uma chave que sobreviva à saída do navegador. Misturar os dois caminhos produz relatórios difíceis de auditar, pois uma conversa sem ctwa_clid pode estar correta e ainda ter origem conhecida pela landing page.
| Entrada | O que existe antes do WhatsApp | O que chega na conversa | Uso principal |
|---|---|---|---|
| Anúncio CTWA | Clique dentro da Meta | referral, source_id e, quando disponível, ctwa_clid |
Atribuição e eventos de mensagens |
Landing page para wa.me |
fbclid, UTMs e contexto first-party |
Texto enviado pela pessoa | Recuperar o registro interno da visita |
| Link orgânico direto | URL ou botão sem clique pago | Texto enviado pela pessoa | Marcar origem orgânica ou desconhecida |
Se a operação não consegue dizer qual rota iniciou cada conversa, o primeiro reparo é registrar a entrada. A Advanced Tracking Academy implementa e diagnostica essa cadeia de medição até o recebimento no destino.
Como o ctwa_clid chega e volta pela CAPI?
O ctwa_clid nasce no clique de um anúncio CTWA e aparece para a empresa no webhook de mensagem recebida. A própria documentação da Meta para a API de Conversões de mensagens o define como um identificador pessoal, único por clique, e orienta guardá-lo com a conversa. Quando um resultado acontece, o servidor envia o mesmo valor em user_data, junto do identificador da conta do WhatsApp, com action_source igual a business_messaging e messaging_channel igual a whatsapp. A conta também precisa de um dataset associado e das permissões exigidas pela integração atual. Não gere um valor parecido quando o campo estiver ausente. Sem o identificador original, você pode manter o resultado no CRM e investigar a origem, mas não deve inventar a ligação com um anúncio. O webhook é o ponto de captura. O evento posterior é a devolução do recibo ao sistema de anúncios.
O registro salvo deve conter, no mínimo, ctwa_clid, source_id, ID da conversa, horário de captura e o contato interno usado no CRM. Trate o valor como dado restrito. Defina retenção, controle de acesso e logs de consulta em vez de espalhá-lo por planilhas e mensagens internas.
Um evento de lead qualificado pode seguir esta forma reduzida:
{
"event_name": "QualifiedLead",
"event_time": 1788796800,
"action_source": "business_messaging",
"messaging_channel": "whatsapp",
"user_data": {
"whatsapp_business_account_id": "WABA_ID",
"ctwa_clid": "VALOR_RECEBIDO_NO_WEBHOOK"
}
}
O endpoint, a versão da Graph API e os campos aceitos mudam com a plataforma. Use o contrato atual da documentação no momento da implementação. O exemplo público mantido pela Meta também mostra Purchase com origem de mensagens e o identificador devolvido em user_data.
Como carregar fbclid e UTMs num link wa.me?
Capture fbclid, utm_source, utm_medium, utm_campaign, utm_content e utm_term na landing page antes do clique no botão. Grave os valores permitidos num registro server side e devolva uma referência curta, aleatória e sem dado pessoal, como W8K4R2M9. A central oficial do WhatsApp documenta o formato https://wa.me/numero?text=mensagem, no qual text é uma mensagem pronta codificada para URL. Só há esse canal. Parâmetros soltos acrescentados ao endereço não entram no webhook, então monte uma mensagem como Olá, quero saber mais. Ref W8K4R2M9, aplique encodeURIComponent e só depois abra o link. Quando a pessoa enviar a mensagem, o atendimento ou webhook extrai a referência e consulta o registro original. A conversa fica ligada à visita sem expor o fbclid inteiro para o cliente ou para o atendente.
Um exemplo simples no navegador:
const query = new URLSearchParams(location.search);
const click = {
fbclid: query.get('fbclid'),
utm_source: query.get('utm_source'),
utm_medium: query.get('utm_medium'),
utm_campaign: query.get('utm_campaign')
};
const ref = await criarRegistroDeAtribuicao(click);
const mensagem = encodeURIComponent(`Olá, quero saber mais. Ref ${ref}`);
link.href = `https://wa.me/55XXXXXXXXXXX?text=${mensagem}`;
A função do exemplo precisa chamar um endpoint seu. Não salve a tabela completa apenas na memória da página, pois ela desaparece quando o navegador abre o aplicativo. O padrão é semelhante ao índice first-party usado para ligar landing page e webhook de checkout: a URL transporta o canhoto, o servidor guarda o contexto.
Há uma limitação prática. A mensagem pronta ainda pode ser editada ou apagada antes do envio. Por isso, registre também o clique no botão e trate a mensagem recebida como a prova de que a conversa começou. Clique, conversa e resultado são eventos diferentes.
Quais eventos enviar quando o lead avança no WhatsApp?
Envie um evento quando a operação tiver um fato correspondente, não quando uma automação apenas mudou um campo sem critério. A documentação atual da Meta lista LeadSubmitted, QualifiedLead e Purchase entre os eventos aceitos para mensagens. LeadSubmitted pode representar o contato que realmente entrou no atendimento. QualifiedLead pede uma regra escrita, como região atendida, necessidade compatível e orçamento confirmado. Purchase precisa vir do pagamento ou de outra fonte financeira, com moeda, valor e identidade estável da transação. O atendente não deveria disparar compra ao escrever “fechado” numa conversa. Integre o status do CRM ou o webhook do pagamento e mantenha idempotência para que uma nova tentativa de entrega não conte duas vezes. O guia de deduplicação da API de Conversões explica como um identificador estável evita eventos repetidos. No WhatsApp, o mesmo cuidado começa no ID do marco comercial.
Uma tabela de eventos simples costuma bastar:
| Evento | Fonte da verdade | Chave contra repetição |
|---|---|---|
LeadSubmitted |
Primeira conversa aceita no atendimento | ID da conversa + tipo do evento |
QualifiedLead |
Etapa do CRM com critério documentado | ID da mudança de etapa |
Purchase |
Pagamento aprovado | ID da transação |
Para CTWA, associe esses fatos ao ctwa_clid capturado. Para a rota da landing page, mantenha fbclid, UTMs e a referência interna no relatório. Não renomeie a referência própria como ctwa_clid e não force o mesmo payload nas duas rotas sem conferir o contrato aceito pelo destino.
Quando uma ferramenta pronta compensa mais que fazer interno?
Uma ferramenta pronta compensa quando capturar a conversa deixou de ser a parte difícil. O custo real aparece na manutenção: renovar permissões, receber webhooks sem perda, guardar o primeiro referral, ligar múltiplos números ao CRM, controlar reenvios e provar que o evento chegou. Com vários atendentes e etapas comerciais, também é preciso resolver troca de responsável, contatos duplicados, mudanças retroativas e auditoria. Se a equipe técnica passa a manter conectores toda semana, a empresa construiu outro produto e precisa bancar suporte, alertas e atualizações da plataforma. Comprar uma solução pode sair mais barato mesmo quando a mensalidade supera o custo bruto do servidor. A conta deve comparar horas técnicas, risco de ficar sem atribuição e tempo até operar, além do preço. Fazer interno ainda é razoável num fluxo pequeno, com Cloud API oficial, um CRM bem definido e alguém responsável pelos testes depois de cada mudança.
Antes de contratar, exija acesso ao ctwa_clid ou ao registro de origem, exportação dos dados, recibos de entrega da CAPI, política de retenção e uma forma de reprocessar falhas sem duplicar eventos. Um painel bonito sem esses pontos troca engenharia por dependência opaca.
Como validar o rastreamento antes de usar o relatório?
Valide cada rota com um caso que você consiga seguir até o fim. No CTWA, clique num anúncio de teste, envie a mensagem e salve o webhook bruto com horário. Confira se referral, source_id e ctwa_clid chegaram. A documentação avisa que o usuário pode remover os dados de referência, então ausência não deve derrubar o atendimento. Na landing page, abra uma URL com UTMs de teste e um fbclid fictício, clique no botão, envie a mensagem pronta e consulte a referência no armazenamento. Depois, avance o contato no CRM e confirme que saiu um único evento com o mesmo registro de conversa. Por último, verifique o recebimento na superfície de teste ou diagnóstico da Meta. Uma resposta HTTP aceita prova apenas que a requisição saiu do seu servidor. O destino precisa mostrar qual evento recebeu, com qual horário e se houve erro de parâmetro.
Use este roteiro:
- Salve o payload bruto da primeira mensagem com dados pessoais minimizados
- Confirme qual das duas rotas iniciou a conversa
- Consulte o registro de atribuição pela chave salva
- Gere um único avanço comercial com critério conhecido e registre qual mudança no CRM autorizou o evento
- Confira o recibo do envio e o evento no destino
- Repita a entrega para provar que a idempotência segura a cópia
- Teste uma conversa orgânica e confirme que ela não ganha origem paga
Só use o relatório para decidir campanha quando conversa, qualificação e venda fecharem com as fontes operacionais. Se a sua equipe precisa montar essa cadeia ou descobrir onde ela quebrou, veja os serviços da Advanced Tracking Academy para rastreamento e atribuição.