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 com source_id (o ID do anúncio), source_type, headline e body.
  • 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.

Um link rastreável é uma URL sua (/r/promocao-setembro, por exemplo) que:

  1. Registra o clique com os parâmetros que vieram na URL (UTM e IDs).
  2. Redireciona para o WhatsApp (wa.me) com uma mensagem pré-preenchida que contém um código curto.
  3. 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 contatoLinkO que a atribuição mostra
Anúncio de tráfego para site/r/site-promo + parâmetros com macrosCampanha, conjunto, anúncio (por ID)
Bio do Instagram/r/bioOrigem "bio" (orgânico identificado)
Site, botão de WhatsApp/r/site com utm_source=siteOrigem "site"
Google Ads/r/google com UTM do GoogleOrigem "google", campanha
QR no balcão ou embalagem/r/lojaOrigem "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_clid com 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úncioGastoConversasVendasReceitaCusto por vendaROAS
Vídeo depoimentoR$ 640525R$ 9.800R$ 12815,3
Carrossel produtoR$ 8101183R$ 5.400R$ 2706,7
Imagem promoçãoR$ 5501102R$ 3.100R$ 2755,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.

Yuri Gomes

Gestor de tráfego e fundador do RASTRO. Opera campanhas de Meta Ads para negócios que vendem pelo WhatsApp e construiu o RASTRO para resolver o problema que via todo dia: o anúncio gera conversa, a venda fecha no WhatsApp e a Meta nunca fica sabendo.