UTM Parameters: The Right Way to Tag Your Campaigns
Inconsistent UTM tagging is the most common source of broken channel attribution in GA4. A complete reference for marketing teams who want clean, trustworthy data.
Cross-channel·8 min read
UTM parameters are five query-string values you append to any URL before sharing it. When a visitor arrives via that link, GA4 reads the parameters and uses 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 entirely on some links but not others — and GA4 quietly files traffic in the wrong buckets, sometimes for months before anyone notices.
The complete parameter reference
All five parameters are parsed from the URL the moment a session begins. GA4 stores them as session-scoped dimensions and uses them to drive 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
Session may be attributed to (direct) or the referring domain, depending on whether a referrer header is present.
utm_medium
Session medium
Required
cpc, email, social, display, affiliate, referral
The session almost certainly lands in the wrong channel group — GA4's rules depend heavily on medium to distinguish Paid Search from Organic, Email from Direct, etc.
utm_campaign
Session campaign
Required
spring-sale-2025, brand-search-q1, may-newsletter
Reported as (not set) in campaign reports — you lose visibility into 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. For paid search this is a significant reporting gap; for email and social it's irrelevant.
utm_content
Session content
Optional
Ad variant, CTA, or link position: hero-cta, sidebar-banner, text-link
You cannot distinguish between two ads or two links in the same email — useful only when running A/B tests or multiple placements per campaign.
Why utm_medium matters most
GA4's default channel grouping is a set of rules that run server-side on every session. Each rule checks a combination of source, medium, and — for Google traffic — the presence of a gclid auto-tag. The 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, if the email client strips the referrer header, in Direct. Either outcome inflates channels that didn't actually drive the conversion. Over a full quarter this distorts every assisted-conversion report you run.
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 uses lowercase, your Facebook traffic appears split across two lines — and neither line reflects the true total.
The fix is simple: always use lowercase, no spaces. Replace spaces with hyphens if you need word separation. Establish a shared naming doc (even a Google Sheet works) and enforce it with a URL builder or a UTM linter in your campaign workflow.
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 channel rule — 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
Re-using a campaign name across channels makes campaign-level 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 acquisition source mid-session, resetting channel 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 — ad spend attribution vanishes entirely.
Practical examples
Email campaign link
A monthly newsletter driving recipients to a product landing page:
This will appear in GA4 under the Email channel group, attributed to source mailchimp and campaign june-newsletter-2025. The utm_content value lets you distinguish the hero CTA from any other links in the same email.
Paid search campaign link
A Google Ads campaign where auto-tagging is disabled and manual UTMs are required:
The {keyword} placeholder is replaced by Google Ads with the actual search term at click time. This session routes to Paid Search in GA4's default channel grouping because source=google and medium=cpc match the rule. Note: if auto-tagging is enabled, skip the manual UTMs — the gclid parameter carries richer data and the two approaches 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 is a logical rule applied at session start. The most commonly relevant rules 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 this 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)
The word "matches" here means an exact match or a regex match, and it is case-sensitive. medium=Email does not match the Email channel rule. medium=CPC does not match the Paid Search rule. This is why lowercase convention isn't just a style preference — it's functionally required.
You can view and customise these rules in GA4 under Admin → Data display → Channel groups. Adding custom channels is useful when your source/medium conventions don't align with Google's defaults — for example, if you tag influencer links with medium=influencer.
Direct and dark traffic
Some traffic is genuinely untaggable. Mobile apps, email clients that strip query strings, WhatsApp or Slack links, and browser bookmarks all arrive without UTMs and without a referrer. This is often called dark traffic and it ends up in your Direct channel.
A growing Direct channel is not always a problem — it can reflect word-of-mouth or strong brand recall. But if you're seeing an unexplained spike in Direct alongside a paid campaign launch, the likely cause is that your UTM links are being stripped somewhere in the delivery chain (a URL shortener, an email client, or a redirect that drops query strings). Test the full destination URL end-to-end before launch using GA4's DebugView to confirm parameters are arriving intact.
For traffic you genuinely cannot tag, consider adding a custom channel definition in GA4 that catches known internal referrers (your own app domain, for instance) before they fall into Direct.