A paid social campaign just drove 5,000 clicks. GA4 sent a large portion of them to "Unassigned." The culprit is not missing data — it is inconsistent UTM tagging.

When utm_source and utm_medium values do not align with GA4's channel grouping rules, traffic disappears into the wrong bucket. Budget decisions become impossible. The channel that actually works gets underfunded. The channel that looks good gets more money than it deserves.

UTM parameters are not complicated. But they are case-sensitive, GA4-dependent, and remarkably easy to break with a single character of inconsistency. This guide is the complete 2026 reference — from the three required parameters to the three new GA4-specific ones, from correct channel mapping to the naming conventions that scale.

81.4% of all analytics platforms now run on GA4 — making GA4-compatible UTM structure non-negotiable W3Techs 2026
30% of companies skip UTM markup in over 30% of their campaigns — every untagged link feeds the direct bucket Improvado 2025
29% improvement in campaign attribution accuracy when teams standardise UTM naming conventions CXL Institute 2025
8 total UTM parameters available in GA4 in 2026 — five classic plus three new ones most marketers have never used

How UTM Parameters Actually Work in GA4

Think of a UTM parameter like a shipping label. Source is the sender. Medium is the shipping method. Campaign is the order number. Term is the reason for the order. Content is which box in the shipment.

Miss one label, and your package ends up in the wrong warehouse — or in GA4's "Unassigned" channel, which is worse.

When someone clicks a tagged URL, GA4 captures those parameters and attributes the session to the dimensions you specified. It then runs those dimensions through its Default Channel Grouping rules engine — mapping utm_source and utm_medium to named channels like Organic Search, Email, Paid Social, and so on.

The critical point: GA4 is a rules engine, not a mind-reader. If your UTM values do not match the expected patterns, traffic falls into (Other) or (Unassigned) and disappears from channel-level dashboards.

Anatomy of a fully tagged URL — 2026 standard
https://yoursite.com/landing-page?utm_source=linkedin&utm_medium=social&utm_campaign=product-launch-may-2026&utm_content=cta-hero&utm_id=camp_20260501
All lowercase. Hyphens not spaces. Year in campaign name. utm_id included for cost import reconciliation.

All 8 UTM Parameters Explained — Including GA4's Three New Ones

Five parameters have existed since the Universal Analytics era. GA4 introduced three more that are increasingly important in 2026 — particularly for paid campaigns and cost data reconciliation. Most marketing teams have never used them.

The Three Required Parameters

Every tagged URL must include all three. Without all three, the session data may appear incomplete or fall into the wrong channel grouping. These are not optional defaults — they are the foundation of every attribution decision GA4 makes.

utm_source

Required

Identifies where the click originated — the platform, publisher, or tool name. GA4 uses this to map traffic to the correct channel grouping. Always use the full platform name, never abbreviations.

Good: linkedin, instagram, google, mailchimp, newsletter-weekly
Bad: LI, IG, Goog, email, Email, NEWSLETTER
utm_medium

Required

Describes the traffic type or delivery mechanism. This is the single most important value for GA4 channel grouping. Non-standard medium values cause traffic to land in (Other). Stick exactly to GA4's recognised values.

GA4 recognised: cpc, email, social, organic, referral, affiliate, display, video, sms, push, qr-code
Avoid: paid_social, e-mail, newsletter, Social_Media
utm_campaign

Required

Groups all assets under one marketing initiative. Always include the year — without it, recurring campaigns (Black Friday, summer sales, product launches) merge across years with no way to compare year-over-year performance after the fact.

Good: product-launch-may-2026, black-friday-2026, email-onboarding-2026
Bad: product launch, summer-sale, campaign1

The Two Optional (But Often Valuable) Parameters

utm_content

Optional

Differentiates between multiple links within the same campaign — different CTAs, different ad creatives, different positions in an email. Essential for A/B testing and for understanding which specific asset drove a click.

Examples: cta-hero, cta-footer, banner-300x250, email-link-2, variation-b
utm_term

Optional

