Como rastrear UTMs no Contact Form 7
O Contact Form 7 é um dos plugins de formulário mais usados no WordPress, mas por padrão ele não captura nenhuma informação sobre a origem do visitante. Veja como resolver isso — desde a abordagem manual com campos hidden até a integração automática.
O problema com CF7 e UTMs
Quando um visitante preenche um formulário do Contact Form 7, você recebe por e-mail os dados que ele digitou — nome, e-mail, mensagem, telefone. Mas não recebe nenhuma informação sobre como ele chegou até ali.
Para fechar essa lacuna e saber se aquele lead veio do Google Ads, de um e-mail marketing ou de um post orgânico, você precisa capturar os parâmetros UTM e incluí-los no envio do formulário.
O desafio: UTMs que somem antes do formulário
O cenário mais simples é: o visitante clica no anúncio, chega na página com UTMs na URL, vê o formulário nessa mesma página e converte. Nesse caso, ler os parâmetros da URL atual funciona.
O problema é que muitos fluxos são mais longos:
- O formulário está numa página diferente da landing page
- O usuário navega pelo site antes de converter
- O usuário sai, volta dias depois e converte
Em todos esses casos, os UTMs da URL de entrada não estarão mais disponíveis quando o formulário for submetido. É necessário um mecanismo que persista os dados entre páginas e visitas.
Para entender a fundo por que isso acontece, veja: Como descobrir de qual campanha veio um lead no WordPress.
Opção 1: campos ocultos com JavaScript
A abordagem manual envolve:
- Adicionar campos
[hidden]ao formulário CF7 - Escrever um script JavaScript que lê UTMs da URL e preenche esses campos
No editor do CF7, adicione os campos ocultos:
[hidden utm_source id:utm_source]
[hidden utm_medium id:utm_medium]
[hidden utm_campaign id:utm_campaign]
No functions.php ou em um plugin customizado, adicione o script:
add_action('wp_footer', function() { ?>
<script>
document.addEventListener('DOMContentLoaded', function() {
var params = new URLSearchParams(window.location.search);
var fields = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
fields.forEach(function(name) {
var val = params.get(name) || sessionStorage.getItem(name) || '';
// Salva no sessionStorage para persistir entre páginas
if (params.get(name)) sessionStorage.setItem(name, params.get(name));
var input = document.querySelector('input[name="' + name + '"]');
if (input) input.value = val;
});
});
</script>
<?php });
sessionStorage persiste apenas enquanto a aba do navegador
está aberta. Se o usuário fechar o navegador e voltar dias depois, os dados
não estarão mais disponíveis. Para rastrear retornos de longo prazo, é necessário
usar cookies ou armazenamento server-side.
Opção 2: integração nativa com plugin de rastreamento
Uma abordagem mais robusta e sem código manual é usar um plugin que já tenha integração nativa com o Contact Form 7.
O UTM Tracker DL tem
integração nativa com CF7: quando um formulário é enviado com sucesso (hook
wpcf7_mail_sent), o plugin captura automaticamente os dados de
atribuição do visitante atual — incluindo First Touch e Last Touch — e registra
um lead associado a esse envio.
Não é necessário modificar o formulário nem adicionar campos ocultos manualmente para o registro da conversão no painel do plugin.
Como funciona a integração com UTM Tracker DL
O que acontece nos bastidores:
- O visitante chega ao site via link com UTMs (ex: de um Google Ads)
- O plugin detecta os UTMs na requisição PHP e os armazena no banco de dados, associando um identificador de visitante em cookie first-party
- O visitante pode navegar por várias páginas — os dados de First Touch estão armazenados
- Se o visitante retornar com novos UTMs, o Last Touch é atualizado
- Quando o formulário CF7 é enviado com sucesso, o plugin registra automaticamente um lead com o snapshot de First Touch e Last Touch daquele visitante
Incluindo dados UTM no e-mail do CF7 (opcional)
Se você quiser que os dados UTM também apareçam no e-mail enviado pelo CF7
para você, é necessário adicionar campos hidden ao formulário e populá-los.
O UTM Tracker DL disponibiliza os dados via JavaScript para inputs com o
atributo data-utmdl:
<!-- No template do formulário CF7 -->
[hidden first_source id:first_source ""]
[hidden last_source id:last_source ""]
[hidden first_campaign id:first_campaign ""]
<!-- No HTML da página, nos inputs ocultos gerados pelo CF7 -->
<!-- Adicione os atributos via JS ou via snippet -->
<input type="hidden" name="first_source" data-utmdl="first_source">
O script do plugin lê o objeto utmdlData localizado server-side e
preenche automaticamente todos os inputs que tenham o atributo
data-utmdl com o valor correspondente.
O que você recebe em cada lead
Com a integração ativa, cada lead registrado no UTM Tracker DL contém:
| Dado | First Touch | Last Touch |
|---|---|---|
| Source | ✅ | ✅ |
| Medium | ✅ | ✅ |
| Campaign | ✅ | ✅ |
| Term | ✅ | ✅ |
| Content | ✅ | ✅ |
| Landing page | ✅ | ✅ |
| Referrer | ✅ | ✅ |
| Click ID (gclid, fbclid, etc.) | ✅ | ✅ |
Esses dados ficam disponíveis no painel do WordPress (UTM Tracker DL → Leads) e podem ser exportados em CSV.
Limitações a considerar
- Usuários sem cookie: visitantes que bloqueiam cookies não são rastreados corretamente.
- Janela de atribuição: o cookie tem duração configurável. Leads que convertem após muito tempo podem não ter First Touch disponível.
- Não substitui um CRM: o plugin registra leads com dados UTM, mas não é um sistema de gestão de relacionamento. Para acompanhamento completo do lead, você ainda precisa do seu CRM ou ferramenta de e-mail marketing.
Quer registrar automaticamente as UTMs dos seus leads do Contact Form 7?
O UTM Tracker DL tem integração nativa com CF7: cada envio de formulário registra First Touch e Last Touch sem nenhuma configuração adicional.