{"id":929,"date":"2026-04-01T08:44:06","date_gmt":"2026-04-01T08:44:06","guid":{"rendered":"https:\/\/cms.funnelsheet.com\/?p=929"},"modified":"2026-04-01T08:44:06","modified_gmt":"2026-04-01T08:44:06","slug":"how-to-save-utm-parameters-and-send-them-to-bigquery-automatically","status":"publish","type":"post","link":"https:\/\/cms.funnelsheet.com\/?p=929","title":{"rendered":"How to Save UTM Parameters and Send Them to BigQuery Automatically"},"content":{"rendered":"<p>Par\u00e2metros UTM s\u00e3o o elo entre a origem de tr\u00e1fego e a receita. No dia a dia de gest\u00e3o de tr\u00e1fego pago, muitos times coletam UTMs na primeira visita e, em seguida, perdem o fio ao longo do funil: redesenho de atribui\u00e7\u00e3o, redirecionamentos, m\u00faltiplos dom\u00ednios, ou campanhas que passam por WhatsApp e landing pages diferentes. Quando o BigQuery n\u00e3o recebe a mesma leitura de UTMs que o GA4 ou que o CRM, o resultado \u00e9 incoer\u00eancia entre origem, canal, custo e convers\u00e3o. O objetivo deste texto \u00e9 mostrar como salvar corretamente os par\u00e2metros UTM e envi\u00e1-los automaticamente para o BigQuery, mantendo o contexto de usu\u00e1rio e a integridade da atribui\u00e7\u00e3o, sem depender apenas de cliques isolados. Voc\u00ea vai ver um caminho pr\u00e1tico para capturar, persistir e transportar esses dados com uma arquitetura que funciona tanto em Web quanto em Server-Side, levando em conta LGPD, consentimento e padr\u00f5es de governan\u00e7a de dados.<\/p>\n<p>Ao final desta leitura, voc\u00ea ter\u00e1 um blueprint t\u00e9cnico para: capturar UTMs na primeira intera\u00e7\u00e3o, persistir o contexto entre visitas e dispositivos, e entregar esses dados no BigQuery sem depender de valida\u00e7\u00f5es manuais ou planilhas. A tese \u00e9 simples: quando UTMs viajam com o usu\u00e1rio ao longo do funil e chegam ao BigQuery com o mesmo identificador de sess\u00e3o ou usu\u00e1rio, a atribui\u00e7\u00e3o fica mais est\u00e1vel, os offline conversions ganham contexto e voc\u00ea pode cruzar com CRM, leads e vendas. A implementa\u00e7\u00e3o envolve GTM Web, GTM Server-Side, GA4 e BigQuery export, com salvaguardas de consentimento e qualidade de dados. Vamos ao que realmente funciona na pr\u00e1tica.<\/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 salvar par\u00e2metros UTM e enviar para BigQuery<\/h2>\n<h3>Desafios comuns de UTMs que voc\u00ea j\u00e1 sente no dia a dia<\/h3>\n<p>UTMs costumam se perder entre cliques, redirecionamentos e m\u00faltiplas plataformas. Um usu\u00e1rio clica em uma campanha, abre o WhatsApp, clica em uma oferta e fecha a venda dias depois; se o UTMs n\u00e3o acompanha esse caminho, voc\u00ea perde o v\u00ednculo entre a origem e a convers\u00e3o. Al\u00e9m disso, UTMs podem n\u00e3o ser persistidos entre sess\u00f5es, especialmente em fluxos com SPA (single-page applications) ou em depois do redirecionamento para p\u00e1ginas de confirma\u00e7\u00e3o. Em muitos cen\u00e1rios, GA4 e o CRM mostram n\u00fameros diferentes por n\u00e3o estarem usando a mesma leitura de par\u00e2metros ao longo da jornada.<\/p>\n<blockquote><p>UTMs bem avaliados e persistidos s\u00e3o o elo entre a primeira intera\u00e7\u00e3o e a convers\u00e3o de receita.<\/p><\/blockquote>\n<h3>Conformidade, consentimento e limites pr\u00e1ticos<\/h3>\n<p>Consent Mode v2, LGPD e CMPs afetam a captura de dados. Mesmo com a melhor arquitetura, \u00e9 comum encontrar regimes onde parte do tr\u00e1fego tem consentimento faltante e, ainda assim, voc\u00ea precisa manter a consist\u00eancia de dados para auditoria. N\u00e3o \u00e9 apenas uma quest\u00e3o de tecnologia: \u00e9 uma quest\u00e3o de alinhamento entre governan\u00e7a, privacidade e necessidade de dados para decis\u00f5es de neg\u00f3cios r\u00e1pidas e respons\u00e1veis.<\/p>\n<blockquote><p>\u201cSe o dado de UTMs n\u00e3o segue o usu\u00e1rio, voc\u00ea est\u00e1 contando o sinal errado.\u201d<\/p><\/blockquote>\n<h2>Arquitetura recomendada: do URL ao BigQuery<\/h2>\n<h3>Captura no lado do cliente com GTM Web<\/h3>\n<p>A primeira linha de defesa \u00e9 capturar UTMs na presen\u00e7a da primeira visita e armazen\u00e1-las de forma confi\u00e1vel no contexto do usu\u00e1rio. Em GTM Web, voc\u00ea pode ler UTMs diretamente da URL (utm_source, utm_medium, utm_campaign, utm_term, utm_content) assim que o usu\u00e1rio chega pela primeira vez e, em seguida, empurrar esses valores para a data layer. O objetivo \u00e9 ter UTMs dispon\u00edveis para a pr\u00f3xima intera\u00e7\u00e3o, mesmo que o usu\u00e1rio navegue por caminhos diferentes dentro do site.<\/p>\n<h3>Propaga\u00e7\u00e3o no lado servidor com GTM Server-Side<\/h3>\n<p>Para evitar perda de contexto em redirecionamentos, o pr\u00f3ximo passo \u00e9 levar esse estado para o servidor. O GTM Server-Side funciona como um canal confi\u00e1vel para anexar UTMs aos eventos que chegam do lado do cliente (Web). Quando o evento atravessa o servidor, voc\u00ea pode consolidar UTMs com um identificador de usu\u00e1rio (user_id ou client_id) e garantir que o conjunto de UTMs siga o usu\u00e1rio por meio de diferentes dom\u00ednios ou sess\u00f5es. Em BigQuery, isso facilita uma jun\u00e7\u00e3o mais limpa entre origem e convers\u00e3o, mesmo em fluxos multi-canais.<\/p>\n<h3>Como o BigQuery recebe os dados<\/h3>\n<p>O caminho natural \u00e9 usar a exporta\u00e7\u00e3o GA4 para BigQuery, que disponibiliza eventos com par\u00e2metros personalizados. Se voc\u00ea configurar UTMs como par\u00e2metros de evento ou como user properties, eles ficam dispon\u00edveis para consultas SQL no BigQuery. A ideia pr\u00e1tica \u00e9: o GA4 coleta UTMs automaticamente na primeira leitura, voc\u00ea exp\u00f5e-os como par\u00e2metros de evento (utm_source, utm_medium, utm_campaign, utm_term, utm_content) ou como propriedades de usu\u00e1rio, e o BigQuery exporta esse conjunto completo de dados para an\u00e1lise hist\u00f3rica, cross-session e cross-device.<\/p>\n<h2>Passo a passo: implementa\u00e7\u00e3o pr\u00e1tica<\/h2>\n<ol>\n<li>Defina quais UTMs ser\u00e3o persistidos: utm_source, utm_medium, utm_campaign, utm_term e utm_content. Padronize nomes para evitar varia\u00e7\u00f5es entre campanhas e redes.<\/li>\n<li>Capte UTMs no 1\u00ba toque com GTM Web: crie vari\u00e1veis de URL para cada par\u00e2metro e empurre-as para a data layer assim que a p\u00e1gina carregar pela primeira vez.<\/li>\n<li>Persist\u00eancia no lado do cliente: implemente um cookie ou localStorage para armazenar os UTMs capturados na primeira visita, assegurando que o valor seja mantido ao longo da navega\u00e7\u00e3o do usu\u00e1rio, mesmo que o usu\u00e1rio clique em caminhos diferentes dentro do site.<\/li>\n<li>Envio para GA4: configure uma tag no GTM Web para enviar os UTMs como par\u00e2metros de evento ou como propriedades de usu\u00e1rio (user_properties) em eventos relevantes, garantindo que o contexto de origem viaje com as intera\u00e7\u00f5es subsequentes.<\/li>\n<li>Configura\u00e7\u00e3o do GTM Server-Side: encaminhe os eventos com UTMs ao GTM Server-Side, consolidando UTMs com o identificador do usu\u00e1rio e limpando valores sens\u00edveis conforme pol\u00edticas de privacidade. Utilize a data layer enriquecida para manter a consist\u00eancia entre Web e Server-Side.<\/li>\n<li>Exporta\u00e7\u00e3o para BigQuery: ative a exporta\u00e7\u00e3o GA4 para BigQuery na property correspondente. Verifique se os UTMs aparecem como par\u00e2metros de evento ou como propriedades de usu\u00e1rio no schema do BigQuery (event_params e user_properties).<\/li>\n<li>Valida\u00e7\u00e3o de dados: compare relat\u00f3rios GA4 com as tabelas do BigQuery para confirmar que UTMs est\u00e3o presentes, consistentes entre sess\u00f5es e alinhados com CRM\/Looker Studio. Fa\u00e7a valida\u00e7\u00f5es de amostra com cliques, redirecionamentos e convers\u00f5es offline.<\/li>\n<li>Monitoramento cont\u00ednuo: implemente checks automatizados para detectar gaps de UTMs (p. ex., UTMs ausentes em eventos de compra ou em convers\u00f5es offline) e tenha alertas que sinalizem mudan\u00e7as no pattern de UTMs entre canais.<\/li>\n<\/ol>\n<p>Essa sequ\u00eancia n\u00e3o \u00e9 apenas uma tarefa de implementa\u00e7\u00e3o. \u00c9 uma mudan\u00e7a de processo que exige alinhamento entre equipes de desenvolvimento, analytics e m\u00eddia paga. Em ambientes com SPA, v\u00e1rias plataformas (WhatsApp, landing pages din\u00e2micas, formul\u00e1rios integrados) e fluxos de convers\u00e3o offline, a persist\u00eancia de UTMs \u00e9 o que sustenta a confian\u00e7a na atribui\u00e7\u00e3o e na linha do tempo de receita. Abaixo, um guia r\u00e1pido de valida\u00e7\u00e3o e armadilhas comuns para evitar retrabalho.<\/p>\n<h2>Valida\u00e7\u00e3o, monitoramento e armadilhas comuns<\/h2>\n<h3>Erros comuns e corre\u00e7\u00f5es r\u00e1pidas<\/h3>\n<p>Um erro frequente \u00e9 capturar UTMs apenas na primeira p\u00e1gina de entrada e esquecer de repassar o contexto quando o usu\u00e1rio navega para fora do dom\u00ednio ou para um dom\u00ednio de pagamento. A corre\u00e7\u00e3o envolve garantir que UTMs sejam salvos em um armazenamento persistente (cookie\/localStorage) e anexados a cada evento, mesmo em redirecionamentos via servidores ou gateways de pagamento. Outro problema comum \u00e9 n\u00e3o harmonizar UTMs com o identificador de usu\u00e1rio; sem esse link, as UTMs perdem-se entre sess\u00f5es. A corre\u00e7\u00e3o \u00e9 usar o user_id ou client_id como chave prim\u00e1ria para associar UTMs a eventos no BigQuery.<\/p>\n<h3>Sinais de que o setup est\u00e1 quebrado<\/h3>\n<p>Se GA4 reporta UTMs de maneira diferente dos dados no BigQuery, ou se h\u00e1 convers\u00f5es sem o contexto de origem, \u00e9 prov\u00e1vel que haja discrep\u00e2ncia entre client-side e server-side, ou UTMs n\u00e3o sendo persistidos para todos os eventos. Verifique a consist\u00eancia do data layer, a troca de UTMs entre Web e Server-Side, e a configura\u00e7\u00e3o de exporta\u00e7\u00e3o para BigQuery. Pequenos desvios, como UTMs com valores ausentes ou com varia\u00e7\u00f5es de mai\u00fasculas\/min\u00fasculas, podem acumular-se e distorcer a vis\u00e3o de atribui\u00e7\u00e3o.<\/p>\n<h2>Casos de uso e padr\u00f5es operacionais<\/h2>\n<h3>Como adaptar a implementa\u00e7\u00e3o ao contexto do projeto<\/h3>\n<p>Para equipes que trabalham com WhatsApp, CRM ou envio de leads por telefone, a integra\u00e7\u00e3o entre UTMs e dados de convers\u00e3o precisa considerar o canal offline. Em muitos cen\u00e1rios, a solu\u00e7\u00e3o envolve capturar UTMs no site, associ\u00e1-los a IDs de lead gerados no CRM ao longo do tempo e sincronizar com BigQuery para an\u00e1lises de jornada completa. Em projetos com LGPD, \u00e9 essencial registrar consentimento para cada tipo de processamento de dados e respeitar a disponibilidade de dados quando o consentimento n\u00e3o \u00e9 fornecido.<\/p>\n<h3>Roteiro de auditoria r\u00e1pida<\/h3>\n<p>Antes de colocar em produ\u00e7\u00e3o, fa\u00e7a uma auditoria simples: verifique se UTMs aparecem no data layer no primeiro carregamento, confirme se os eventos subsequentes incluem os UTMs (ou o user_id associado), valide se o BigQuery recebe esses par\u00e2metros como event_params e compare com o CTR e a taxa de convers\u00e3o por campanha no Looker Studio. Em ambientes com Looker Studio, use a jun\u00e7\u00e3o entre events e user_properties para confirmar o pipeline completo.<\/p>\n<h3>Casos de uso espec\u00edficos: WhatsApp e CRM<\/h3>\n<p>Para fluxos que passam por WhatsApp, a atribui\u00e7\u00e3o pode sofrer com redirecionamentos\/abrevia\u00e7\u00f5es de URL. Neste caso, certifique-se de que UTMs s\u00e3o preservados no encode\/decode de URLs, e que o redirecionamento para o WhatsApp n\u00e3o supere a capacidade de manter o contexto. Em CRMs, a chave \u00e9 vincular UTMs a cada lead com um identificador \u00fanico\u2014facilita cruzar o canal com a receita real.<\/p>\n<h2>Perguntas frequentes<\/h2>\n<ul>\n<li>\n<p><strong>Posso salvar UTMs apenas no GA4?<\/strong><\/p>\n<p>\u00c9 poss\u00edvel, mas n\u00e3o suficiente: GA4 n\u00e3o garante que o contexto de UTMs seja preservado para toda a jornada, especialmente em fluxos com m\u00faltiplos dom\u00ednios ou offline. Recomenda-se armazenar UTMs tamb\u00e9m no data layer\/localStorage e repassar para o BigQuery via event_params para uma vis\u00e3o completa.<\/p>\n<\/li>\n<li>\n<p><strong>Como evitar que UTMs sejam perdidos em redirecionamentos?<\/strong><\/p>\n<p>Capte UTMs no primeiro toque, armazene em cookie\/localStorage, e inclua-os em eventos subsequentes mesmo ap\u00f3s redirecionamentos. Se usar GTM Server-Side, assegure que o servidor transporte esse contexto junto com o user_id.<\/p>\n<\/li>\n<li>\n<p><strong>\u00c9 seguro enviar UTMs para BigQuery?<\/strong><\/p>\n<p>Em ambientes com consentimento, UTMs podem ser exportados, desde que n\u00e3o haja dados sens\u00edveis. Considere usar dados anonimizados quando poss\u00edvel e mantenha controles de acesso no BigQuery para proteger informa\u00e7\u00f5es de marketing e de usu\u00e1rio.<\/p>\n<\/li>\n<\/ul>\n<p>Agora, com a arquitetura descrita e o passo a passo claro, voc\u00ea pode fechar o ciclo entre primeira impress\u00e3o, atribui\u00e7\u00e3o e receita no BigQuery. A implementa\u00e7\u00e3o exige coordena\u00e7\u00e3o entre time t\u00e9cnico e de m\u00eddia, mas os ganhos em consist\u00eancia de dados, auditoria e tomada de decis\u00e3o valem o esfor\u00e7o. Se voc\u00ea estiver pronto para avan\u00e7ar, alinhe com o time de dev a cria\u00e7\u00e3o do data layer padronizado, a configura\u00e7\u00e3o de tags no GTM Web e Server-Side e a ativa\u00e7\u00e3o da exporta\u00e7\u00e3o GA4 para BigQuery \u2014 depois \u00e9 s\u00f3 validar com uma rodada de testes controlados.<\/p>\n<p>Para facilitar a checagem de fundamenta\u00e7\u00e3o t\u00e9cnica durante a implementa\u00e7\u00e3o, vale consultar a documenta\u00e7\u00e3o oficial sobre a exporta\u00e7\u00e3o GA4 para BigQuery e as pr\u00e1ticas recomendadas de GTM para trabalhar com data layer e par\u00e2metros de URL: <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/ga4-bigquery-export\" target=\"_blank\" rel=\"noopener\">GA4 BigQuery export<\/a> e <a href=\"https:\/\/developers.google.com\/tag-manager\/devguide\" target=\"_blank\" rel=\"noopener\">Guia do GTM (Data Layer)<\/a>. Essas refer\u00eancias ajudam a alinhar expectativas com o comportamento real das ferramentas e a evitar armadilhas comuns na integra\u00e7\u00e3o entre Web, Server-Side e BigQuery.<\/p>\n<p>Se quiser acompanhar esse tipo de implementa\u00e7\u00e3o com maior rigor, come\u00e7amos com a valida\u00e7\u00e3o do data layer no ambiente de staging, seguido por uma rodada de testes com cliques, redirecionamentos e uma venda de teste para fechar o ciclo de dados. O pr\u00f3ximo passo pr\u00e1tico \u00e9 mapear o fluxo atual da sua audi\u00eancia, selecionar os UTMs que ser\u00e3o persistidos e definir a chave de uni\u00e3o entre UTMs e o identificador do usu\u00e1rio no BigQuery. Com essa base, voc\u00ea ter\u00e1 dados mais confi\u00e1veis para auditar campanhas, explicar resultados aos clientes e planejar pr\u00f3ximos investimentos com maior precis\u00e3o.<\/p>","protected":false},"excerpt":{"rendered":"<p>Par\u00e2metros UTM s\u00e3o o elo entre a origem de tr\u00e1fego e a receita. No dia a dia de gest\u00e3o de tr\u00e1fego pago, muitos times coletam UTMs na primeira visita e, em seguida, perdem o fio ao longo do funil: redesenho de atribui\u00e7\u00e3o, redirecionamentos, m\u00faltiplos dom\u00ednios, ou campanhas que passam por WhatsApp e landing pages diferentes.&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":[24,20,13,25,12],"content_language":[5],"class_list":["post-929","post","type-post","status-publish","format-standard","hentry","category-blogen","tag-atribuicao-de-trafego","tag-bigquery","tag-ga4","tag-lgpd","tag-parametros-utm","content_language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/posts\/929","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=929"}],"version-history":[{"count":0,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=\/wp\/v2\/posts\/929\/revisions"}],"wp:attachment":[{"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=929"},{"taxonomy":"content_language","embeddable":true,"href":"https:\/\/cms.funnelsheet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcontent_language&post=929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}