Originally designed for paid search keyword identification. In 2026, it functions as a free-form parameter for any additional context — product SKUs, geographic targeting, audience segment, or event name for QR campaigns.

Paid search: running-shoes-mens
General use: store-dubai-mall, sku-0042, audience-retargeting

The Three New GA4 Parameters Most Teams Are Missing

Why These Three Matter in 2026

GA4 introduced utm_id, utm_source_platform, and utm_creative_format alongside its event-based architecture. Most marketing teams still run without them. For paid campaigns, utm_id is increasingly non-optional — it is required for GA4 cost data import, and it provides campaign-level stability that a human-editable campaign name never can.

utm_id

GA4 New — Paid Recommended

The campaign identifier. Required for GA4 cost data import — without it, you cannot match ad spend data back to GA4 sessions. Crucially, campaign IDs do not change when someone renames a campaign mid-flight. The numeric ID stays stable when utm_campaign gets edited.

Format: camp_20260501, fb_q2_launch, li_brand_2026
Why it matters: Prevents broken joins when campaign names are edited mid-flight
utm_source_platform

GA4 New — Advanced

Identifies the platform sending traffic at a higher level than source. Google uses this internally for Google Ads auto-tagging. Most marketers can skip this unless using Search Ads 360, Display & Video 360, or Shopping campaigns at scale.

Values: Search Ads 360, Display & Video 360, Shopping
Who needs it: Enterprise teams using Google's buying platforms
utm_creative_format

GA4 New — Display / Video

Classifies the type of ad creative — useful for display and video campaigns where creative format (static, video, carousel, responsive) is a meaningful variable in performance analysis. Enables format-level attribution alongside channel attribution.

Values: static, video, carousel, responsive, native
Who needs it: Display and video advertisers analysing creative performance

How GA4 Maps UTMs to Channels — and Why Wrong Medium Values Cost You Data

GA4 groups sessions into default channels using a rules engine that reads utm_source and utm_medium. 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.

The utm_medium value is the most critical input to the rules engine. Non-standard values — even small ones like paid_social instead of social, or e-mail instead of email — cause misclassification.

GA4 Channelutm_source must matchutm_medium must matchCommon mistake
Paid Searchgoogle, bing, yahoo, baiducpc, ppc, paidUsing paid-search → drops to (Other)
Organic Socialfacebook, instagram, twitter, linkedin, tiktok, pinterestsocial, social-mediaUsing organic_social or Social → misclassified
Paid Socialfacebook, instagram, linkedin, tiktokcpc, cpm, paid-socialUsing social for paid → merges with organic
Emailnewsletter, mailchimp, klaviyo, sendgridemailUsing e-mail, Email, or newsletter → drops to (Other)
ReferralAny domain namereferralLeaving untagged → merges with organic or direct
DisplayAny display networkdisplay, bannerUsing Display (uppercase) → creates duplicate channel
Custom (yours)Any — you define the ruleqr-code, print, smsNot creating a custom channel group → falls into (Other)
Create a Custom Channel Group for QR Codes, Print, and SMS

GA4's Default Channel Groupings do not include QR codes, print campaigns, or SMS by default. To get these out of (Other) and into their own named channel, navigate to GA4 Admin → Data Display → Channel Groups → Create new channel group. Add a rule: Session medium exactly matches qr-code. Save it as "QR Code" or "Offline." From that point, every UTM-tagged QR scan with utm_medium=qr-code appears in its own clean channel row across all acquisition reports.

The Naming Convention System That Prevents Permanent Data Corruption

GA4 treats UTM values as case-sensitive. "Email" and "email" become two separate entries in your reports. One uppercase letter creates a phantom entry in your data that fragments reporting forever.

Teams that standardise UTM naming conventions see a 29% improvement in campaign attribution accuracy. The investment is five minutes of documentation before the first campaign. The cost of skipping it compounds with every link your team creates.

