UTM Parameters Guide 2026: Complete Tracking Reference
Complete 2026 UTM parameter guide covering utm_source, medium, campaign, content, term, naming conventions, and GA4 attribution best practices.
Standard UTM parameters
Of marketers track UTMs
Default GA4 fallback
UTM governance sheet
Key Takeaways
01. UTM parameter basics
UTM parameters are lightweight query strings appended to a URL that let analytics platforms attribute the resulting session to a specific marketing activity. They have been the de facto standard for campaign tracking since Urchin Software Corp was acquired by Google in 2005 — hence the acronym Urchin Tracking Module.
A fully-tagged URL looks like this:
https://www.example.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=black_friday_2026&utm_content=top_banner&utm_term=free_shippingThere are five standard parameters plus one modern addition:
Examples: newsletter, facebook, partner_xyz
Examples: email, cpc, social, affiliate
Examples: black_friday_2026, q2_product_launch
Examples: hero_banner, sidebar_cta, video_v2
Examples: running_shoes, lookalike_1pct
Used to reconcile GA4 sessions with cost data imported from non-Google ad platforms. Ties a campaign to its external platform campaign ID.
For deeper context on the analytics platform reading these values, our GA4 adoption statistics show how the switch from Universal Analytics changed what UTM data is retained and for how long.
02. Naming conventions & governance
Every UTM failure mode traces back to the same root cause: lack of a documented naming convention enforced at the point of URL creation. A taxonomy does not need to be elaborate — it needs to be written down, shared, and followed.
Core rules
Always lowercase. GA4 is case-sensitive. Facebook and facebook are different sources.
No spaces. Use underscores for word separation. Spaces become %20 and create fragmented campaigns.
Pick underscores OR hyphens — not both. We recommend underscores consistently across all five parameters.
Constrain utm_medium to a fixed vocabulary. GA4's default channel grouping only recognises specific values (email, cpc, social, display, affiliate, referral).
Version campaign names with dates or quarters. Reusing spring_sale across three years makes year-over-year reporting impossible.
Good vs bad examples
| Parameter | Bad | Good |
|---|---|---|
| utm_source | Facebook_Ads | |
| utm_medium | Paid Social | paid_social |
| utm_campaign | Spring Sale! | spring_sale_2026 |
| utm_content | button-1 (Blue) | hero_cta_blue |
Governance checklist
- Maintain a UTM taxonomy document in a shared wiki or sheet.
- List all approved values for utm_medium and utm_source in that document.
- Require all campaign links to be generated through one approved builder.
- Audit the GA4 Traffic acquisition report monthly for unexpected source/medium pairs.
- Assign a single owner (analytics lead or marketing ops) for taxonomy changes.
03. Channel mapping in GA4
GA4 groups sessions into default channels using a rules engine that reads utm_source, utm_medium, and (for paid traffic) utm_campaign. Understanding these rules is essential — if your UTMs do not match the expected patterns, traffic falls into the catch-all (Other) channel and disappears from channel-level dashboards.
Default channel grouping rules
| Channel | Required values |
|---|---|
| Organic Search | medium=organic |
| Paid Search | medium=cpc | ppc | paidsearch AND source matches search_engines list |
| Organic Social | medium=social | social-network | social-media | sm | social network | social media |
| Paid Social | source matches social list AND medium matches paid regex (^(.*cp.*|ppc|retargeting|paid.*)$) |
| medium=email | e-mail | e_mail | e mail | |
| Affiliates | medium=affiliate | affiliates |
| Referral | medium=referral AND source=any domain |
| Display | medium=display | banner | expandable | interstitial | cpm |
For attribution benchmarks by channel, see our 2026 conversion rate benchmarks by industry and channel.
04. UTM builders & tools
The easiest way to enforce naming conventions is to stop asking humans to type UTM values. A shared builder tool normalises input, validates against your taxonomy, and logs every generated link for audit and reuse.
Google's first-party form at ga-dev-tools.google/campaign-url-builder. Accepts any input — great for individuals, inadequate for teams because it does not enforce your taxonomy.
Best for: solo marketers, one-off links.
Dropdown-driven builders with approved value lists, link history, and team permissions. UTM.io (now Terminus) is the longest-running option; alternatives include Campaign Trackly and Dashlane's link management suite.
Best for: teams of 5+ with an established taxonomy.
A shared sheet with data validation on each parameter column and a CONCATENATE formula for the final URL. Data validation enforces the vocabulary; revision history provides audit trail.
Best for: small teams, tight budget, flexibility over polish.
Klaviyo, Mailchimp, HubSpot, and most ESPs let you set default UTMs at the account or campaign level. Meta Ads Manager has a URL parameter field. Use these for consistent platform-level tagging.
Best for: channel-specific baseline tagging.
Minimum viable UTM builder (Google Sheets)
Columns: landing_url, utm_source (dropdown), utm_medium (dropdown), utm_campaign (text), utm_content (text), utm_term (text), generated_url (formula), owner, created_at. The generated_url formula:
=A2 & "?utm_source=" & LOWER(B2) & "&utm_medium=" & LOWER(C2) & "&utm_campaign=" & LOWER(D2) & IF(E2="", "", "&utm_content=" & LOWER(E2)) & IF(F2="", "", "&utm_term=" & LOWER(F2))05. Email and paid social tagging
Email and paid social are the two channels where UTM hygiene has the highest revenue impact. Email because no automatic attribution exists at all; paid social because auto-tagging and manual UTMs frequently conflict.
Email (ESP) tagging
Most ESPs support automatic UTM tagging at the send level. For Klaviyo, Mailchimp, and HubSpot, enable this once and set a template:
utm_source=newsletter&utm_medium=email&utm_campaign={{campaign.name}}The campaign name variable pulls the send's internal name, producing a clean one-to-one map between send and campaign attribution. For transactional emails (order confirmations, receipts), tag withutm_medium=email_transactional so they do not pollute your promotional email metrics. See our 2026 email marketing statistics for attribution benchmarks.
Google Ads: auto-tagging only
Meta (Facebook / Instagram) Ads
Meta does not auto-tag. Manual UTMs are required. Use the URL parameters field in Ads Manager at the ad-set or ad level with Meta's dynamic URL macros:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_id={{campaign.id}}The dynamic macros resolve to the actual campaign and ad names at click time, giving you creative- level granularity without manual work. Use utm_id with Meta's campaign.id macro to enable cost data imports into GA4.
LinkedIn, TikTok, Reddit
None of these auto-tag into GA4. Manual UTMs are required. Each platform supports URL parameter fields and dynamic macros similar to Meta. Treat utm_medium=paid_social for all three, varying only utm_source.
06. Common pitfalls to avoid
Facebook, facebook, and FaceBook produce three separate rows in your traffic source report. Fix by normalising all values to lowercase at the builder.spring_sale used in 2024, 2025, and 2026 blends three years of data into one campaign. Always version with year or quarter.facebook_paid or email_promo as mediums puts traffic into (Other) in default channel grouping. Stick to GA4's recognised medium vocabulary.For a broader glossary of analytics terminology including attribution windows, session scope, and other concepts referenced here, see our 200-term analytics and data metrics glossary.
07. Advanced patterns & utm_id
Once baseline UTM hygiene is in place, a few advanced patterns unlock deeper attribution: utm_id for cross-platform cost reconciliation, offline tagging via QR codes, and first-touch versus last-touch attribution strategy.
utm_id for cross-platform reconciliation
GA4's Data Import feature lets you upload cost, impression, and click data from non-Google ad platforms (Meta, LinkedIn, TikTok) and join it to session data using utm_id as the key. Without utm_id, you cannot see CPA or ROAS for non-Google platforms inside GA4 — only raw session counts.
Implementation: set utm_id to the platform's campaign ID macro ( {{campaign.id}} on Meta, the equivalent on LinkedIn/TikTok). Then export daily cost data from each platform, match on campaign ID, and upload to GA4 as a Cost data source. Cost metrics appear in GA4's Advertising and Acquisition reports.
First-touch vs last-touch attribution
GA4's default user acquisition dimension reports the first-ever session source for each user, while session acquisition reports the immediate source for each session. The same UTMs feed both — the difference is in how GA4 attributes the conversion.
- Last-click: all credit to the final pre-conversion session.
- First-click: all credit to the first-ever session.
- Data-driven: GA4's default — machine-learning model distributes credit across touchpoints.
- Linear / position-based / time-decay: rule-based multi-touch models.
Switch models in Admin > Attribution settings. Data-driven is the strongest default for most businesses.
Offline and QR code tagging
Physical marketing — posters, business cards, packaging inserts, trade show booths — can carry UTMs via QR codes that point to a tagged URL. This is the only practical way to attribute offline activity to digital outcomes.
https://www.example.com/welcome?utm_source=tradeshow&utm_medium=qr_code&utm_campaign=saastr_2026&utm_content=booth_posterUse a redirect service (Bitly, Rebrandly, or a self-hosted shortener) so the QR code itself remains stable while the underlying UTMs can be updated. Track distinct utm_content values per physical placement (booth_poster, tote_bag, signage) to attribute returns to specific assets.
Stripping UTMs after capture
For aesthetic or SEO reasons (UTMs in indexed URLs can cause duplicate content concerns), strip parameters from the browser URL bar after analytics has captured them. A minimal implementation:
// After gtag/analytics fires
if (window.history.replaceState) {
const url = new URL(window.location.href);
['utm_source','utm_medium','utm_campaign','utm_content','utm_term','utm_id']
.forEach(p => url.searchParams.delete(p));
window.history.replaceState({}, '', url.toString());
}Conclusion
UTMs are not a technical problem — they are a governance problem. The tags themselves take seconds to add; the discipline of consistent naming, a shared builder, and monthly audits is what separates marketing teams with clean, trustworthy attribution from teams chasing fragmented campaign rows in the (Other) bucket.
Start with one taxonomy document, one approved builder, and one rule that every campaign link must go through it. Layer in utm_id, cross-platform cost imports, and attribution modelling once the foundation is reliable. The payoff — accurate ROAS per channel, trustworthy year-over-year reporting, and unambiguous campaign performance data — compounds every quarter.
Need help designing a UTM taxonomy that actually gets used?
Our Analytics & Insights team builds UTM frameworks, governance documentation, and GA4 reporting layers tailored to your channel mix. From solo builder sheets to enterprise link management platforms, we match the right level of rigour to your team.
Related Articles
Continue exploring with these related guides