{"id":969,"date":"2026-04-01T08:59:03","date_gmt":"2026-04-01T08:59:03","guid":{"rendered":"https:\/\/cms.funnelsheet.com\/?p=969"},"modified":"2026-04-01T08:59:03","modified_gmt":"2026-04-01T08:59:03","slug":"how-to-keep-utm-parameters-across-pages-in-wordpress-automatically","status":"publish","type":"post","link":"https:\/\/cms.funnelsheet.com\/?p=969","title":{"rendered":"How to Keep UTM Parameters Across Pages in WordPress Automatically"},"content":{"rendered":"<p>O problema de rastreamento em WordPress costuma come\u00e7ar com uma situa\u00e7\u00e3o simples: o usu\u00e1rio chega pelo an\u00fancio com UTMs anexadas na URL (utm_source, utm_medium, utm_campaign, entre outras), navega por v\u00e1rias p\u00e1ginas, clica em links internos e at\u00e9 fecha o ciclo em um formul\u00e1rio ou bot de WhatsApp. Em algum momento, o par\u00e2metro de campanha desaparece, ou pior, n\u00e3o \u00e9 propagado de volta para o Google Analytics 4 (GA4), para o GTM ou para a sua base de dados. How to Keep UTM Parameters Across Pages in WordPress Automatically \u00e9 mais que um t\u00edtulo; \u00e9 uma necessidade pr\u00e1tica quando o objetivo \u00e9 manter a atribui\u00e7\u00e3o coerente ao longo de um funil que depende de m\u00faltiplos dom\u00ednios ou dom\u00ednios diferentes dentro do ambiente WordPress. Sem uma estrat\u00e9gia clara, a leitura de m\u00e9tricas fica contaminada por dados incompletos, o que compromete a tomada de decis\u00e3o, a valida\u00e7\u00e3o de campanhas e a efici\u00eancia de budget. Este artigo parte dessa dor e fornece caminhos acion\u00e1veis para manter UTMs across pages sem exigir reconfigura\u00e7\u00e3o dr\u00e1stica ou mudan\u00e7as disruptivas no fluxo de usu\u00e1rio.<\/p>\n<p>Voc\u00ea vai encontrar aqui uma leitura objetiva sobre por que UTMs se perdem no WordPress, quais abordagens t\u00e9cnicas costumam funcionar na pr\u00e1tica e qual \u00e9 o trade-off entre client-side e server-side. Al\u00e9m disso, apresento um roteiro de implementa\u00e7\u00e3o com passos concretos, crit\u00e9rios para decis\u00e3o entre solu\u00e7\u00f5es diferentes e um checklist de valida\u00e7\u00e3o para evitar ru\u00eddos de dados que acabam sabotando a leitura da attri\u00e7\u00e3o entre cliques, p\u00e1ginas e convers\u00f5es. O conte\u00fado \u00e9 pensado para profissionais que j\u00e1 sabem menjar a instrumenta\u00e7\u00e3o: GA4, GTM Web, GTM Server-Side, CAPI e a liga\u00e7\u00e3o com fontes de dados como BigQuery. A ideia \u00e9 dar ao leitor uma decis\u00e3o t\u00e9cnica clara: o que manter, como manter e como medir se a solu\u00e7\u00e3o est\u00e1 funcionando, sem vender promessas vagas ou solu\u00e7\u00f5es gen\u00e9ricas.<\/p>\n\n\n                        <figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1161\" height=\"1200\" src=\"https:\/\/cms.funnelsheet.com\/wp-content\/uploads\/2026\/04\/2gjp_az2o_i.jpg\" alt=\"a hard drive is shown on a white surface\" class=\"wp-image-899\" srcset=\"https:\/\/cms.funnelsheet.com\/wp-content\/uploads\/2026\/04\/2gjp_az2o_i.jpg 1161w, https:\/\/cms.funnelsheet.com\/wp-content\/uploads\/2026\/04\/2gjp_az2o_i-290x300.jpg 290w, https:\/\/cms.funnelsheet.com\/wp-content\/uploads\/2026\/04\/2gjp_az2o_i-991x1024.jpg 991w, https:\/\/cms.funnelsheet.com\/wp-content\/uploads\/2026\/04\/2gjp_az2o_i-768x794.jpg 768w\" sizes=\"auto, (max-width: 1161px) 100vw, 1161px\" \/><\/figure>\n                        \n\n<h2>Por que UTMs somem em WordPress e qual \u00e9 o impacto<\/h2>\n<h3>Comportamento comum de links internos que quebra UTMs<\/h3>\n<p>Dentro de sites WordPress, a navega\u00e7\u00e3o entre p\u00e1ginas geralmente envolve redirecionamentos, plugins de caching e estruturas de menus que regeneram URLs. Quando o usu\u00e1rio acessou uma p\u00e1gina via UTM, o navegador pode perder esse par\u00e2metro ao seguir um link interno que n\u00e3o replica a query string. Em termos pr\u00e1ticos, voc\u00ea pode ver um clique em \u201cProdutos\u201d levando para \/produtos sem utm_source, o que quebra a cadeia de atribui\u00e7\u00e3o entre campanha e convers\u00e3o. Esse deslocamento parece menor \u00e0 primeira vista, mas tende a falsear m\u00e9tricas em GA4, especialmente em jornadas com v\u00e1rias p\u00e1ginas de conte\u00fado ou em lojas com checkout hospedado no mesma infraestrutura. O resultado \u00e9 uma vis\u00e3o distorcida da efic\u00e1cia da campanha, com atribui\u00e7\u00e3o atribuindo convers\u00f5es a acaso ou ao \u00faltimo clique n\u00e3o relacionado \u00e0 UTMs originais.<\/p>\n<h3>Impacto na atribui\u00e7\u00e3o e na vis\u00e3o do funil<\/h3>\n<p>Quando UTMs n\u00e3o viajam entre p\u00e1ginas, voc\u00ea perde a linha de liga\u00e7\u00e3o entre a primeira impress\u00e3o, o tr\u00e1fego de origem e a convers\u00e3o final. Em cen\u00e1rios com leads que fecham semanas depois do clique, a aus\u00eancia de UTMs pode transformar uma aquisi\u00e7\u00e3o bem financiada em um dado sem contexto. Em integra\u00e7\u00f5es com WhatsApp Business API ou formul\u00e1rios de contato no WordPress, a falta de UTMs persistentes dificulta a contabilidade da origem de cada lead, o que complica a entrega de atribui\u00e7\u00e3o confi\u00e1vel para clientes ou para as lideran\u00e7as internas. O resultado pr\u00e1tico \u00e9: campanhas parecem ter ru\u00eddo de dados ou at\u00e9 perderam leads na tela de fechamento, levando a decis\u00f5es erradas sobre or\u00e7amento e criativos. Um patamar realista \u00e9 reconhecer que a persist\u00eancia de UTMs n\u00e3o \u00e9 apenas est\u00e9tica de relat\u00f3rio; \u00e9 uma pe\u00e7a cr\u00edtica de integridade anal\u00edtica.<\/p>\n<blockquote><p>\u201cUTMs que desaparecem entre p\u00e1ginas criam ru\u00eddos na atribui\u00e7\u00e3o; a persist\u00eancia de par\u00e2metros \u00e9 a base para uma vis\u00e3o fiel do caminho do usu\u00e1rio.\u201d<\/p><\/blockquote>\n<blockquote><p>\u201cSem UTMs persistentes, a confian\u00e7a em GA4 ou no seu data lake fica comprometida. A solu\u00e7\u00e3o precisa ser pr\u00e1tica e n\u00e3o invasiva.\u201d<\/p><\/blockquote>\n<h2>Abordagens para manter UTMs automaticamente<\/h2>\n<h3>Abordagem client-side com cookies ou localStorage<\/h3>\n<p>A estrat\u00e9gia client-side coleta as UTMs presentes na primeira visita e as armazena em um cookie ou no localStorage do navegador. Em p\u00e1ginas subsequentes, um script l\u00ea esse valor persistente e reanexa as UTMs \u00e0 URL de navega\u00e7\u00e3o ou preenche campos ocultos em formul\u00e1rios. Essa abordagem \u00e9 r\u00e1pida de implementar em WordPress, principalmente com um snippet no tema filho ou em um pequeno plugin customizado, e costuma exigir menos mudan\u00e7as no fluxo de checkout ou nos redirecionamentos.<\/p>\n<p>Vantagens: velocidade de implementa\u00e7\u00e3o, flexibilidade e boa compatibilidade com a maioria dos temas, plugins de formul\u00e1rio e integra\u00e7\u00f5es com GA4 via gtag ou GTM. Desvantagens: depende do usu\u00e1rio manter cookies habilitados; pode ter limita\u00e7\u00f5es com pol\u00edticas de privacidade (Consent Mode v2) e com navegadores que bloqueiam cookies de terceiros. Al\u00e9m disso, a abordagem client-side pode n\u00e3o cobrir casos de redirecionamento server-side sem ajustes adicionais.<\/p>\n<h3>Abordagem server-side com headers, sess\u00f5es ou redirects<\/h3>\n<p>Na pr\u00e1tica, a camada server-side captura as UTMs na primeira requisi\u00e7\u00e3o, as salva em sess\u00e3o ou em um cookie com escopo de dom\u00ednio e as repropaga em requisi\u00e7\u00f5es subsequentes, inclusive em redirecionamentos que ocorrem entre p\u00e1ginas ou at\u00e9 ao checkout. Em WordPress, isso pode envolver ajustes no functions.php, no mu-plugin ou em um GTM Server-Side para reescrever URLs com UTMs durante o fluxo de navega\u00e7\u00e3o, mantendo a cadeia de origem intacta at\u00e9 a convers\u00e3o. Essa abordagem \u00e9 mais robusta frente a bloqueios de cookies do navegador e funciona bem com plugins de CRM, formul\u00e1rios, e integra\u00e7\u00f5es de WhatsApp que carregam UTMs como parte do payload de convers\u00e3o.<\/p>\n<p>Vantagens: maior confiabilidade em ambientes com forte controle de cookies, melhor resili\u00eancia a bloqueios de terceiros e compatibilidade com flows de servidor para com\u00e9rcio eletr\u00f4nico. Desvantagens: maior complexidade na implementa\u00e7\u00e3o, necessidade de coordena\u00e7\u00e3o entre frontend, backend e as integra\u00e7\u00f5es de terceiros, e maior sensibilidade a altera\u00e7\u00f5es de infraestrutura (por exemplo, migrar para GTM Server-Side).<\/p>\n<h3>Integra\u00e7\u00e3o com GTM Server-Side e regras de reescrita<\/h3>\n<p>Uma estrat\u00e9gia h\u00edbrida envolve GTM Server-Side para capturar UTMs no n\u00edvel de servidor, armazen\u00e1-las e repropag\u00e1-las para clientes ou servi\u00e7os que n\u00e3o preservam par\u00e2metros na cadeia de navega\u00e7\u00e3o. Com GTM Server-Side, voc\u00ea pode manter UTMs em chamadas de API, em redirecionamentos de transa\u00e7\u00e3o e ao enviar dados de convers\u00e3o para GA4 ou para o seu data warehouse. Essa solu\u00e7\u00e3o \u00e9 potente para opera\u00e7\u00f5es que exigem consist\u00eancia entre m\u00faltiplos dom\u00ednios, lojas headless ou integra\u00e7\u00f5es com canais de WhatsApp que passam por webhooks e eventos de convers\u00e3o.<\/p>\n<p>Vantagens: maior controle sobre a cadeia de dados, menor depend\u00eancia de cookies do navegador, compatibilidade com cen\u00e1rios de cross-domain. Desvantagens: aumenta a complexidade de infraestrutura, demanda configura\u00e7\u00e3o cuidadosa de permiss\u00f5es, limites de quotas e monitoramento adicional para garantir que UTMs n\u00e3o sejam perdidas em cen\u00e1rios de fallback.<\/p>\n<h2>Quando cada abordagem faz sentido e quando n\u00e3o<\/h2>\n<h3>Crit\u00e9rios de decis\u00e3o: velocidade de deploy, complexidade, LGPD<\/h3>\n<p>Se voc\u00ea precisa de uma solu\u00e7\u00e3o r\u00e1pida para validar o impacto de UTMs persistentes, a abordagem client-side com cookies\/localStorage costuma permitir um rollout r\u00e1pido e com menos depend\u00eancias. Em ambientes com alto rigor de privacidade e consentimento, \u00e9 essencial alinhar com Consent Mode v2 e pol\u00edticas de CMP antes de persistir dados de usu\u00e1rio. Em opera\u00e7\u00f5es com m\u00faltiplos dom\u00ednios ou com integra\u00e7\u00f5es cr\u00edticas (CRM, WhatsApp, formul\u00e1rios de aquisi\u00e7\u00e3o), a solu\u00e7\u00e3o server-side ou GTM Server-Side tende a entregar maior consist\u00eancia, desde que haja recursos para implantar mudan\u00e7as de infraestrutura sem travar lan\u00e7amentos para clientes.<\/p>\n<h3>Casos de uso espec\u00edficos: blogs, lojas, formul\u00e1rios de contato<\/h3>\n<p>Para blogs ou sites com navega\u00e7\u00e3o relativamente simples, a persist\u00eancia via cookies pode resolver a maioria dos casos sem exigir mudan\u00e7as profundas. J\u00e1 em lojas com fluxo de checkout multi-p\u00e1gina ou com redirecionamentos para gateways de pagamento, a abordagem server-side ou GTM Server-Side tende a prevenir perdas de UTMs entre etapas cr\u00edticas. Em formul\u00e1rios de contato integrados com CRMs (HubSpot, RD Station) ou com canais de mensagem (WhatsApp Business API), a utiliza\u00e7\u00e3o de campos ocultos ou hidden fields alimentados a partir das UTMs persistentes \u00e9 uma pr\u00e1tica que tende a reduzir gaps de dados entre origem eLead final.<\/p>\n<h2>Roteiro de implementa\u00e7\u00e3o<\/h2>\n<h3>Roteiro de implementa\u00e7\u00e3o<\/h3>\n<ol>\n<li>Definir quais UTMs devem ser preservadas (utm_source, utm_medium, utm_campaign, utm_term, utm_content) e onde elas v\u00e3o aparecer nos dados de convers\u00e3o (GA4, GTM, CRM).<\/li>\n<li>Escolher a abordagem inicial com base no cen\u00e1rio t\u00e9cnico: client-side para velocidade, server-side para robustez ou uma combina\u00e7\u00e3o com GTM Server-Side para cen\u00e1rios multi-dom\u00ednio.<\/li>\n<li>Implementar captura das UTMs na primeira visita e armazen\u00e1-las de forma segura (cookie com dura\u00e7\u00e3o adequada ou session storage) para manter o estado durante a navega\u00e7\u00e3o.<\/li>\n<li>Garantir a propaga\u00e7\u00e3o de UTMs para links internos e para formul\u00e1rios: janelas de navega\u00e7\u00e3o, redirecionamentos e chamadas de API devem manter os par\u00e2metros.<\/li>\n<li>Configurar formul\u00e1rios para enviar UTMs como parte do payload (hidden fields) ou, se poss\u00edvel, manter UTMs no session state para upstreams em CRM e ferramentas de mensagens.<\/li>\n<li>Realizar testes de fluxo cr\u00edtico: abertura de homepage com UTMs, navega\u00e7\u00e3o at\u00e9 p\u00e1gina de produto, preenchimento de formul\u00e1rio, envio para WhatsApp ou conclus\u00e3o de compra, verificando no GA4 e no BigQuery se a origem est\u00e1 preservada.<\/li>\n<\/ol>\n<p>Observa\u00e7\u00e3o: durante a implementa\u00e7\u00e3o, tenha em mente a necessidade de valida\u00e7\u00e3o cont\u00ednua. Um setup que funciona em ambiente de homologa\u00e7\u00e3o pode se comportar de forma diferente em produ\u00e7\u00e3o, especialmente com plugins de cache, CDN e regras de redirecionamento. A robustez vem do teste repetido e do monitoramento de dados em GA4, Looker Studio ou no seu data lake, para confirmar que a cadeia de atribui\u00e7\u00e3o n\u00e3o foi rompida em nenhum ponto cr\u00edtico.<\/p>\n<h2>Erros comuns e valida\u00e7\u00e3o \u2014 como corrigir rapidamente<\/h2>\n<h3>Erros de inicializa\u00e7\u00e3o sem persist\u00eancia<\/h3>\n<p>Um erro comum \u00e9 iniciar a coleta de UTMs apenas na p\u00e1gina de destino sem armazen\u00e1-las para uso posterior. Sem persist\u00eancia, a UTMs n\u00e3o viajam pelos caminhos de navega\u00e7\u00e3o subsequentes, o que \u00e9 especialmente problem\u00e1tico em fluxos com p\u00e1ginas de conte\u00fado ou com formul\u00e1rios de convers\u00e3o que ficam em dom\u00ednios diferentes.<\/p>\n<blockquote><p>\u201cPersist\u00eancia de UTMs n\u00e3o \u00e9 opcional; \u00e9 a coluna vertebral da atribui\u00e7\u00e3o confi\u00e1vel.\u201d<\/p><\/blockquote>\n<h3>Sinais de que o setup est\u00e1 quebrado<\/h3>\n<p>Se voc\u00ea observa diverg\u00eancia de origem entre GA4 e o data layer, se UTMs aparecem em algumas p\u00e1ginas e somem em outras, ou se convers\u00f5es s\u00e3o atribu\u00eddas a fontes imprevistas, h\u00e1 alta chance de quebra na transmiss\u00e3o de UTMs entre p\u00e1ginas. Nesses casos, revise o fluxo de redirecionamentos, a configura\u00e7\u00e3o de cookies, as regras de GA4 e as integra\u00e7\u00f5es com GTM Server-Side para identificar onde a cadeia est\u00e1 sendo interrompida.<\/p>\n<blockquote><p>\u201cRu\u00eddos de dados aparecem quando UTMs n\u00e3o s\u00e3o propagadas de ponta a ponta; corrija o ponto de falha, n\u00e3o trate apenas o sintoma.\u201d<\/p><\/blockquote>\n<h2>Adapta\u00e7\u00e3o \u00e0 realidade do projeto<\/h2>\n<h3>Se voc\u00ea for uma ag\u00eancia ou time interno<\/h3>\n<p>Para equipes que prestam servi\u00e7o a clientes com diferentes plataformas e n\u00edveis de maturidade, o melhor caminho \u00e9 come\u00e7ar com uma solu\u00e7\u00e3o escal\u00e1vel que possa ser replicada entre contas. Documentar o fluxo, manter um reposit\u00f3rio de snippers de c\u00f3digo aprovados e criar um pequeno kit de governan\u00e7a de UTMs ajuda a padronizar a implementa\u00e7\u00e3o e reduzir OPEX em auditorias futuras. Al\u00e9m disso, mantenha alinhos com a \u00e1rea de privacidade para adaptar Consent Mode v2 \u00e0s necessidades de consentimento do usu\u00e1rio, sem comprometer a qualidade dos dados.<\/p>\n<p>Em \u00faltima an\u00e1lise, o objetivo \u00e9 entregar uma solu\u00e7\u00e3o que n\u00e3o dependa de uma pe\u00e7a \u00fanica de tecnologia, mas sim de um conjunto coerente de estrat\u00e9gias que assegurem a continuidade da atribui\u00e7\u00e3o mesmo em cen\u00e1rios complexos de navega\u00e7\u00e3o e de integra\u00e7\u00e3o com canais externos.<\/p>\n<p>Para quem est\u00e1 pronto para avan\u00e7ar, comece pelo roteiro de implementa\u00e7\u00e3o, valide os fluxos cr\u00edticos com GA4 e, se poss\u00edvel, conecte com seu data warehouse para checagem cruzada de dados. Se quiser, posso revisar seu setup atual e indicar o caminho mais eficiente para o seu stack espec\u00edfico de WordPress, GTM e GTM Server-Side.<\/p>","protected":false},"excerpt":{"rendered":"<p>O problema de rastreamento em WordPress costuma come\u00e7ar com uma situa\u00e7\u00e3o simples: o usu\u00e1rio chega pelo an\u00fancio com UTMs anexadas na URL (utm_source, utm_medium, utm_campaign, entre outras), navega por v\u00e1rias p\u00e1ginas, clica em links internos e at\u00e9 fecha o ciclo em um formul\u00e1rio ou bot de WhatsApp. Em algum momento, o par\u00e2metro de campanha desaparece,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[15,13,22,12,94],"content_language":[5],"class_list":["post-969","post","type-post","status-publish","format-standard","hentry","category-blogen","tag-atribuicao","tag-ga4","tag-gtm","tag-parametros-utm","tag-wordpress","content_language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/posts\/969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=969"}],"version-history":[{"count":0,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/posts\/969\/revisions"}],"wp:attachment":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=969"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=969"},{"taxonomy":"content_language","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcontent_language&post=969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}