Como Mensurar Cliques em Links Externos e Downloads Automaticamente
Outbound e file_download com Medição otimizada no GA4: o que liga sozinho, parâmetros, falhas silenciosas e híbrido sem duplicar no GTM.
Contexto
Sua campanha manda para um PDF, um WhatsApp, um marketplace ou um parceiro. No media buy, isso é engajamento (ou quase conversão). No GA4, muitas vezes some — ou vira um clique genérico sem nome do arquivo e sem domínio de destino.
Antes de abrir ticket de engenharia ou montar meia dúzia de tags no GTM, confira o que o próprio Medição otimizada (Enhanced Measurement) do fluxo web já faz: escuta cliques em links de saída e downloads de arquivo sem alterar o código do site.
Este guia é o caminho topo de funil: ligar o automático, registrar o que interessa para o relatório, e saber onde ele cala — para o híbrido (GTM ou dataLayer) entrar só no buraco, sem pageview/download em dobro.
O que o GA4 dispara sozinho
Com a Medição otimizada ativa no fluxo de dados web, a biblioteca do Google (via gtag / configuração do GA4 no GTM) observa cliques em elementos <a>:
Link externo (click) — o destino do href é outro hostname que o da página atual (e que não está no conjunto de domínios da medição cross-domain). O evento sai com nome click e o parâmetro outbound = true. Ou seja: “clique de saída”, não clique em menu interno.
Download (file_download) — o href termina (ou contém, no padrão da regex) uma extensão de arquivo que o GA4 reconhece. O evento dispara no clique, em geral ainda no navegador, antes do arquivo baixar de fato.
Regex oficial de extensões (Help do GA):
pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma
PDF, planilha, zip, mp4 — entram. Extensão inventada, rota de API sem suffixo e botão “Gerar relatório” via fetch não entram nessa regra.
Parâmetros que valem o registro
O hit não é só o nome do evento. Junto vêm parâmetros que o GA já conhece — e que na prática você só vê bem depois de virar dimensão:
No click (outbound): link_url, link_domain, link_classes, link_id, outbound.
No file_download: file_name, file_extension, link_text (e, no fluxo típico, também contexto de URL do link).
Sem dimensões personalizadas de escopo do evento, você confirma o evento no DebugView e ainda assim a Exploração fica burra: não filtra “só PDFs do /materiais/” nem ranking de domínios de saída.
Como ligar no Admin
- Admin → Fluxos de dados → fluxo web.
- Abra Medição otimizada (o grande toggle e, se precisar, a engrenagem de detalhes).
- Confirme Cliques de saída (outbound clicks) e Downloads de arquivo (file downloads) ativos.
- Salve. Em implantações com GA4 via GTM, a mesma lógica depende da Google Tag / config GA4 correta — o ponto é não desligar o que o fluxo já oferece e reinventar com tag manual idêntica.
Aí valide no DebugView: clique num WhatsApp externo e baixe um /ebook.pdf. Você deve ver click com outbound=true e file_download com a extensão certa.
Dimensões personalizadas (para o relatório existir de fato)
Em Admin → Definições personalizadas → Criar dimensão personalizada:
- Escopo: Evento
- Nome de exibição legível (ex.: “URL do link”, “Nome do arquivo”)
- Parâmetro do evento: o nome técnico (
link_url,file_name,file_extension,link_domain…)
Só depois use Explorar com filtro Nome do evento = file_download ou click, e essas dimensões no breakdown. Dimensão criada depois de meses de dados não reescreve o histórico; registre cedo o que mídia e conteúdo vão olhar.
Onde o automático falha em silêncio
A Medição otimizada é conveniente — e cega para arquitetura moderna:
- URL sem extensão —
/api/export?id=99,/download/abc123, path de bucket assinado sem.pdfnohref. A regex não casa → não háfile_download. - Download por JS —
fetch+Blob, janela gerada sem<a href="...pdf">. Não há o clique “clássico” que o escutador espera. - Link cloaking / redirect interno — afiliado reescreve o externo como path no seu domínio; o GA trata como navegação interna e o
clickoutbound some. - Arquivo atrás de login ou botão que só libera o arquivo depois de um fluxo — o que importa pode ser outro evento (lead, generate_lead), não o download genérico.
- Adblock / privacidade / consent — se a lib do GA não roda, outbound e download somem junto com o resto. Parte do tráfego em auditorias “desaparece”; não use o contador bruto como verdade fiscal.
Sintoma típico na reunião: “o content diz que baixaram o ebook; o Ads não otimiza isso.” Quase sempre é buraco de instrumentação ou duplicata/confusão de nomes — não mídia “fraca” sozinha.
Híbrido sem duplicar
Camada base: Medição otimizada ligada para PDF estático e saída óbvia (domínio externo no href).
Camada GTM / eng só quando você prova o buraco:
- Just Links + condição de path (
/go/,/out/) para cloaking conhecido - CSS
a[href$=".pdf"]se o PDF for o único caso e o EM estiver desligado de propósito dataLayer.pushno click do botão “Baixar” quando o arquivo nasce de API (contrato de Data Layer se isso for conversão de produto)
Se o Enhanced Measurement já manda file_download e você cria outra tag GA4 com o mesmo nome no GTM, o relatório infla e o Smart Bidding treina lixo. O guia de eventos sem alterar o código detalha autonomia no container — use-o para o buraco, não para reimplementar o que o fluxo web já coletou.
Validação com tag no GTM: Preview / Tag Assistant. Validação do automáticismo puro: DebugView do GA4 com debug_mode / extensão de debug.
Checklist rápido
- Cliques de saída e downloads ativos no fluxo web.
- Teste real: 1 link externo + 1 PDF com extensão no
href. - Dimensões de evento criadas para
link_url/file_name(e o que mídia pede). - Exploração filtrada por
file_downloadeclickcomoutbound. - Lista de buracos do site (API, Blob, cloaking) — sem tag paralela no que já funciona.
- Se o PDF for KPI de campanha: marcar conversão / público com critério estável, não vanity de “qualquer download no site”.
Próximo passo
Com o automático ligado e as dimensões registradas, o dia a dia de conteúdo e mídia ganha ranking de materiais e saídas sem engenharia. O teto é o buraco estrutural: download autenticado, lead magnet por API, afiliado mascarado.
Aí o trabalho deixa de ser “mais um trigger de clique” e vira mapa do que é engajamento e o que é conversão — quem emite o evento, com qual nome, e se o Ads pode otimizar em cima.
Se quiser, partimos do seu /materiais/, dos PDFs e dos links de WhatsApp/parceiro e separamos o que o GA4 já conta sozinho do que precisa de um push limpo no dataLayer.