Para gestores de tráfego
Qual anúncio gerou a venda no WhatsApp? Como atribuir cada venda à campanha, ao conjunto e ao anúncio
WhatsApp não tem pixel. Veja os 3 mecanismos de atribuição (ctwa_clid, links com UTM e macros da Meta, primeiro toque) e como ter ROAS por anúncio.
No site, a pergunta "qual anúncio gerou a venda?" é respondida pelo pixel e pelo fbclid. No WhatsApp, não existe pixel, não existe cookie e a "sessão" é uma conversa que pode durar três semanas. Mesmo assim, é possível atribuir cada venda ao anúncio, ao conjunto e à campanha, desde que os três mecanismos certos estejam no lugar desde a primeira mensagem.
Este guia cobre os três mecanismos (identificador do clique, links rastreáveis com UTM e macros da Meta, e primeiro toque), como cruzar a atribuição com o gasto para ter ROAS por anúncio, e as armadilhas que fazem metade das conversas virar "orgânico" por engano.
Por que atribuir no WhatsApp é diferente do site
No site a identidade é o navegador: cookie, fbp, fbc, sessão. A conversão acontece no mesmo lugar do clique.
No WhatsApp:
- A identidade é o telefone. Não há cookie.
- O clique acontece no Instagram ou no Facebook, e a conversa acontece em outro aplicativo.
- A conversa pode começar hoje e fechar em três semanas, com cinco pessoas diferentes atendendo.
- O mesmo telefone pode chegar por anúncio hoje e por indicação no mês seguinte.
Então a atribuição precisa ser resolvida no momento em que a conversa nasce e guardada na conversa, não na mensagem nem na sessão. Depois disso, a venda herda a atribuição da conversa.
Mecanismo 1: o identificador do clique (ctwa_clid)
Quando alguém clica num anúncio de clique para o WhatsApp, a Meta gera um identificador do clique, o ctwa_clid, e o entrega junto com a primeira mensagem da conversa.
- Na API oficial (Cloud API), ele chega no webhook em
messages[].referral, junto comsource_id(o ID do anúncio),source_type,headlineebody. - No WhatsApp Business App conectado por QR (via Evolution API ou similar), ele chega nos metadados da mensagem (
contextInfo.externalAdReply), com o ID do anúncio. É um caminho de melhor esforço, mas funciona e evita migrar o número.
Com o ID do anúncio em mãos, uma consulta à Marketing API resolve o nome do anúncio, o conjunto e a campanha. A ficha do lead mostra os três, com nome. A confiança dessa correspondência é exata: houve clique, o identificador veio, a atribuição é inequívoca. É também o mesmo ctwa_clid que vai no evento de venda enviado de volta para a Meta, como explicado em API de Conversões para WhatsApp.
Limitação: o ctwa_clid só existe para anúncios com destino WhatsApp. Anúncio de tráfego para site, link da bio, QR no balcão e link no Google não geram ctwa_clid. Para esses, o mecanismo 2.
Mecanismo 2: link rastreável com UTM e macros da Meta
Um link rastreável é uma URL sua (/r/promocao-setembro, por exemplo) que:
- Registra o clique com os parâmetros que vieram na URL (UTM e IDs).
- Redireciona para o WhatsApp (
wa.me) com uma mensagem pré-preenchida que contém um código curto. - Quando a mensagem com aquele código chega, o sistema casa o clique com a conversa e atribui.
O código na mensagem é o que liga o clique (no navegador) à conversa (no WhatsApp), já que não há cookie que atravesse os dois. O cliente vê algo como "Olá! Vim pela promoção de setembro [código]" e só precisa enviar.
Para anúncios de tráfego para o site que terminam no WhatsApp, o link precisa carregar os IDs da campanha. A Meta substitui macros nos parâmetros de URL do anúncio. O conjunto de parâmetros que resolve tudo:
utm_source=meta&utm_medium=paid
&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}
&utm_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}
Com utm_id, adset_id e ad_id, o sistema guarda os três IDs na sessão de clique e a atribuição do lead carrega campanha, conjunto e anúncio, exatamente como no mecanismo 1. Isso permite cruzar com o gasto por campanha e calcular ROAS para leads que vieram de link, não só de clique em anúncio de WhatsApp. A Meta ainda acrescenta o fbclid sozinha, o que permite enviar o evento de venda com origem website.
Onde usar links rastreáveis, cada um com seu identificador:
| Ponto de contato | Link | O que a atribuição mostra |
|---|---|---|
| Anúncio de tráfego para site | /r/site-promo + parâmetros com macros | Campanha, conjunto, anúncio (por ID) |
| Bio do Instagram | /r/bio | Origem "bio" (orgânico identificado) |
| Site, botão de WhatsApp | /r/site com utm_source=site | Origem "site" |
| Google Ads | /r/google com UTM do Google | Origem "google", campanha |
| QR no balcão ou embalagem | /r/loja | Origem "loja física" |
Sem link rastreável, todos esses viram "orgânico" e o ROAS do Meta fica subestimado (ou, pior, alguém "estima" que vieram do anúncio).
Mecanismo 3: primeiro toque imutável, toques posteriores registrados
O mesmo telefone pode clicar em três anúncios ao longo de um mês. A regra precisa ser fixa, ou o relatório muda conforme quem olha.
A regra que funciona: a atribuição da conversa é o primeiro toque, e não muda. Cliques posteriores são registrados como toques posteriores na ficha, visíveis, mas não trocam a atribuição. A venda é creditada ao anúncio que iniciou a conversa.
Por que primeiro toque e não último:
- É o anúncio que gerou a demanda. Sem ele, os outros toques não existiriam.
- É estável. Último toque muda a cada clique novo e gera discussão com o cliente.
- É o que a Meta usa para casar o
ctwa_clidcom a conversa.
Uma conversa encerrada e reaberta meses depois por um novo clique é uma conversa nova, com nova atribuição. O critério de "nova conversa" precisa ser explícito no sistema.
Orgânico é orgânico
Uma conversa sem ctwa_clid e sem código de link rastreável é orgânica, ponto. O sistema não deve "inferir" que veio do anúncio porque o anúncio estava rodando naquele dia. Essa disciplina tem dois efeitos:
- O ROAS de anúncio fica menor do que a estimativa otimista, e verdadeiro.
- O cliente confia no relatório, porque vê o orgânico separado.
Na prática, um cliente que começa a anunciar hoje tem 100% de conversas orgânicas até a primeira campanha de clique para o WhatsApp rodar. Isso é normal.
Cruzando com o gasto: ROAS por anúncio
Com a atribuição resolvida por ID de campanha, conjunto e anúncio, o último passo é o gasto. A Marketing API da Meta fornece o gasto diário por campanha (e por conjunto e anúncio) para um token com permissão ads_read na conta de anúncios. Importado todo dia, ele cruza com as vendas atribuídas:
| Anúncio | Gasto | Conversas | Vendas | Receita | Custo por venda | ROAS |
|---|---|---|---|---|---|---|
| Vídeo depoimento | R$ 640 | 52 | 5 | R$ 9.800 | R$ 128 | 15,3 |
| Carrossel produto | R$ 810 | 118 | 3 | R$ 5.400 | R$ 270 | 6,7 |
| Imagem promoção | R$ 550 | 110 | 2 | R$ 3.100 | R$ 275 | 5,6 |
O carrossel traz mais conversa. O vídeo traz mais venda. Sem atribuição por anúncio, o carrossel seria escalado.
Armadilhas que viram "orgânico" por engano
- Link da bio sem rastreio. O cliente clicou no anúncio, foi ao perfil, clicou na bio. Sem link rastreável na bio, virou orgânico. Com link rastreável, vira "bio" (e, se você quiser, o toque anterior de anúncio fica registrado).
- Token sem
ads_read. O gasto vem vazio, o nome da campanha não é resolvido, e o relatório mostra IDs sem nome e ROAS em branco. A integração precisa mostrar esse erro na tela. - Código de teste esquecido. Os eventos de venda vão para a aba de teste da Meta e não aparecem no relatório dela.
- Número de vendedor fora do sistema. Conversa que começou no celular pessoal do vendedor não passa pelo webhook. Nem atribuição, nem venda registrada.
- Encaminhamento manual. Vendedor A recebe, encaminha para o vendedor B em outro número. A conversa original fica com a atribuição; a nova, sem. Atribua o lead a outro responsável dentro do sistema em vez de trocar de número.
- Mensagem pré-preenchida apagada. No link rastreável, se o cliente apaga o texto com o código antes de enviar, o casamento falha. O texto deve ser curto e natural para ninguém querer apagar.
Perguntas frequentes
Como saber de qual anúncio veio o lead no WhatsApp?
Para anúncios de clique para o WhatsApp, pelo ctwa_clid que chega com a primeira mensagem (no referral da API oficial ou nos metadados da mensagem no WhatsApp Business App), que resolve o ID do anúncio. Para os demais pontos de contato, por um link rastreável que leva ao WhatsApp com um código na mensagem inicial.
O que é ctwa_clid?
É o identificador do clique em anúncio de clique para o WhatsApp, gerado pela Meta e entregue junto com a primeira mensagem da conversa. Ele permite atribuir a conversa ao anúncio e, depois, enviar o evento de venda de volta para a Meta com atribuição.
Como usar UTM em anúncio do Meta que leva ao WhatsApp?
Use um link rastreável seu como destino e coloque nos parâmetros de URL do anúncio as macros da Meta: utm_campaign={{campaign.name}}, utm_id={{campaign.id}}, adset_id={{adset.id}}, ad_id={{ad.id}} e as demais. O link registra os IDs e redireciona ao WhatsApp com um código na mensagem, que casa o clique com a conversa.
Primeiro toque ou último toque para vendas no WhatsApp?
Primeiro toque, imutável, com os toques posteriores registrados. É o anúncio que gerou a demanda, é estável (não muda a cada clique novo) e é o que a Meta usa para casar o identificador do clique com a conversa.
Por que o ROAS por campanha aparece vazio?
Ou o gasto não está sendo importado (token sem permissão ads_read na conta de anúncios) ou não há vendas com valor registrado atribuídas àquela campanha. Um sistema honesto mostra o motivo em vez de exibir zero.