RuleCorrectWrong — and why
Always lowercaseutm_source=linkedinutm_source=LinkedIn — creates a second source row in GA4
Hyphens not spacesutm_campaign=spring-sale-2026utm_campaign=spring sale 2026 — browsers convert spaces to +, making URLs ugly and hard to parse
Year in campaign nameutm_campaign=black-friday-2026utm_campaign=black-friday — merges 2025 and 2026 data; year-over-year comparison is impossible
Full platform namesutm_source=facebookutm_source=fb or utm_source=meta — GA4 does not map these to the Facebook/Instagram channel
Medium must match GA4 rulesutm_medium=emailutm_medium=newsletter — traffic lands in (Other), not the Email channel
All three required params alwayssource + medium + campaign on every linkTwo out of three — session may appear incomplete or land in wrong channel grouping

The Six Mistakes That Permanently Corrupt Your UTM Data

01
🔴 Data Corrupting — Permanent Attribution Loss
Adding UTM Parameters to Internal Links on Your Own Website

This is the cardinal sin of UTM tracking. Tagging a homepage banner that links to a product page seems harmless. It is not. That internal link overwrites the original session's acquisition source.

A user who arrived from a paid LinkedIn ad now shows as coming from "homepage-banner." You have lost the ability to track the performance of your actual traffic source. The sale gets credited to internal navigation, not to the LinkedIn campaign that earned it.

The Fix

UTMs belong only on external inbound links. For internal click tracking, use GA4's enhanced measurement or custom click events instead. Never tag links within your own domain with UTM parameters.

02
🔴 Data Fragmenting — Unfixable After the Fact
Inconsistent Capitalisation Across Team Members and Campaigns

GA4 treats "Email" and "email" as two separate sources. A team of three people without a naming convention document will produce four variations of "LinkedIn" within six months — creating fragmented source rows in every report that cannot be merged retroactively.

The Fix

Enforce lowercase-only across all UTM values. Build a shared Google Sheet with dropdown menus for approved values and an auto-generating formula. No one manually types a UTM value — they select from the dropdown and copy the generated URL.

03
🔴 Channel Attribution Lost — Traffic Falls to (Other)
Using utm_medium Values That Do Not Match GA4's Channel Grouping Rules

Non-standard utm_medium values cause traffic to land in GA4's (Other) channel. Your paid social campaign spend disappears into the wrong bucket, making budget decisions impossible. Common offenders: paid_social, e-mail, organic_social, Social Media.

The Fix

Stick to GA4's recognised medium values: cpc, email, social, referral, affiliate, display, video, sms. For custom channels like QR codes, create a matching custom channel group in GA4 Admin → Data Display → Channel Groups.

04
🔴 Google Ads Attribution Overwritten
Adding Manual UTMs to Google Ads URLs That Already Use Auto-Tagging (GCLID)

Google warns that including manual campaign details (utm_source, utm_medium, or utm_campaign) alongside an existing GCLID can lead to misattribution — incorrectly shifting events to UTM values instead of the expected Google Ads google / cpc source. The auto-tag and the manual tag conflict.

The Fix

Leave Google Ads URLs untagged. Let auto-tagging (GCLID) handle Google Ads attribution automatically. Only use manual UTMs for non-Google campaigns — social, email, SMS, QR codes, and other platforms where auto-tagging is not available.

05
🔴 Year-Over-Year Comparison Permanently Impossible
Omitting the Year from utm_campaign Names on Recurring Campaigns

A campaign named utm_campaign=black-friday that runs in 2025 and 2026 merges all data under one name — making year-over-year comparison impossible. There is no way to retroactively separate two years of campaign data that share the same UTM campaign value.

The Fix

Always include the year (and optionally the month) in every campaign name: black-friday-2026, summer-sale-june-2026, email-onboarding-2026. This applies to every recurring campaign, seasonal promotion, and regular newsletter sequence.

06
🔴 Session Incomplete — Channel Assignment Fails
Using Only One or Two of the Three Required Parameters

Three parameters are required for GA4 to properly attribute traffic: utm_source, utm_medium, and utm_campaign. Without all three, the session data may appear incomplete or fall into the wrong channel grouping. Using only source and medium without campaign is the most common partial-tag error.

The Fix

