Across aggregated 2025-2026 Google Ads data (public sources + Google Ads API) on Google Ads and multi-channel accounts, 60 to 75% of GA4 attribution problems come from poorly tagged UTMs upstream — not miscalibrated Smart Bidding, not broken Default Channel Group, not poorly wired Consent Mode v2. Just a utm_medium=Email in uppercase in a newsletter, a utm_source=Facebook in one campaign and utm_source=facebook in another, a non-breaking space pasted into utm_campaign. Three trivial mistakes that fragment data in GA4 and make all acquisition reporting unusable without BigQuery cleanup. The builder above generates UTM-tagged URLs strictly GA4-compatible with automatic slugification. What follows explains why UTMs are structurally important in 2026, how to name them correctly, and how to never break them again.
For the complete conversion tracking upstream of UTMs, see our Google Ads conversion tracking guide. For the migration to server-side tracking that changes how UTMs are preserved, see 2026 server-side GTM tutorial. To validate an existing UTM URL, use our UTM Checker.
UTM: what it is and why it is essential
UTM stands for Urchin Tracking Module — a technical legacy from Urchin Software, an analytics company acquired by Google in 2005 that gave birth to Google Analytics. UTM parameters are key/value pairs added to a destination URL to pass the analytics tool the traffic source, channel, campaign, and optionally creative and keyword. Twenty years later, they remain the de facto standard for marketing tracking — GA4, Plausible, Matomo, Mixpanel, Amplitude, PostHog all parse UTMs the same way because the original Urchin documentation became the implicit specification all vendors honor.
Here is a concrete example of a UTM-tagged URL, to drop in an email or LinkedIn post:
https://www.steerads.com/product?utm_source=newsletter&utm_medium=email&utm_campaign=lancement_avril_2026&utm_content=cta_header_v2
What GA4 sees parsing this URL: Source = newsletter, Medium = email, Campaign = lancement_avril_2026, Content = cta_header_v2. These four dimensions then become filterable columns in the Acquisition report, available dimensions in Looker Studio, exportable fields to BigQuery. Without UTMs, GA4 sees "direct session" because the email has no referrer URL — the traffic lands as Direct, merges with type-in traffic, and becomes impossible to attribute to the newsletter campaign that generated it.
Official Google documentation on standard UTM parameters and their GA4 use: support.google.com URL builders. Two conditions for a UTM to be actually used by GA4: (1) utm_source and utm_medium present (others are optional), (2) the source/medium combination matches a known Default Channel Group rule — otherwise GA4 buckets the traffic as (Other) or Unassigned, making analysis as useless as no UTM. That is why the naming convention matters as much as the generation: a technically valid UTM with a non-standard medium is as useless as an untagged URL.
The 5 UTM parameters: source / medium / campaign / content / term
The five parameters each have a precise, non-interchangeable function. Confusing source and medium is the most frequent mistake on audited accounts — it breaks GA4 Default Channel Group classification and drops traffic into Unassigned.
utm_source identifies the technical click origin — the platform, site, or partner that generated the traffic. Valid examples: google, facebook, linkedin, newsletter, partner_lemonde. It is the most granular dimension of the standard attribution model. Convention: lowercase, underscores, never hyphens to stay consistent with values auto-generated by platforms (Meta Ads reports facebook in lowercase by default when auto-tagging is on).
utm_medium identifies the channel — the global marketing category that groups several sources. Valid GA4 standard examples: cpc (Cost Per Click — paid Search), paid_social (paid Meta, LinkedIn, TikTok), email (newsletter, transactional), organic_social (LinkedIn post, Instagram Reels), referral (partnership, press), affiliate (affiliate program). Crucial: use a value from the standard GA4 list — otherwise Default Channel Group fails to recognize and drops to (Other). The full list of mediums recognized by GA4 is in the Default Channel Group documentation.
utm_campaign identifies the marketing campaign — the commercial name of the push, sale, launch, promo. Examples: soldes_ete_2026, lancement_v3_avril, promo_blackfriday. Convention: pattern product_offer_month_year or theme_channel_period. This dimension is used to group performance by campaign in GA4 and is the pivot of quarterly marketing reporting.
utm_content identifies the creative or variation — useful for A/B tests, to distinguish multiple ads in the same campaign, or to track a link's position in an email (header vs. footer). Examples: banner_300x250_v2, headline_a, cta_footer, link_position_3. Optional but recommended as soon as you have several variations in the same campaign.
utm_term identifies the keyword — historically used for paid Search, today rarely necessary for Google Ads (auto-tagging via gclid covers the keyword) but still useful for Microsoft Ads, Bing, Yandex, or any other paid Search without auto-tagging. Examples: exact_chaussures_running, broad_avocat_paris. Convention: match-type_keyword.
UTM naming conventions: 5 rules to never get it wrong again
Five non-negotiable rules that separate usable UTMs from UTMs that fragment the data. Print and post above every marketing team screen.
Rule 1 — Always lowercase. GA4 treats Facebook, facebook, and FACEBOOK as three distinct sources. This is the #1 cause of fragmentation observed. Standardize on absolute lowercase: utm_source=facebook and never utm_source=Facebook. All auto-tagging platforms (Meta Ads, LinkedIn Ads, Microsoft Ads) emit lowercase by default — adopting the same convention manually avoids conflicts.
Rule 2 — Underscores as separator, never spaces. A space in a UTM is URL-encoded to %20 or +, creating duplicates (campaign_summer vs. campaign+summer vs. campaign%20summer in reports). Always use underscore: lancement_avril_2026, never lancement avril 2026. Hyphens accepted but less consistent with platforms' auto-tagging convention.
Rule 3 — No special characters or accents. The characters &, ?, #, = break URL parsing. Accents (é, è, à) are URL-encoded and fragment the data. Use strict ASCII: ete instead of été, noel instead of noël. This constraint applies to all parameters, including utm_campaign.
Rule 4 — Closed list of standard mediums. Never invent a utm_medium outside the list recognized by GA4 Default Channel Group: cpc, paid_social, email, organic_social, referral, affiliate, display, video. Inventing influence or partnership breaks Default Channel Group and drops traffic to (Other). If you need a non-standard category, encode it in utm_source or utm_campaign, never in medium.
Rule 5 — Consistent campaign pattern over time. Lock a theme_channel_period or product_offer_month_year pattern and respect it across all campaigns for at least 12 months. Changing convention mid-year fragments history and makes year-over-year comparisons impossible. Document the pattern in a shared sheet and enforce it in editorial review before every prod push.
If Google Ads auto-tagging is on (default since 2018), the gclid automatically passes source=google, medium=cpc, campaign={name} to GA4. If on top you manually add utm_source=google&utm_medium=cpc&utm_campaign=ma_campagne_2026, GA4 takes the manual UTM by priority — but this creates a conflict if your manual campaign name differs from the Google Ads name. Result: double counting, two rows in the Acquisition report. Practical rule: if Google Ads auto-tagging is on, do not add UTMs on top, except for an explicit need to track a third-party tool (CRM, Plausible, Mixpanel) that does not read the gclid.
The builder generates a UTM-tagged URL. The audit identifies broken UTMs across all your traffic.
Connect GA4 via OAuth, the audit identifies in 3 minutes the fragmented sources/mediums/campaigns (uppercase, spaces, non-standard mediums) and proposes the 301 redirects or BigQuery transformations to apply to reconsolidate 12 months of history.
Run a free UTM audit →UTM vs Google Ads auto-tagging (gclid): when to use which
This is the most misunderstood question on audited accounts. The gclid (Google Click Identifier) is the Google Ads auto-tagging: a parameter Google automatically adds to every destination URL when auto-tagging is on at account level (default since 2018). The gclid passes to GA4 source=google, medium=cpc, campaign={campaign_name}, term={keyword}, content={ad_id}. You theoretically do not need UTMs on top for Google Ads if auto-tagging is on and your only analytics tool is GA4.
However, many advertisers still add UTMs on Google Ads for one specific case: passing data to other tools that do not read the gclid. Plausible, Matomo, Mixpanel, Amplitude, PostHog, and most CRMs (HubSpot, Salesforce) do not recognize the gclid — they only read standard UTMs. So if your analytics stack includes a non-Google tool, adding utm_source=google&utm_medium=cpc&utm_campaign={campaign_name} (with Google Ads template parameters) becomes useful.
The practical rule: Google Ads auto-tagging always on (never disable — you lose keyword-level reporting and Smart Bidding signals), UTMs added only if you have a third-party tool to feed. And if you put both, watch for the naming conflict: if auto-tagging emits campaign=Promo Ete and your manual UTM emits utm_campaign=promo_ete_2026, GA4 takes the UTM by priority but Google Ads Reports keeps using the auto-tagging name — you then have two different truths for the same campaign. Solution: use Google Ads template parameters to sync, e.g. utm_campaign={campaignname} which automatically injects the Google Ads name into the UTM.
Official Google documentation on auto-tagging and UTM coexistence: support.google.com URL options.
UTM in practice: Google Ads / Meta Ads / Email / Influencer
Four concrete use cases with the naming conventions to apply for each channel. Adapt to business context but respect the standard patterns to avoid breaking Default Channel Group.
Google Ads (auto-tagging on). No manual UTM needed if stack is 100% Google (Google Ads + GA4 + Looker Studio). If a CRM or third-party tool, add UTM via account-level Tracking Templates: ?utm_source=google&utm_medium=cpc&utm_campaign={campaignname}&utm_content={adgroupname}&utm_term={keyword}. The {templates} are dynamically replaced by Google Ads at click time. See Google Ads audit checklist for end-to-end verification.
Meta Ads. Meta Ads auto-tagging exists but is less rich than Google's — it passes fbclid which is not parsed by GA4 by default. Manual UTMs are essential. Convention: utm_source=facebook&utm_medium=paid_social&utm_campaign={campaign_name}&utm_content={ad_name}. Configure at Ads Manager > Tracking > URL Parameters level to avoid retagging each ad. For full Meta + Google server-side tracking, see our 2026 server-side GTM guide.
Email (newsletter, transactional). Systematic UTMs on every link in every email. Convention: utm_source=newsletter&utm_medium=email&utm_campaign=newsletter_avril_2026&utm_content=cta_header or cta_footer or link_paragraphe_2. The content granularity lets you measure which CTA performs — does the header CTA convert better than footer, the link in paragraph 2 better than paragraph 5. Without utm_content, you know the newsletter converted but not why.
Influencer and partnerships. The most poorly tagged case on audited accounts because the standard medium is missing. Solution: use utm_medium=referral (for press partnership, podcast, blog) or utm_medium=affiliate (if revenue share via Awin/Kwanko platforms). Never invent utm_medium=influence which breaks Default Channel Group. Encode partner identity in utm_source=podcast_acquisition or utm_source=influencer_marie_blog. Never use commercial names with spaces or accents.
Common mistakes (uppercase, spaces, non-standard medium)
Six recurring mistakes on audited accounts, in observed statistical order of frequency.
Mistake 1 — Mixed uppercase. utm_source=Facebook, utm_source=facebook, utm_source=FB: three different rows in GA4, no aggregation. Affects 70 to 80% of audited accounts. Fix: standardize on absolute lowercase, normalize history via BigQuery LOWER() or via 301 redirects on future URLs.
Mistake 2 — Spaces in values. utm_campaign=Soldes Ete 2026 URL-encodes to Soldes%20Ete%202026 — coexists with utm_campaign=Soldes+Ete+2026 (alternate encoding) and utm_campaign=soldes_ete_2026 (clean). Three rows for the same campaign. Fix: enforce systematic underscore at generation time, never accept a value with a space.
Mistake 3 — Non-standard medium. utm_medium=influence, utm_medium=podcast, utm_medium=newsletter (newsletter is source, not medium). Breaks Default Channel Group, drops to (Other). Fix: stick to the closed list cpc / paid_social / email / organic_social / referral / affiliate / display / video.
Mistake 4 — Source and medium swapped. utm_source=email&utm_medium=newsletter: it is the reverse. Email is medium (channel category), newsletter is source (technical origin). Fix: utm_source=newsletter, utm_medium=email.
Mistake 5 — Auto-tagging disabled on Google Ads. Case observed on 8 to 15% of audited accounts — someone disabled auto-tagging "to put UTMs cleanly" and did not configure Tracking Templates as replacement. Result: Google Ads no longer transmits anything to GA4, the gclid no longer exists, keyword-level reporting is broken. Fix: re-enable auto-tagging immediately, add UTMs via Tracking Templates if a third-party tool needs it.
Mistake 6 — Double UTMs due to a redirect. A UTM-tagged URL redirected via Bitly, Cuelinks, or a CMS shortener that adds its own parameters: the final URL has two ? or the UTMs are stripped. Fix: test each URL after publishing via curl or a private-mode browser, verify the UTMs land intact on the landing page. See also our Google Ads reporting 10 KPI for the reporting audit mechanic and our 2026 Zapier Make Google Ads automation to automate UTM generation via webhook.
UTMs are trivial to understand and brutally hard to keep consistent over time. The builder above generates URLs strictly GA4-compatible with automatic slugification and correct URL-encoding. The work begins after: lock down a naming reference in a shared sheet, archive every UTM going to prod, audit consistency quarterly via UTM Checker, and correct historical inconsistencies via BigQuery or 301 redirects. That tracking discipline separates accounts where GA4 truly reflects acquisition reality from those where the Acquisition report is a leaky fiction — regardless of the level of Smart Bidding sophistication or server-side put in place elsewhere in the stack.
FAQ
What are the 5 UTM parameters exactly?
utm_source (technical click origin — google, facebook, newsletter), utm_medium (channel — cpc, paid_social, email, organic_social), utm_campaign (campaign name — soldes_ete_2026, launch_v3), utm_content (creative or variation — banner_300x250_v2, headline_a), utm_term (keyword for paid Search — broad_chaussures_running). The first 3 (source, medium, campaign) are strictly required for GA4 to classify correctly. The last 2 (content, term) serve A/B splits and keyword-level reporting. Without source or medium, GA4 buckets traffic into (not set) or Direct, destroying any acquisition channel analysis.
Do you absolutely need lowercase in UTMs?
Yes, this is the non-negotiable rule. GA4 treats Facebook, facebook, and FACEBOOK as three different sources — fragmenting your traffic into as many rows in the Acquisition report. On benchmarked accounts, this is the #1 observed mistake (present on 70 to 80% of benchmarked accounts): a utm_source=Facebook in a newsletter, utm_source=facebook in a Meta Ads campaign, utm_source=FB in a press partnership. Three different rows, no aggregation possible without BigQuery transformation. Standardizing on lowercase with underscores as separator (never spaces, never hyphens) is the universal convention that makes UTMs actually usable.
UTM vs. Google Ads auto-tagging (gclid): which to choose?
The gclid (Google Click Identifier) is the Google Ads auto-tagging — a parameter generated by Google that automatically passes source/medium/campaign to GA4 when auto-tagging is enabled on the account. It is the option Google recommends and has been the default since 2018. You theoretically do not need UTMs in addition to gclid for Google Ads. However, many advertisers still add UTMs on Google Ads for one specific case: passing data to other tools (CRM, Plausible, Matomo, Mixpanel) that do not read the gclid. Practical rule: auto-tagging always on, UTMs added only if you need a third-party tool. But if you put both, beware not to create a conflict with utm_source=google differing from the gclid auto-generated value.
Why does GA4 bucket my campaigns as Direct even though I have UTMs?
Three typical causes. First: the redirect of your URL before the landing page eats the UTM parameters (CMS forcing HTTPS, affiliate tracker like Cuelinks, poorly configured Bitly shortener). Second: GA4 Default Channel Group does not recognize the source/medium combination you chose — for example utm_medium=influence is not in the standard list, GA4 then buckets it as (Other) or Direct. Third: Consent Mode v2 refuses analytics cookie storage, so GA4 cannot tie the session to the UTM parameter passed and falls back to Direct by default. The GA4 URL tester we offer simulates this classification in 5 seconds — you immediately see if your tag is valid or if Default Channel Group will reassign it.
Is utm_term mandatory for Search campaigns?
No, not mandatory but very useful for keyword-level reporting in GA4 and BigQuery. For Google Ads with auto-tagging on, the keyword is automatically reported via the gclid — no need for utm_term. For Microsoft Ads, Bing, Yandex or any paid Search system without Google-equivalent auto-tagging, utm_term={keyword} (where the bracketed key is dynamically replaced by the platform) remains the only way to track the keyword that converted. Practical convention: utm_term=match-type_keyword, e.g. utm_term=exact_chaussures_running or utm_term=broad_avocat_paris. This syntax then lets you filter reports by match type without touching the keyword column.
What order should UTM parameters appear in the URL?
The order has no technical importance — GA4, Plausible, Matomo, Mixpanel parse parameters independently of their position. But the standard readability convention for manual audits is: source first, medium second, campaign third, then content and term. Typical example: ?utm_source=google&utm_medium=cpc&utm_campaign=soldes_ete_2026&utm_content=banner_v2&utm_term=broad_chaussures. Keeping this order across all generated UTMs makes quick visual audit and missing-field detection easier. The builder above respects this order by default.