UTM Parameters: The Right Way to Tag Your Campaigns
Inconsistent UTM tagging is the most common source of broken channel attribution in GA4. This reference covers each parameter, how GA4 reads it, and the tagging mistakes that send traffic to the wrong channel.
Cross-channel·8 min read
UTM parameters are five query-string values you append to a URL before sharing it. When a visitor arrives via that link, GA4 reads them to classify the session into a channel, attribute conversions and populate campaign reports. Get them right and your channel grouping is accurate. Get them wrong, or skip them on some links but not others, and GA4 files traffic in the wrong buckets without telling you, sometimes for months.
The complete parameter reference
GA4 parses all five from the URL when a session begins, stores them as session-scoped dimensions, and uses them for default channel grouping, traffic source reports and the Acquisition overview.
Parameter
GA4 dimension
Required?
Recommended values
If missing
utm_source
Session source
Required
google, facebook, mailchimp, linkedin, newsletter
Attributed to (direct) or the referring domain, depending on the referrer header.
utm_medium
Session medium
Required
cpc, email, social, display, affiliate, referral
The session almost certainly lands in the wrong channel group: GA4's rules rely on medium to tell Paid Search from Organic, Email from Direct.
utm_campaign
Session campaign
Required
spring-sale-2025, brand-search-q1, may-newsletter
Reported as (not set): you lose sight of which campaign drove the session.
utm_term
Session keyword
Optional
The paid keyword that triggered the ad, e.g. project+management+software
Keyword column is blank. A real gap for paid search; irrelevant for email and social.
utm_content
Session content
Optional
Ad variant, CTA, or link position: hero-cta, sidebar-banner, text-link
You cannot tell two ads or two links in the same email apart. Useful for A/B tests or multiple placements.
Why utm_medium matters most
GA4's default channel grouping is a set of rules run server-side on every session. Each rule checks source, medium and, for Google traffic, the presence of a gclid auto-tag. Medium is the primary filter: a session tagged medium=cpc routes to Paid Search or Paid Social depending on the source; medium=email routes to Email; medium=social routes to Organic Social.
If you forget utm_medium on an email link, GA4 sees an unknown medium and the session typically lands in Unassigned, or in Direct if the email client strips the referrer header. Either way, channels that didn't drive the conversion get inflated, and over a quarter every assisted-conversion report is distorted.
The case-sensitivity gotcha
UTM values are case-sensitive in GA4. utm_source=Facebook and utm_source=facebook create two separate rows in every report. If half your team uses title case and half lowercase, Facebook traffic splits across two lines and neither shows the true total.
The fix: always use lowercase, no spaces, with hyphens for word separation. Keep a shared naming doc (even a Google Sheet works) and enforce it with a URL builder or UTM linter.
Common mistakes
Don't
Do
Why it matters
utm_source=Facebook
utm_source=facebook
Mixed case splits the source into two rows in every report.
utm_campaign=Spring Sale 2025
utm_campaign=spring-sale-2025
Spaces get encoded as + or %20 inconsistently across tools. Use hyphens or underscores.
Email link has utm_source and utm_campaign but no utm_medium
Always include utm_medium=email
Without a medium, GA4 cannot match the Email rule, so the session lands in Unassigned or Direct.
utm_campaign=may-newsletter used on both email send and paid retargeting ads
Use distinct names: may-newsletter-email and may-newsletter-retargeting
Reusing a campaign name across channels makes campaign reporting meaningless: you can't separate email conversions from ad conversions.
Tagging every internal link with UTMs
Only tag external links pointing to your own domain
UTMs on internal links overwrite the original source mid-session, resetting attribution to the internal page.
Auto-tagging disabled on Google Ads with no manual UTMs
Leave auto-tagging on, or add UTMs manually if you must
Without a gclid or manual UTMs, Google Ads clicks arrive as organic or direct and ad attribution vanishes.
Practical examples
Email campaign link
A monthly newsletter driving recipients to a product landing page:
This appears in GA4 under the Email channel group, with source mailchimp and campaign june-newsletter-2025. The utm_content value separates the hero CTA from other links in the same email.
Paid search campaign link
A Google Ads campaign where auto-tagging is disabled and manual UTMs are required:
Google Ads replaces the {keyword} placeholder with the actual search term at click time. This session routes to Paid Search because source=google and medium=cpc match the rule. If auto-tagging is enabled, skip the manual UTMs: the gclid parameter carries richer data and the two can conflict. See Ads auto-tagging vs UTMs for when to use each.
UTMs and GA4's default channel grouping
GA4 ships with around a dozen channel definitions, each a rule applied at session start. The most relevant are:
Paid Search: source matches a search engine list AND medium matches cpc|ppc|paidsearch
Organic Search: source matches a search engine list AND medium is not one of the paid values (no UTM needed; GA4 infers it from the referrer)
Email: medium matches email|e-mail|e_mail|newsletter
Paid Social: source matches a social network list AND medium matches cpc|ppc|paid
Organic Social: source matches a social network list AND medium matches social|social-network|social-media|sm|social network|social media
Referral: medium is referral|app|link
Direct: source is (direct) AND medium is (none) or (not set)
"Matches" means an exact or regex match, and it is case-sensitive. medium=Email does not match the Email rule and medium=CPC does not match Paid Search. Lowercase is functionally required, not just a style preference.
You can view and customise these rules in GA4 under Admin → Data display → Channel groups. Add custom channels when your source/medium conventions differ from Google's defaults, for example if you tag influencer links with medium=influencer.
Direct and dark traffic
Some traffic is untaggable. Mobile apps, email clients that strip query strings, WhatsApp or Slack links and browser bookmarks all arrive without UTMs or a referrer. This dark traffic ends up in Direct.
A growing Direct channel is not always a problem: it can reflect word-of-mouth or brand recall. But an unexplained Direct spike alongside a paid campaign launch usually means UTM links are being stripped in the delivery chain (a URL shortener, an email client, or a redirect that drops query strings). Test the full URL end-to-end before launch, using GA4's DebugView to confirm parameters arrive intact.
For traffic you cannot tag, add a custom GA4 channel that catches known internal referrers (your own app domain, for instance) before they fall into Direct.