Never publish a tagged link with fewer than three parameters. Your UTM builder template should make all three required fields mandatory before generating the URL. Every tagged link must have source + medium + campaign before it is approved for use.

What Fixing UTM Governance Actually Changed: A Real Team Audit

Case Study · B2B SaaS Marketing Team · 2025

Four UTM Problems, One Audit, 41% More Attributable Sessions — Same Budget

A B2B SaaS marketing team of four ran active campaigns across LinkedIn, email, paid search, and QR codes on event materials. Their GA4 consistently showed a large Unassigned bucket and a Direct channel that appeared to generate an unusually high conversion rate. Something was wrong.

An analytics audit found four problems running simultaneously. First: LinkedIn campaigns used inconsistent source values — linkedin, LinkedIn, and linked-in all existed in the same reports. Second: email campaigns used utm_medium=newsletter, which does not match GA4's Email channel — all email traffic was landing in (Other). Third: the team had tagged homepage CTAs with UTMs, overwriting LinkedIn attribution for every LinkedIn visitor who clicked the homepage banner. Fourth: no year suffix on any campaign name, making Q4 2025 and Q4 2024 data inseparable.

After implementing a shared UTM builder with enforced lowercase, fixing medium values to email, removing UTMs from internal links, and adding year suffixes to all campaign names, attributable sessions in GA4 increased 41% within six weeks — with no change to ad spend, content volume, or campaign structure. The data had always been there. The UTM errors had been hiding it.

4simultaneous UTM governance failures found
+41%attributable GA4 sessions after fixing — no budget change
6 weeksto clean data after governance changes implemented

How to Build a UTM System That Scales: Step by Step

  1. Document your taxonomy before creating a single link

    Write down your approved values for utm_source, utm_medium, and utm_campaign naming format before you create anything. Share it with everyone who creates campaign links. 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.

  2. Build a shared UTM builder in Google Sheets

    Create a Google Sheet with dropdown menus for source, medium, and other approved values. A formula in the final column auto-generates the full tagged URL from the selected values. No one types a UTM value manually. The sheet becomes the single source of truth for every campaign link your team creates, and it logs every link for audit and reuse.

  3. Wrap every tagged URL in a Trimrly short link

    Paste the full UTM-tagged URL into Trimrly and create a readable alias — trimrly.com/brand-li-launch-may. The short link wraps the long UTM URL. Your audience sees only the clean alias. GA4 reads the UTM parameters on page load. Trimrly records click data at the redirect layer — giving you pre-session attribution that GA4 cannot capture on its own.

  4. Create custom channel groups in GA4 for non-standard mediums

    Navigate to GA4 Admin → Data Display → Channel Groups → Create new channel group. Add rules for any medium values that GA4 does not natively recognise: qr-code → QR Code channel; print → Print/Offline channel; sms → SMS channel. Save and apply. Traffic using these mediums now appears in named channels instead of (Other).

  5. Verify in GA4 Realtime before any campaign goes live

    Before sharing a tagged URL publicly, click it yourself and open GA4 → Realtime. Confirm you see an active session with the correct source, medium, and campaign values. If the session shows as Direct or falls into the wrong channel, your UTM is misconfigured — fix it before distribution. This test takes 60 seconds and prevents weeks of corrupted data.

  6. Run a quarterly UTM audit using Trimrly + GA4

    Monthly: check your GA4 Traffic Acquisition report — if the (Other) or Unassigned rows have grown, you have new UTM inconsistencies to find and fix. Quarterly: review your Trimrly dashboard for links using outdated campaign names and update their destinations. Check your active QR codes by scanning each one manually to verify correct destination.

