{"id":716,"date":"2019-10-24T09:51:12","date_gmt":"2019-10-24T09:51:12","guid":{"rendered":"https:\/\/gaconnector.com\/blog\/?p=716"},"modified":"2026-05-19T21:45:24","modified_gmt":"2026-05-19T21:45:24","slug":"how-to-add-utm-parameters-to-google-ads-automatically","status":"publish","type":"post","link":"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/","title":{"rendered":"How to Add UTM Parameters to Google Ads (automatically)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">UTM parameters are tracking tags added to a website URL that tell analytics tools where a visitor came from. In Google Ads, you can set up UTM tracking automatically using URL suffixes \u2014 no manual tagging on each ad required. This guide covers the exact setup steps, how campaign parameters interact with Google Analytics 4, and how to run them alongside Google&#8217;s auto-tagging.<\/span><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#UTM_Parameters_and_Google_Ads_What_You_Actually_Need_to_Know\" >UTM Parameters and Google Ads: What You Actually Need to Know<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#What_UTM_Parameters_Are\" >What UTM Parameters Are<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Why_Manual_UTM_Tagging_on_Every_Ad_Breaks_Down\" >Why Manual UTM Tagging on Every Ad Breaks Down<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#How_to_Add_UTM_Parameters_Automatically_via_URL_Suffix\" >How to Add UTM Parameters Automatically via URL Suffix<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Setting_a_URL_Suffix_at_the_Account_Level\" >Setting a URL Suffix at the Account Level<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Setting_a_URL_Suffix_at_the_Campaign_Level\" >Setting a URL Suffix at the Campaign Level<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Setting_a_URL_Suffix_at_the_Ad_Group_Level\" >Setting a URL Suffix at the Ad Group Level<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Testing_Your_URL_Suffix_Before_Launch\" >Testing Your URL Suffix Before Launch<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#ValueTrack_Parameters_Dynamic_UTM_Values_for_Google_Ads\" >ValueTrack Parameters: Dynamic UTM Values for Google Ads<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#The_Most_Useful_ValueTrack_Parameters\" >The Most Useful ValueTrack Parameters<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#The_Recommended_URL_Suffix_Templates\" >The Recommended URL Suffix Templates<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#The_utm_medium_Value_That_Breaks_GA4\" >The utm_medium Value That Breaks GA4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#UTM_Parameters_in_Google_Analytics_4_How_It_Actually_Works\" >UTM Parameters in Google Analytics 4: How It Actually Works<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#How_GA4_Session_Attribution_Works_with_UTMs\" >How GA4 Session Attribution Works with UTMs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Where_to_Find_UTM_Data_in_GA4\" >Where to Find UTM Data in GA4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#The_GA4_Channel_Grouping_Problem\" >The GA4 Channel Grouping Problem<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Auto-Tagging_vs_UTM_Parameters_Using_Both_Together\" >Auto-Tagging vs UTM Parameters: Using Both Together<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#When_UTMs_Override_GCLID_in_GA4\" >When UTMs Override GCLID in GA4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Capturing_UTM_Parameters_in_Your_CRM_and_Lead_Forms\" >Capturing UTM Parameters in Your CRM and Lead Forms<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Common_UTM_Mistakes_in_Google_Ads\" >Common UTM Mistakes in Google Ads<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Still_Using_Tracking_Templates\" >Still Using Tracking Templates<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Inconsistent_Naming_Conventions\" >Inconsistent Naming Conventions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Forgetting_Non-Search_Campaign_Types\" >Forgetting Non-Search Campaign Types<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Skipping_the_URL_Test\" >Skipping the URL Test<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Stacking_Suffixes_and_Manual_Ad_UTMs\" >Stacking Suffixes and Manual Ad UTMs<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#FAQ\" >FAQ<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Do_I_need_UTM_parameters_if_Im_using_Google_Ads_auto-tagging\" >Do I need UTM parameters if I&#8217;m using Google Ads auto-tagging?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Why_are_my_UTM_parameters_not_showing_up_in_GA4\" >Why are my UTM parameters not showing up in GA4?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Can_I_use_UTM_parameters_with_Smart_Bidding\" >Can I use UTM parameters with Smart Bidding?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Whats_the_difference_between_campaignid_and_campaign\" >What&#8217;s the difference between {campaignid} and {campaign}?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Does_using_UTM_parameters_affect_Quality_Score\" >Does using UTM parameters affect Quality Score?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#Can_I_capture_Google_Ads_UTM_parameters_in_Salesforce_or_HubSpot_directly\" >Can I capture Google Ads UTM parameters in Salesforce or HubSpot directly?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/gaconnector.com\/blog\/how-to-add-utm-parameters-to-google-ads-automatically\/#What_happens_when_someone_clicks_an_ad_bounces_and_comes_back_three_days_later_from_organic\" >What happens when someone clicks an ad, bounces, and comes back three days later from organic?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"UTM_Parameters_and_Google_Ads_What_You_Actually_Need_to_Know\"><\/span><b>UTM Parameters and Google Ads: What You Actually Need to Know<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Google Ads has auto-tagging built in \u2014 a system that appends a GCLID (Google Click Identifier) to every URL when someone clicks your ad. GCLID passes data to Google Analytics automatically. In theory, you don&#8217;t need UTM parameters at all.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In practice, UTMs still matter. Here&#8217;s why.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1596 size-full\" src=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging.png\" alt=\"\" width=\"1490\" height=\"777\" srcset=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging.png 1490w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging-300x156.png 300w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging-1024x534.png 1024w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging-768x400.png 768w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/UTM-parameters-and-auto-tagging-788x411.png 788w\" sizes=\"(max-width: 1490px) 100vw, 1490px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">GCLID data only flows into Google Analytics. If you use any other analytics tool, a third-party attribution platform, or you want website traffic data in your CRM, GCLID is useless. UTM parameters travel in the URL and get read by anything that parses query strings \u2014 Google Analytics 4, your CRM, your attribution tool, your data warehouse.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">UTMs also let you add custom campaign structure that GCLID doesn&#8217;t provide. You can pass campaign names, ad content labels, and keyword terms exactly as you&#8217;ve structured them in your own reporting system, not just in Google&#8217;s format.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And capturing UTM parameters in lead forms puts real marketing context inside each CRM record. When a sales rep opens a lead and sees utm_source=google \/ utm_medium=cpc \/ utm_campaign=brand_exact, they know the origin without touching Analytics. According to<\/span><a href=\"https:\/\/www.hubspot.com\/state-of-marketing\"> <span style=\"font-weight: 400;\">HubSpot&#8217;s 2024 State of Marketing report<\/span><\/a><span style=\"font-weight: 400;\">, proving ROI of marketing efforts remains the top challenge for marketers. UTM-level attribution is where you start fixing that.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_UTM_Parameters_Are\"><\/span><b>What UTM Parameters Are<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">UTM parameters \u2014 sometimes called UTM codes \u2014 are five standard query string values developed by Urchin, the analytics company Google acquired in 2005. The acronym stands for Urchin Tracking Module. The five parameters:<\/span><\/p>\n<p><strong>utm_source<\/strong><span style=\"font-weight: 400;\"> \u2014 Where the traffic came from (google, facebook, newsletter).<\/span><\/p>\n<p><strong>utm_medium<\/strong><span style=\"font-weight: 400;\"> \u2014 The marketing medium or channel (cpc, email, organic).\u00a0<\/span><\/p>\n<p><strong>utm_campaign<\/strong><span style=\"font-weight: 400;\"> \u2014 The campaign name you assign (summer_sale, brand_keywords).\u00a0<\/span><\/p>\n<p><strong>utm_content<\/strong><span style=\"font-weight: 400;\"> \u2014 Differentiates ads within the same campaign (ad_variation_a, headline_test).<\/span><\/p>\n<p><strong>utm_term<\/strong><span style=\"font-weight: 400;\"> \u2014 The keyword that triggered the ad.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For Google Ads, all five are useful. The first three are required for proper attribution in GA4. <\/span><strong>utm_content<\/strong><span style=\"font-weight: 400;\"> and <\/span><strong>utm_term<\/strong><span style=\"font-weight: 400;\"> become essential when you&#8217;re tracking keyword-level performance or running A\/B tests on ad creatives.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_Manual_UTM_Tagging_on_Every_Ad_Breaks_Down\"><\/span><b>Why Manual UTM Tagging on Every Ad Breaks Down<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The old approach was to append UTM parameters directly to each ad&#8217;s final URL. Every ad, every ad group, every marketing campaign gets its own tagged URL. When you rename a campaign or restructure ad groups, every URL needs manual updates. One missed update silently breaks attribution \u2014 often for days before anyone notices.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">URL suffixes fix this. Set a template once at the account, campaign, or ad group level, and Google Ads appends it automatically to every ad underneath. Change the suffix once and it propagates everywhere. No more hunting through hundreds of ad URLs.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_to_Add_UTM_Parameters_Automatically_via_URL_Suffix\"><\/span><b>How to Add UTM Parameters Automatically via URL Suffix<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">URL suffixes are the right method for adding campaign parameters in Google Ads today. The older approach \u2014 tracking templates \u2014 stopped working reliably when Google rolled out parallel tracking in 2018. Parallel tracking loads the landing page and fires tracking requests at the same time, which broke redirect-based tracking templates. URL suffixes append parameters directly to the final URL without a redirect, so they work fine.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1597 size-full\" src=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters.png\" alt=\"\" width=\"1487\" height=\"777\" srcset=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters.png 1487w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters-300x157.png 300w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters-1024x535.png 1024w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters-768x401.png 768w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/URL-Suffix-and-UTM-Parameters-788x412.png 788w\" sizes=\"(max-width: 1487px) 100vw, 1487px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">You can set a URL suffix at three levels: account, campaign, or ad group. The most specific level wins. Most advertisers set one at the account level and only override at campaign level when needed.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Setting_a_URL_Suffix_at_the_Account_Level\"><\/span><b>Setting a URL Suffix at the Account Level<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The account-level suffix applies to every campaign unless a lower level overrides it.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In Google Ads, go to <\/span><b>Settings<\/b><span style=\"font-weight: 400;\"> in the left nav<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Select <\/span><b>Account settings<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Expand <\/span><b>Tracking<\/b><span style=\"font-weight: 400;\"> at the bottom<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In the <\/span><b>Final URL suffix<\/b><span style=\"font-weight: 400;\"> field, paste your suffix<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click <\/span><b>Save<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Your suffix should look like this:<\/span><\/p>\n<blockquote><p><strong>utm_source=google&amp;utm_medium=cpc&amp;utm_campaign={campaignid}&amp;utm_content={adgroupid}&amp;utm_term={keyword}<\/strong><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">Don&#8217;t include a <\/span><strong>?<\/strong><span style=\"font-weight: 400;\"> at the start \u2014 Google Ads handles the separator automatically. If your website URL already has query parameters on the landing page (e.g., <\/span><strong>example.com\/page?ref=homepage<\/strong><span style=\"font-weight: 400;\">), Google appends your suffix with <\/span><strong>&amp;<\/strong><span style=\"font-weight: 400;\"> rather than <\/span><strong>?<\/strong><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Setting_a_URL_Suffix_at_the_Campaign_Level\"><\/span><b>Setting a URL Suffix at the Campaign Level<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Use this when specific campaigns need different UTM values \u2014 brand versus competitor, Search versus Display, that kind of thing.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Go to <\/span><b>Campaigns<\/b><span style=\"font-weight: 400;\"> in the left nav<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Select the campaign you want to configure<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click <\/span><b>Settings<\/b><span style=\"font-weight: 400;\"> \u2192 scroll to <\/span><b>Additional settings<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Expand <\/span><b>Campaign URL options<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In <\/span><b>Final URL suffix<\/b><span style=\"font-weight: 400;\">, enter your suffix<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click <\/span><b>Save<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Campaign-level settings override the account-level suffix for every ad in that campaign.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Setting_a_URL_Suffix_at_the_Ad_Group_Level\"><\/span><b>Setting a URL Suffix at the Ad Group Level<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Same process as campaign level, but inside a specific ad group&#8217;s settings. Use this sparingly \u2014 only when an ad group targets a completely different product line that needs its own tracking. Over-applying ad group suffixes turns into a maintenance headache fast.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Testing_Your_URL_Suffix_Before_Launch\"><\/span><b>Testing Your URL Suffix Before Launch<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Before anything goes live, use the built-in URL test tool:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Open any ad in the campaign where you set the suffix<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click <\/span><b>Edit<\/b><span style=\"font-weight: 400;\"> \u2192 <\/span><b>Ad URL options<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Click <\/span><b>Test<\/b><span style=\"font-weight: 400;\"> next to the Final URL<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Google shows the full URL it will actually serve, with ValueTrack variables substituted for real values. If your UTM parameters appear correctly, you&#8217;re good. If you see double question marks, missing ampersands, or empty <\/span><strong>{placeholders}<\/strong><span style=\"font-weight: 400;\"> where values should be \u2014 fix it before the campaign runs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One character error \u2014 a stray <\/span><strong>?<\/strong><span style=\"font-weight: 400;\">, a misplaced <\/span><strong>&amp;<\/strong><span style=\"font-weight: 400;\"> \u2014 silently kills tracking on every ad in the campaign.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"ValueTrack_Parameters_Dynamic_UTM_Values_for_Google_Ads\"><\/span><b>ValueTrack Parameters: Dynamic UTM Values for Google Ads<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">ValueTrack parameters are Google&#8217;s dynamic substitution variables for URL suffixes. Instead of hardcoding campaign data like a campaign name \u2014 which breaks the moment you rename it \u2014 you use a placeholder that Google replaces in real time at each click.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">According to<\/span> <a href=\"https:\/\/support.google.com\/google-ads\/answer\/6305348\"><span style=\"font-weight: 400;\">Google Ads Help documentation<\/span><\/a><span style=\"font-weight: 400;\">, ValueTrack parameters work across Search, Display, Shopping, Video, and Performance Max campaigns, with some parameters unavailable on specific campaign types.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_Most_Useful_ValueTrack_Parameters\"><\/span><b>The Most Useful ValueTrack Parameters<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<td><b>Parameter<\/b><\/td>\n<td><b>What It Inserts<\/b><\/td>\n<td><b>Example Output<\/b><\/td>\n<\/tr>\n<tr>\n<td><strong>{campaignid}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Campaign ID number<\/span><\/td>\n<td><span style=\"font-weight: 400;\">12345678<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{campaign}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Campaign name<\/span><\/td>\n<td><span style=\"font-weight: 400;\">brand-keywords<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{adgroupid}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Ad group ID number<\/span><\/td>\n<td><span style=\"font-weight: 400;\">98765432<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{adgroup}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Ad group name<\/span><\/td>\n<td><span style=\"font-weight: 400;\">broad-match-shoes<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{keyword}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Keyword that triggered the ad<\/span><\/td>\n<td><span style=\"font-weight: 400;\">running shoes sale<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{matchtype}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Keyword match type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">e (exact), p (phrase), b (broad)<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{device}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Device type<\/span><\/td>\n<td><span style=\"font-weight: 400;\">m (mobile), t (tablet), c (computer)<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{placement}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Placement URL for Display<\/span><\/td>\n<td><span style=\"font-weight: 400;\">example.com<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{network}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Ad network<\/span><\/td>\n<td><span style=\"font-weight: 400;\">g (search), s (search partners), d (display)<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{creative}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Ad creative ID<\/span><\/td>\n<td><span style=\"font-weight: 400;\">456789<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{loc_physical_ms}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Physical location ID<\/span><\/td>\n<td><span style=\"font-weight: 400;\">9061285<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>{product_id}<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Product ID for Shopping<\/span><\/td>\n<td><span style=\"font-weight: 400;\">SKU-12345<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"The_Recommended_URL_Suffix_Templates\"><\/span><b>The Recommended URL Suffix Templates<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">For most Search campaigns:<\/span><\/p>\n<blockquote><p><strong>utm_source=google&amp;utm_medium=cpc&amp;utm_campaign={campaign}&amp;utm_content={adgroup}&amp;utm_term={keyword}<\/strong><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">If you&#8217;d rather use IDs than names (IDs survive renames; names are easier to read in reports):<\/span><\/p>\n<blockquote><p><strong>utm_source=google&amp;utm_medium=cpc&amp;utm_campaign={campaignid}&amp;utm_content={adgroupid}&amp;utm_term={keyword}<\/strong><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">For Performance Max \u2014 <\/span><strong>{keyword}<\/strong><span style=\"font-weight: 400;\"> returns empty because PMax doesn&#8217;t work on keywords:<\/span><\/p>\n<blockquote><p><strong>utm_source=google&amp;utm_medium=cpc&amp;utm_campaign={campaign}&amp;utm_content=performance-max<\/strong><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">For Shopping campaigns, swap <\/span><strong>{keyword}<\/strong><span style=\"font-weight: 400;\"> for <\/span><strong>{product_id}<\/strong><span style=\"font-weight: 400;\"> to get product-level tracking:<\/span><\/p>\n<blockquote><p><strong>utm_source=google&amp;utm_medium=cpc&amp;utm_campaign={campaign}&amp;utm_content={adgroup}&amp;utm_term={product_id}<\/strong><\/p><\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"The_utm_medium_Value_That_Breaks_GA4\"><\/span><b>The utm_medium Value That Breaks GA4<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">For paid search, <\/span><strong>utm_medium=cpc<\/strong><span style=\"font-weight: 400;\"> is the only value that reliably works. According to<\/span> <a href=\"https:\/\/support.google.com\/analytics\/answer\/9756891\"><span style=\"font-weight: 400;\">Google&#8217;s GA4 documentation on channel groupings<\/span><\/a><span style=\"font-weight: 400;\">, the Paid Search channel requires utm_medium to match a recognized list including cpc, ppc, and paidsearch.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Use <\/span><strong>paid<\/strong><span style=\"font-weight: 400;\">, <\/span><strong>ads<\/strong><span style=\"font-weight: 400;\">, or <\/span><strong>google-ads<\/strong><span style=\"font-weight: 400;\"> instead, and your traffic drops into the Unassigned bucket. You probably won&#8217;t notice for a week \u2014 until someone asks why Paid Search is down 30% and Unassigned has mysteriously spiked.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"UTM_Parameters_in_Google_Analytics_4_How_It_Actually_Works\"><\/span><b>UTM Parameters in Google Analytics 4: How It Actually Works<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">GA4 reads UTM parameters from the landing page URL the moment a session starts. If they&#8217;re present, GA4 uses them for session-level attribution. This replaced Universal Analytics behavior, where UTMs set the traffic source for the entire visit regardless of how long it lasted.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1598 size-full\" src=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters.png\" alt=\"\" width=\"1482\" height=\"773\" srcset=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters.png 1482w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters-300x156.png 300w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters-1024x534.png 1024w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters-768x401.png 768w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/How-GA4-Reads-UTM-Parameters-788x411.png 788w\" sizes=\"(max-width: 1482px) 100vw, 1482px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">The shift to GA4 actually made UTM accuracy more important. According to<\/span> <a href=\"https:\/\/support.google.com\/analytics\/answer\/10759417\"><span style=\"font-weight: 400;\">Google&#8217;s GA4 migration documentation<\/span><\/a><span style=\"font-weight: 400;\">, GA4 uses an event-based data model rather than session-based \u2014 attribution is evaluated at the individual event level. That means your utm_campaign and utm_term values show up against specific conversion events, not just rolled up to session level.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_GA4_Session_Attribution_Works_with_UTMs\"><\/span><b>How GA4 Session Attribution Works with UTMs<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">GA4 uses a session-scoped source\/medium model by default. UTM parameters on the landing page set the source and medium for the whole session. A user arrives via google\/cpc, browses five pages, submits a form \u2014 the whole session, including the form submission event, gets attributed to google\/cpc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In GA4 reports and explorations, UTM data lives under these dimensions: <\/span><b>Session source \/ medium<\/b><span style=\"font-weight: 400;\">, <\/span><b>Session campaign<\/b><span style=\"font-weight: 400;\">, <\/span><b>Session manual ad content<\/b><span style=\"font-weight: 400;\">, and <\/span><b>Session manual term<\/b><span style=\"font-weight: 400;\">. GA4 carries attribution through to the event level for conversions, so you can tie specific goals to specific UTM values \u2014 not just traffic volumes.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Where_to_Find_UTM_Data_in_GA4\"><\/span><b>Where to Find UTM Data in GA4<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><b>Reports \u2192 Acquisition \u2192 Traffic Acquisition<\/b><span style=\"font-weight: 400;\"> is the starting point. Session source\/medium is the default dimension. Filter to <\/span><span style=\"font-weight: 400;\"><strong>google<\/strong> \/ <strong>cpc<\/strong><\/span><span style=\"font-weight: 400;\">, then add Session campaign or Session manual term as a secondary dimension for keyword-level breakdown.<\/span><\/p>\n<p><b>Explore \u2192 Free Form<\/b><span style=\"font-weight: 400;\"> is where the real work happens. Build a custom exploration with Session campaign and Session manual term as dimensions, conversion events as metrics. No spreadsheet export needed.<\/span><\/p>\n<p><b>Admin \u2192 DebugView<\/b><span style=\"font-weight: 400;\"> is for testing. Load a UTM-tagged URL while DebugView is open and watch session_start fire with your parameters. If they appear there, tracking is working.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One thing worth knowing: internal links between pages on your own site don&#8217;t reset UTM attribution within an active session. The campaign source and medium set on the landing page stick for the whole session, regardless of how many pages the visitor navigates through.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_GA4_Channel_Grouping_Problem\"><\/span><b>The GA4 Channel Grouping Problem<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">For Google Ads traffic to land in GA4&#8217;s <\/span><b>Paid Search<\/b><span style=\"font-weight: 400;\"> channel, two things must be true: utm_source must match a recognized search engine, and utm_medium must match a recognized paid medium. If either fails, traffic lands in Unassigned.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can audit this fast. Go to Traffic Acquisition and look for Unassigned volume that appears on the same dates as your ad spend. That&#8217;s usually the culprit.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Custom channel groups under Admin \u2192 Data Display \u2192 Channel Groups can patch edge cases, but it&#8217;s always better to fix the UTM values at the source than to maintain a workaround in GA4.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Auto-Tagging_vs_UTM_Parameters_Using_Both_Together\"><\/span><b>Auto-Tagging vs UTM Parameters: Using Both Together<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Auto-tagging and UTM parameters coexist fine \u2014 using both is the standard setup for serious Google Ads advertisers.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Auto-tagging appends GCLID on every click. GCLID carries data UTMs can&#8217;t: bid strategy type, ad position, quality score components, impression share, and other Google Ads-native metrics. When GCLID is linked, GA4 pulls this directly from your Google Ads account and surfaces it in the Advertising workspace.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">UTM parameters cover everything else \u2014 tracking outside GA4, consistent naming across marketing campaigns and platforms, CRM-level attribution, and compatibility with any tool that reads URL query strings. According to<\/span> <a href=\"https:\/\/www.northbeam.io\/resources\"><span style=\"font-weight: 400;\">Northbeam&#8217;s 2023 State of Marketing Attribution report<\/span><\/a><span style=\"font-weight: 400;\">, over 60% of performance marketers use UTMs across all paid channels for cross-platform consistency. GCLID alone doesn&#8217;t do that job \u2014 and if you&#8217;re evaluating which<\/span> <a href=\"https:\/\/gaconnector.com\/blog\/marketing-attribution-models\/\"><span style=\"font-weight: 400;\">marketing attribution model<\/span><\/a><span style=\"font-weight: 400;\"> to use across those channels, UTM naming consistency matters even more.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"When_UTMs_Override_GCLID_in_GA4\"><\/span><b>When UTMs Override GCLID in GA4<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">When both GCLID and UTM parameters are in the URL, GA4 uses GCLID for attribution by default. To flip it:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">In GA4, go to <\/span><b>Admin \u2192 Property Settings \u2192 Advanced Settings<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Enable <\/span><b>Allow manual tagging (UTM values) to override auto-tagging (GCLID values)<\/b><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Turn this on if your entire reporting structure runs on consistent UTM naming and you want GA4 to match. Leave it off if you rely on the Google Ads\/GA4 integration for bid strategy data and impression share.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Most advertisers leave auto-tagging on and let GCLID handle GA4, while UTMs handle everything else. Both signals are in the URL at the same time. They don&#8217;t interfere with each other.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Capturing_UTM_Parameters_in_Your_CRM_and_Lead_Forms\"><\/span><b>Capturing UTM Parameters in Your CRM and Lead Forms<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">UTM parameters in the URL are only useful if something reads them. GA4 does this automatically. Getting UTM data into individual CRM records is a different problem.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The standard method uses hidden form fields. When a visitor arrives from a Google Ads click, a tracking script reads the UTM parameters from the URL and pre-fills hidden fields in your lead form. When the form submits, those values go into the CRM alongside the contact data. For a step-by-step walkthrough of this setup, see our guide on<\/span> <a href=\"https:\/\/gaconnector.com\/blog\/how-to-capture-utm-parameters-in-your-contact-forms\/\"><span style=\"font-weight: 400;\">how to capture UTM parameters in your contact forms<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1600 size-full\" src=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1.png\" alt=\"\" width=\"1492\" height=\"777\" srcset=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1.png 1492w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1-300x156.png 300w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1-1024x533.png 1024w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1-768x400.png 768w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Capturing-UTM-Parameters-in-Your-CRM-1-788x410.png 788w\" sizes=\"(max-width: 1492px) 100vw, 1492px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Every lead record then carries the campaign, ad group, and keyword that brought that person in. Sales reps have context. You can filter your CRM by utm_campaign and see actual closed revenue per keyword \u2014 not cost-per-click, closed deals.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">According to<\/span> <a href=\"https:\/\/www.salesforce.com\/resources\/research-reports\/state-of-marketing\/\"><span style=\"font-weight: 400;\">Salesforce&#8217;s State of Marketing report<\/span><\/a><span style=\"font-weight: 400;\">, 76% of marketing leaders claim they use data for real-time decisions, but the gap between ad platform data and CRM revenue data is still one of the most common frustrations in B2B marketing. It&#8217;s a<\/span>\u00a0<a href=\"https:\/\/gaconnector.com\/blog\/full-funnel-attribution-guide\/\"><span style=\"font-weight: 400;\">full-funnel attribution<\/span><\/a><span style=\"font-weight: 400;\"> problem: most teams are making decisions from analytics data that stops at form submissions.<\/span><\/p>\n<p><a href=\"https:\/\/gaconnector.com\/\"><span style=\"font-weight: 400;\">GA Connector<\/span><\/a><span style=\"font-weight: 400;\"> automates the full chain. When a visitor arrives from Google Ads, it captures first-click source, last-click source, UTM parameters, full traffic path, and session behavior \u2014 then pushes it to the CRM lead record at form submission. It works with Salesforce, HubSpot, Pipedrive, Zoho, and 40+ others.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The reporting shift matters more than it sounds. Instead of &#8220;google\/cpc drove 450 leads this month,&#8221; you get &#8220;google\/cpc \/ brand-exact \/ running shoes drove 12 closed deals worth $84,000.&#8221; That&#8217;s what actually moves budget decisions.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Common_UTM_Mistakes_in_Google_Ads\"><\/span><b>Common UTM Mistakes in Google Ads<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1601 size-full\" src=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes.png\" alt=\"\" width=\"1481\" height=\"772\" srcset=\"https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes.png 1481w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes-300x156.png 300w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes-1024x534.png 1024w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes-768x400.png 768w, https:\/\/gaconnector.com\/blog\/wp-content\/uploads\/2019\/10\/Common-UTM-mistakes-788x411.png 788w\" sizes=\"(max-width: 1481px) 100vw, 1481px\" \/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Still_Using_Tracking_Templates\"><\/span><b>Still Using Tracking Templates<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Tracking templates were the recommended approach before parallel tracking existed. They add a redirect before the final URL loads \u2014 which directly breaks parallel tracking. URL suffixes don&#8217;t redirect. If your account still has tracking templates, replace them.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Inconsistent_Naming_Conventions\"><\/span><b>Inconsistent Naming Conventions<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">utm_medium=cpc<\/span><span style=\"font-weight: 400;\"> in one campaign and <\/span><span style=\"font-weight: 400;\">utm_medium=paid-search<\/span><span style=\"font-weight: 400;\"> in another means GA4 splits your paid traffic across two different channel rows. It looks like a drop in paid search performance when it&#8217;s actually just fragmented data. Pick names before you launch, write them down, and don&#8217;t let anyone freelance them.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Forgetting_Non-Search_Campaign_Types\"><\/span><b>Forgetting Non-Search Campaign Types<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">{keyword}<\/span><span style=\"font-weight: 400;\"> returns empty for Performance Max and Shopping \u2014 there are no keywords. For Shopping, <\/span><span style=\"font-weight: 400;\">{product_id}<\/span><span style=\"font-weight: 400;\"> gets you product-level tracking. For App campaigns, many ValueTrack parameters don&#8217;t exist. Test your suffix against every campaign type you run, not just Search.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Skipping_the_URL_Test\"><\/span><b>Skipping the URL Test<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A stray <\/span><span style=\"font-weight: 400;\">?<\/span><span style=\"font-weight: 400;\">, a duplicate <\/span><span style=\"font-weight: 400;\">&amp;<\/span><span style=\"font-weight: 400;\">, or campaign names with spaces that don&#8217;t encode correctly will silently break tracking across every ad in the campaign. The URL test takes 30 seconds. Run it every time.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Stacking_Suffixes_and_Manual_Ad_UTMs\"><\/span><b>Stacking Suffixes and Manual Ad UTMs<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Adding UTM parameters to an individual ad&#8217;s Final URL while a URL suffix exists at campaign or account level gives you duplicate parameters in the final URL \u2014 <\/span><span style=\"font-weight: 400;\">utm_campaign=brand&amp;utm_campaign=brand_exact<\/span><span style=\"font-weight: 400;\"> both present. Most tools use the first value, but some don&#8217;t. Don&#8217;t rely on that. Pick one approach.<\/span><\/p>\n<h2><span class=\"ez-toc-section\" id=\"FAQ\"><\/span><b>FAQ<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Do_I_need_UTM_parameters_if_Im_using_Google_Ads_auto-tagging\"><\/span><b>Do I need UTM parameters if I&#8217;m using Google Ads auto-tagging?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Not for GA4 \u2014 GCLID handles attribution there when auto-tagging is on. You need UTMs if you&#8217;re tracking anywhere other than GA4, if you want source data in your CRM, or if you need consistent naming across multiple paid channels in a cross-platform attribution setup.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_are_my_UTM_parameters_not_showing_up_in_GA4\"><\/span><b>Why are my UTM parameters not showing up in GA4?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Three places to check: (1) use the Google Ads URL test tool to confirm the suffix is actually appending; (2) make sure your landing page isn&#8217;t stripping query parameters before GA4 fires \u2014 some redirect setups do this; (3) check that <\/span><span style=\"font-weight: 400;\">utm_medium<\/span><span style=\"font-weight: 400;\"> is a value GA4 recognizes for channel grouping. An unrecognized medium goes to Unassigned and is easy to miss.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Can_I_use_UTM_parameters_with_Smart_Bidding\"><\/span><b>Can I use UTM parameters with Smart Bidding?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Yes. Smart Bidding uses GCLID and conversion signals for optimization. UTM parameters are query string values sitting in the URL \u2014 they don&#8217;t touch bidding logic at all.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Whats_the_difference_between_campaignid_and_campaign\"><\/span><b>What&#8217;s the difference between <\/b><b>{campaignid}<\/b><b> and <\/b><b>{campaign}<\/b><b>?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">{campaignid}<\/span><span style=\"font-weight: 400;\"> is the numeric ID. It never changes, even if you rename the campaign. <\/span><span style=\"font-weight: 400;\">{campaign}<\/span><span style=\"font-weight: 400;\"> is the name as it appears in Google Ads \u2014 readable in reports, but it breaks if someone renames the campaign mid-flight. For large accounts that restructure frequently, use IDs. For smaller accounts where names are stable, either works.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Does_using_UTM_parameters_affect_Quality_Score\"><\/span><b>Does using UTM parameters affect Quality Score?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">No. Quality Score looks at landing page experience \u2014 relevance, speed, mobile usability. Query string parameters don&#8217;t factor into any of that.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Can_I_capture_Google_Ads_UTM_parameters_in_Salesforce_or_HubSpot_directly\"><\/span><b>Can I capture Google Ads UTM parameters in Salesforce or HubSpot directly?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Not natively. UTMs live in the URL and don&#8217;t flow into CRMs on their own. You need hidden form fields that capture UTM values on submission, or a tool like GA Connector that reads UTMs from the session and maps them to CRM lead fields automatically. For the manual Salesforce setup, see our walkthrough on<\/span> <a href=\"https:\/\/gaconnector.com\/blog\/tracking-utm-parameters-in-salesforce-web-to-lead-forms\/\"><span style=\"font-weight: 400;\">tracking UTM parameters in Salesforce Web-to-Lead forms<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_happens_when_someone_clicks_an_ad_bounces_and_comes_back_three_days_later_from_organic\"><\/span><b>What happens when someone clicks an ad, bounces, and comes back three days later from organic?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The return visit starts a new session. GA4 reads the URL \u2014 no UTM parameters \u2014 and attributes it to google\/organic. The original google\/cpc session stays in GA4&#8217;s history attributed correctly. But GA4 doesn&#8217;t carry that first-click attribution forward to the second session. If you need first-click preserved at the lead level across multi-session journeys, you need a tool that captures and stores it at form submission.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>UTM parameters are tracking tags added to a website URL that tell analytics tools where a visitor came from. In Google Ads, you can set up UTM tracking automatically using URL suffixes \u2014 no manual tagging on each ad required. This guide covers the exact setup steps, how campaign parameters interact with Google Analytics 4,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[415],"tags":[],"yst_prominent_words":[46,512,262,504,30,261,20,45,511,513,393,503,502,264,496,525,392,390,501,500],"_links":{"self":[{"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/posts\/716"}],"collection":[{"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/comments?post=716"}],"version-history":[{"count":15,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/posts\/716\/revisions"}],"predecessor-version":[{"id":1604,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/posts\/716\/revisions\/1604"}],"wp:attachment":[{"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/media?parent=716"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/categories?post=716"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/tags?post=716"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/gaconnector.com\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=716"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}