Every URL you share in a campaign is a question waiting for an answer. Where did this user come from? Which ad did they click? What email subject line drove that purchase? UTM parameters are the mechanism that turns those questions into data inside Google Analytics 4.
The five UTM parameters—utm_source, utm_medium, utm_campaign, utm_term, and utm_content—attach structured metadata to any URL. When someone clicks that link, GA4 reads the parameters and files the session under the right source, channel, and campaign. Without them, a significant chunk of referral and paid traffic collapses into Direct or Other, and you lose the attribution chain entirely.
What UTM Parameters Are (and What They Are Not)
UTM stands for Urchin Tracking Module, named after Urchin Software, which Google acquired in 2005. The naming is a historical footnote; the mechanism is entirely current. GA4 reads UTM parameters natively—they populate the Traffic acquisition and Campaign reports without any configuration beyond adding them to your URLs.
What UTM parameters are not: conversion pixels, server-side event tags, or tracking cookies. They are plain text appended to a URL after a question mark. No JavaScript required for the data to pass; the browser transmits the full URL string to GA4 on page load, and GA4 extracts the values. This makes them resilient in environments where script-based tracking faces limitations.
The Five Parameters: Definitions and Expected Values
| Parameter | Required? | What it captures | Example values |
|---|---|---|---|
utm_source |
Required | Origin of traffic—which site, newsletter, or platform sent the visitor | google, newsletter, facebook, linkedin |
utm_medium |
Required | Marketing channel or mechanism—how the link reached the user | cpc, email, organic, social, referral |
utm_campaign |
Required | Campaign name—which initiative, promotion, or push this link belongs to | spring-sale, product-launch-q2, brand-awareness |
utm_term |
Optional | Paid search keyword that triggered the ad (manual tagging for non-Google platforms) | utm+builder+free, campaign+tracking |
utm_content |
Optional | Ad variant or link identifier for A/B test differentiation | hero-cta, sidebar-link, text-ad-v2 |
The three required parameters—utm_source, utm_medium, utm_campaign—are sufficient for most campaign tracking scenarios. Add utm_term when you need keyword-level attribution outside of Google’s auto-tagging. Use utm_content when you’re running multiple ad creatives or email CTA variants and need to compare performance at the asset level.
How utm_source, utm_medium, and utm_campaign Map to GA4
GA4’s channel grouping logic reads utm_medium first. The value you pass determines which Default Channel Group the session lands in—Paid Search requires medium=cpc, Email requires medium=email, and so on. If your utm_medium values don’t conform to GA4’s expected strings, sessions end up in Unassigned and disappear from channel reports.
The mapping between medium values and GA4 channels that marketers regularly get wrong:
- Paid social: medium=paid-social (not “social” alone—that routes to Organic Social)
- Display advertising: medium=display or medium=banner
- Email marketing: medium=email (not “e-mail” or “newsletter”—channel matching rules are case-insensitive, but stored dimension values are not: GA4 stores the literal string you pass, so “Email” and “email” appear as two separate rows in reports; lowercase is best practice to prevent duplicated rows)
- Affiliate traffic: medium=affiliate
utm_source and utm_campaign feed the source/medium dimension pair and the Campaigns report respectively. Neither controls channel grouping by itself.
Building Tagged URLs Without Manual Assembly
Assembling UTM parameters by hand—copying a URL, typing the question mark, adding each parameter—produces typos and inconsistencies within days. utm_Medium and utm_medium are two different values to GA4. A campaign tagged “spring_sale” on one channel and “Spring-Sale” on another splits your data across two rows.
The practical approach is a URL builder that encodes each field, enforces lowercase, and outputs a complete tagged URL for copying. The UTM builder at Elsop handles this: paste your destination URL, fill in the five fields, and copy the finished link. The tool also previews the full URL before you commit it to a campaign, which catches parameter errors before they reach GA4.
Where utm_term Fits in Non-Google Paid Search
Google Ads auto-tagging adds the gclid parameter to every click, which GA4 uses for keyword and ad-level attribution without UTM parameters. You can run UTM parameters alongside gclid, but utm_term is redundant for Google Ads unless you’ve disabled auto-tagging.
For Microsoft Ads, Meta Ads keyword campaigns, and LinkedIn Sponsored Content, utm_term is the primary mechanism for passing keyword or targeting data into GA4. Microsoft Ads supports dynamic insertion via {Keyword} syntax in the tracking template—you’d set utm_term={Keyword} in the campaign’s tracking URL template.
utm_content: A/B Testing at the URL Level
Email marketers sending the same link in two positions—hero image versus footer text—use utm_content to distinguish performance. Setting utm_content=hero-image on one variant and utm_content=footer-text on another lets GA4 show which placement drove more conversions, without needing a separate campaign tag for each.
For display advertising, utm_content typically carries the ad creative ID or description. This feeds the Ads content dimension in GA4, where you can filter campaign performance by creative variant.
Parameter Values That Break Analytics Reports
A few technical failure modes come up repeatedly in analytics audits:
- Spaces in parameter values — browsers encode spaces as %20 or +, which GA4 reads as the literal character rather than a word separator. Use hyphens instead. “spring sale” becomes “spring%20sale” in GA4, not “spring sale.”
- Inconsistent capitalization — GA4 treats utm_source=Google and utm_source=google as different values. Enforce lowercase in your URL builder workflow.
- Parameters on internal pages — if someone on your team links to an internal page with UTM parameters (for example, a homepage banner linking to a product page with utm_source=homepage), GA4 resets the session source to that internal tag. UTM parameters should only appear on external-to-site links.
- Double question marks — some landing page URLs already include query parameters (e.g., /page?color=blue). UTM parameters must be appended with & not ?, producing /page?color=blue&utm_source=email.
GA4 and utm_campaign: How Campaign Reports Work
In GA4, the Campaigns report under Acquisition shows performance grouped by utm_campaign value. Sessions without a utm_campaign tag appear as (not set). Paid campaigns that use auto-tagging from Google Ads populate campaign data via the gclid import rather than UTM parameters.
The Session campaign dimension in GA4 looks at the campaign at the session level—the value from the first tagged URL in the session. The User campaign dimension captures the first-touch campaign across a user’s entire history on your property. Both dimensions are available in Explorations for cross-campaign comparison.
For cross-channel campaign measurement—comparing Meta Ads, email, and display within a single campaign—consistent utm_campaign naming across all channels is essential. If the Facebook ads team uses utm_campaign=spring-launch and the email team uses utm_campaign=SpringLaunch, GA4 shows two separate campaigns instead of one.
Testing Tagged URLs Before Deployment
Before deploying tagged URLs in a live campaign, verify that GA4 receives the data correctly:
- Open your tagged URL in a browser
- In GA4, navigate to Realtime
- Look for your session under Event count by Source/Medium
- Verify the source, medium, and campaign values match your UTM parameters exactly
This takes three minutes and catches parameter errors before they corrupt a campaign’s attribution data. Once a campaign runs for a week with a misnamed utm_medium, GA4 accumulates a row of traffic under the wrong channel that can’t be retroactively corrected.
For teams that run multiple campaigns across several channels, the campaign URL generator at Elsop speeds this process—particularly useful for Facebook and LinkedIn campaigns where each ad variant needs its own tagged URL. For the parallel story on how GA4 processes this attribution data after the click, see how GA4’s AI-driven anomaly detection monitors traffic patterns against learned baselines, including the sudden channel shifts that misconfigured UTM parameters produce.