Your UTM Health Checklist — Run This Before Every Campaign

  • All three required parameters are present on every tagged link: utm_source, utm_medium, and utm_campaign — on every single external campaign link, no exceptions.

  • All values are lowercase. GA4 is case-sensitive. No capital letters anywhere in any UTM value — not source, not medium, not campaign, not content, not term.

  • utm_medium matches a GA4-recognised value or has a custom channel group. email, social, cpc, referral, display — or a custom channel group defined for any non-standard medium like qr-code.

  • Campaign name includes the year. product-launch-2026, not product-launch. Recurring campaigns need year suffixes to be separable year-over-year.

  • Hyphens are used instead of spaces or underscores in campaign names. Spaces encode as + in URLs and create parsing issues. Hyphens are clean, readable, and consistent.

  • Google Ads URLs are not manually tagged. Auto-tagging (GCLID) handles Google Ads attribution. Manual UTMs on Google Ads URLs cause attribution conflicts.

  • No UTM parameters on internal links. Adding UTMs to any link that stays within your own domain overwrites original session attribution and permanently corrupts the source data for that conversion.

  • No creative use of medium names. If your medium value is not on GA4's recognised list and you have not created a custom channel group for it, your traffic will land in (Other). Do not invent medium names without creating the matching custom channel group first.

"UTM parameters are not labels for your convenience. They are instructions to GA4's rules engine. Write them the way GA4 expects, or watch your data disappear into (Other)."

Frequently Asked Questions

What are the three required UTM parameters in GA4?

The three required UTM parameters are utm_source, utm_medium, and utm_campaign. Without all three, the session data may appear incomplete or fall into the wrong GA4 channel grouping. utm_source identifies where the click came from (the platform). utm_medium describes the traffic type (the mechanism). utm_campaign groups all assets under the same marketing initiative. utm_content and utm_term are optional but valuable for A/B testing and keyword tracking. GA4 also introduced three new parameters — utm_id, utm_source_platform, and utm_creative_format — that are increasingly important for paid campaigns and cost data import.

Why is my traffic showing as (Unassigned) or (Other) in GA4?

(Unassigned) and (Other) in GA4 typically indicate that your utm_medium value does not match any of GA4's Default Channel Grouping rules. Common causes: using paid_social instead of social or cpc; using newsletter instead of email; using inconsistent capitalisation (Email vs email); or using a completely custom medium value without creating a custom channel group to match it. The fix is to align your utm_medium values with GA4's recognised channel grouping patterns — cpc, email, social, referral, affiliate, display, video — or to create a custom channel group in GA4 Admin → Data Display → Channel Groups for any non-standard mediums.

Should I add UTM parameters to links within my own website?

No — this is the cardinal sin of UTM tracking. Adding UTM parameters to internal links (navigation, banners, CTAs within your own domain) overwrites the original session's acquisition source. A user who arrived from a paid LinkedIn ad becomes a user who "arrived" from your internal homepage banner. The LinkedIn attribution is permanently lost for that session and any conversion it generates. UTM parameters belong only on external inbound links that bring users to your site from outside. Use GA4's enhanced measurement or custom events to track internal click behaviour instead.

What is utm_id and do I need it?

utm_id is a GA4-specific parameter that serves as a stable campaign identifier. It is required for GA4 cost data import — without it, you cannot match ad spend data back to GA4 sessions. Beyond cost import, utm_id solves a practical governance problem: campaign IDs do not change when someone renames a campaign mid-flight. When utm_campaign is edited (say, from "Spring Sale" to "March Promo"), the numeric utm_id stays stable — preserving your ability to join session data across the full campaign run. Every paid campaign should include utm_id. Organic and email campaigns can skip it unless you are importing cost data.

Does using a URL shortener like Trimrly affect UTM tracking?

No — a Trimrly dynamic short link is transparent to GA4. The short link wraps the UTM-tagged destination URL. When someone clicks the short link, Trimrly performs a 301 redirect that carries the UTM parameters through to the destination page. GA4 fires on page load and reads the parameters from the destination URL — attributing the session correctly. Trimrly also records click data at the redirect layer (before GA4 fires), giving you pre-session attribution data that complements what GA4 captures on page load. The two tools are additive, not conflicting.

Muhammad Umar Ali
Content Strategist, Trimrly

Muhammad writes about QR code strategy, local business marketing, and practical digital tools for small business owners. He has covered Google review optimisation, print-to-digital conversion strategies, and the operational mechanics of reputation management since 2022.