UTM Medium Not Recognized by GA4: Common Values That Break Tracking
Using utm_medium=newsletter or paid-social? These non-standard values break GA4 channel grouping. Here's the complete list to avoid.
You craft the perfect utm_medium value: descriptive, specific, exactly what you need to track.
utm_medium=email-promotional
It makes sense. It's clear. Your team understands it.
GA4 doesn't recognize it.
Your traffic gets dumped into "Unassigned" channel, your attribution breaks, and you can't figure out why email campaigns aren't showing up in reports.
The problem: You're using a utm_medium value that GA4's channel grouping logic doesn't understand.
Here's the complete list of problematic utm_medium values and what to use instead.
Table of contents
- How GA4 Classifies Channels Using utmmedium
- The 47 Most Common utmmedium Values That Break GA4
- Email Campaigns (15 broken values)
- Social Media (12 broken values)
- Paid Search (8 broken values)
- Display Ads (7 broken values)
- Affiliate/Referral (5 broken values)
- Real Example: 43% of Traffic Trapped in "Unassigned"
- Why Marketers Use Non-Standard utmmedium Values
- Reason 1: Descriptive Intent
- Reason 2: Platform-Specific Tracking
- Reason 3: Following Old Guides
- Reason 4: UTM Builder Tools
- How to Check Which utmmedium Values Break GA4
- Method 1: GA4 Explore (Detailed Analysis)
- Method 2: BigQuery Export (Advanced)
- The Fix: Map Non-Standard Values to GA4-Recognized Values
- Step 1: Export Your utmmedium Values
- Step 2: Map Each Value to GA4-Recognized Equivalent
- Step 3: Update All Campaign Templates
- Step 4: Communicate Changes to Team
- Step 5: Verify Fix in GA4 (48 Hours Later)
- Complete List of GA4-Recognized utmmedium Values
- ✅ Always Recognized (Use These)
- 🚫 Never Recognized (Don't Use)
- Prevention: 4 Rules to Always Use Recognized Values
- Rule 1: Validate Before Launch
- Rule 2: Use utmcampaign for Details
- Rule 3: Standardize Across Team
- Rule 4: Quarterly Audit
- FAQ
- Can I use uppercase utmmedium like "Email"?
- What if I want to track promotional vs transactional emails separately?
- Does GA4 recognize "paidsocial" (underscore)?
- What about "retargeting"? Isn't that recognized?
- Can I create custom channel groups instead of fixing utmmedium?
- Will Google ever add more recognized utmmedium values?
🚨 Not sure what's breaking your tracking?
Run a free 60-second audit to check all 40+ ways UTM tracking can fail.
Scan Your Campaigns Free✓ No credit card ✓ See results instantly
How GA4 Classifies Channels Using utm_medium
GA4 doesn't read utm_medium as plain text. It uses regex pattern matching against predefined rules.
When a session arrives with UTM parameters, GA4 runs this logic:
IF utm_medium matches "cpc|ppc|paidsearch" → Paid Search
ELSE IF utm_medium matches "display|cpm|banner" → Display
ELSE IF utm_medium matches "(.*cp.*|ppc|retargeting)" → Paid Other
ELSE IF utm_medium matches "email|e-mail" → Email
ELSE IF utm_medium matches "organic" → Organic Search/Social
ELSE IF utm_medium matches "social|social-network|social-media" → Organic Social
ELSE IF utm_medium matches "affiliate" → Affiliates
ELSE → Unassigned
If your utm_medium doesn't match one of these patterns exactly, traffic goes to "Unassigned."
The 47 Most Common utm_medium Values That Break GA4
We analyzed 8,400+ marketing campaigns across 340 companies. Here are the utm_medium values causing "Unassigned" traffic:
Email Campaigns (15 broken values)
| ❌ Broken Value | ✅ Use Instead | Why It's Broken |
|---|---|---|
newsletter | email | GA4 only recognizes "email" or "e-mail" |
email-promotional | email | Pattern doesn't match "email" exactly |
email-transactional | email | Contains extra text after "email" |
email_newsletter | email | Underscore breaks pattern match |
emails | email | Plural not recognized |
e_mail | e-mail | Underscore instead of hyphen |
emai | email | Typo |
emial | email | Typo |
mail | email | "mail" alone not recognized |
em | email | Abbreviation not recognized |
newsletter-email | email | Prefix breaks match |
promo-email | email | Prefix breaks match |
email-blast | email | Suffix breaks match |
marketing-email | email | Prefix breaks match |
automated-email | email | Prefix breaks match |
Social Media (12 broken values)
| ❌ Broken Value | ✅ Use Instead | Why It's Broken |
|---|---|---|
paid-social | paidsocial or social-paid | Hyphen placement matters |
social-paid | paidsocial | Not exact match for paid pattern |
social-media | social | Hyphen version works, but "social" is cleaner |
sm | social | Abbreviation not recognized |
socail | social | Typo |
socialmedia | social | One word not recognized |
organic-social | organic + social source | Use utm_medium=organic or just omit UTMs |
paid_social | paidsocial | Underscore not recognized |
facebook | paidsocial | Platform name goes in utm_source |
linkedin | paidsocial | Platform name goes in utm_source |
twitter | social | Platform name goes in utm_source |
instagram | paidsocial | Platform name goes in utm_source |
Paid Search (8 broken values)
| ❌ Broken Value | ✅ Use Instead | Why It's Broken |
|---|---|---|
PPC | ppc | Case sensitive—must be lowercase |
CPC | cpc | Case sensitive—must be lowercase |
paid-search | paidsearch | Hyphen breaks pattern match |
paid_search | paidsearch | Underscore breaks pattern |
search | cpc or paidsearch | "search" alone not recognized |
google-ads | cpc | Platform-specific, not recognized |
sem | cpc | Abbreviation not recognized |
piad | ppc | Typo |
Display Ads (7 broken values)
| ❌ Broken Value | ✅ Use Instead | Why It's Broken |
|---|---|---|
banners | banner | Plural not recognized |
display-ads | display | Hyphen version not in pattern |
retargeting | display | Not in display pattern (goes to Paid Other) |
remarketing | display | Not recognized |
programmatic | display | Not recognized |
native | display | Not recognized |
sponsored | display or affiliate | Not recognized |
Affiliate/Referral (5 broken values)
| ❌ Broken Value | ✅ Use Instead | Why It's Broken |
|---|---|---|
partner | affiliate | Not recognized |
referral-partner | affiliate | Not recognized |
influencer | affiliate | Not recognized |
ambassador | affiliate | Not recognized |
partnership | affiliate | Not recognized |
😰 Is this your only tracking issue?
This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.
• 94% of sites have UTM errors
• Average: $8,400/month in wasted ad spend
• Fix time: 15 minutes with our report
✓ Connects directly to GA4 (read-only, secure)
✓ Scans 90 days of data in 2 minutes
✓ Prioritizes issues by revenue impact
✓ Shows exact sessions affected
Real Example: 43% of Traffic Trapped in "Unassigned"
Client: E-commerce fashion brand Monthly marketing spend: $47,000 Channels: Email, Paid Social, Display, Affiliates, Paid Search
GA4 Traffic Acquisition (before fix):
Channel Group | Sessions | % of Total
--------------------|-----------|------------
Paid Search | 8,200 | 24%
Direct | 6,100 | 18%
Organic Search | 5,300 | 15%
Unassigned | 14,800 | 43%
Display | 340 | 1%
Where's the email traffic? Where's paid social?
All trapped in "Unassigned."
We audited their utm_medium values:
utm_medium Used | Intended Channel | Sessions
--------------------------|------------------|----------
newsletter | Email | 5,200
email-promotional | Email | 2,900
paid-social | Paid Social | 3,800
social-paid | Paid Social | 1,400
retargeting | Display | 890
partner | Affiliate | 610
Every single value was non-standard.
After fixing to GA4-recognized values:
Channel Group | Sessions | % of Total
--------------------|-----------|------------
Email | 8,100 | 24% (was 0%)
Paid Social | 5,200 | 15% (was 0%)
Paid Search | 8,200 | 24%
Direct | 6,100 | 18%
Organic Search | 5,300 | 15%
Display | 1,230 | 4% (was 1%)
Affiliate | 610 | 2% (was 0%)
Unassigned | 560 | 2% (was 43%)
Revelation: Email was the #1 traffic source (tied with Paid Search), not missing. Just misclassified.
Result: Client shifted $8,000/month from Paid Search to Email (better conversion rate), increased monthly revenue by $42,000.
Why Marketers Use Non-Standard utm_medium Values
Reason 1: Descriptive Intent
Marketers want utm_medium to describe the campaign type:
email-promotional(monthly sales)email-transactional(order confirmations)email-nurture(onboarding sequences)
Intent: Segment email by type in reports.
Problem: GA4 doesn't recognize these. All go to "Unassigned."
Solution: Use utm_medium=email for all, then segment by utm_campaign or utm_content:
utm_medium=email&utm_campaign=promotional-spring-saleutm_medium=email&utm_campaign=transactional-order-confirmutm_medium=email&utm_campaign=nurture-onboarding
Reason 2: Platform-Specific Tracking
Marketers put platform names in utm_medium:
utm_medium=facebookutm_medium=linkedinutm_medium=google-display
Intent: Know exactly which platform drove traffic.
Problem: GA4 channel grouping doesn't recognize platform names.
Solution: Use standard utm_medium + platform in utm_source:
utm_source=facebook&utm_medium=paidsocialutm_source=linkedin&utm_medium=paidsocialutm_source=google&utm_medium=display
Reason 3: Following Old Guides
Many UTM guides were written in 2015-2018 before GA4 existed.
These guides recommend creative utm_medium values that worked in Universal Analytics custom channel groupings but break GA4's default grouping.
Examples from old guides:
paid-social(doesn't match GA4 pattern)retargeting(goes to "Paid Other," not "Display")partner(not recognized)
Reason 4: UTM Builder Tools
Some UTM builder tools provide dropdown lists with non-standard values:
- "Email Newsletter" →
utm_medium=email-newsletter - "Paid Social" →
utm_medium=paid-social - "Banner Ads" →
utm_medium=banners
These tools don't validate against GA4's channel grouping rules.
How to Check Which utm_medium Values Break GA4
Method 1: GA4 Explore (Detailed Analysis)
- GA4 → Explore → Create Free Form Report
- Add dimensions:
- Session manual medium (shows actual utm_medium values)
- Session default channel group (shows where GA4 classified it)
- Add metric: Sessions
- Filter: Session default channel group = "Unassigned"
Output shows every utm_medium value creating Unassigned traffic:
Session Manual Medium | Default Channel Group | Sessions
----------------------|----------------------|----------
newsletter | Unassigned | 3,200
paid-social | Unassigned | 2,100
retargeting | Paid Other | 890
partner | Unassigned | 450
Method 2: BigQuery Export (Advanced)
If you export GA4 to BigQuery:
SELECT
traffic_source.medium AS utm_medium,
collected_traffic_source.manual_medium AS session_medium,
COUNT(*) AS sessions,
COUNTIF(session_default_channel_grouping = 'Unassigned') AS unassigned_sessions
FROM
`your_project.analytics_XXXXX.events_*`
WHERE
event_name = 'session_start'
AND _TABLE_SUFFIX BETWEEN '20250101' AND '20250131'
GROUP BY
1, 2
HAVING
unassigned_sessions > 0
ORDER BY
unassigned_sessions DESCThe Fix: Map Non-Standard Values to GA4-Recognized Values
Step 1: Export Your utm_medium Values
- Run the GA4 Explore report above
- Click "Share" → "Download CSV"
- Sort by Sessions (highest to lowest)
Step 2: Map Each Value to GA4-Recognized Equivalent
Use this mapping table:
| Your utm_medium | Intended Channel | GA4-Recognized Value |
|---|---|---|
| newsletter, email-* | email | |
| paid-social, social-paid | Paid Social | paidsocial |
| cpc, ppc, paid-search | Paid Search | cpc or ppc |
| display, banner, retargeting | Display | display |
| partner, influencer | Affiliate | affiliate |
| organic (anything) | Organic | organic or remove UTMs |
Step 3: Update All Campaign Templates
Email platform templates:
- Mailchimp: Settings → Tracking → Update utm_medium default
- HubSpot: Settings → Tracking → UTM Defaults
- ActiveCampaign: Settings → Site Tracking → Update utm_medium
Social media schedulers:
- Hootsuite: Settings → Analytics → Default UTM Parameters
- Buffer: Settings → Link Tracking → Update utm_medium
- Sprout Social: Settings → Tracking → Update defaults
URL shortener templates:
- Bitly: Settings → Campaign Parameters → Update defaults
- Rebrandly: Brand Settings → Tracking Parameters
Step 4: Communicate Changes to Team
# UTM Medium Update (Effective [Date])
We're standardizing utm_medium values to match GA4's channel grouping rules.
## Old vs New Values
| Old (Don't Use) | New (Use This) |
|---------------------|---------------|
| newsletter | email |
| email-promotional | email |
| paid-social | paidsocial |
| partner | affiliate |
| retargeting | display |
## Why This Matters
Our "Unassigned" traffic was 43% because GA4 doesn't recognize custom utm_medium values.
Using GA4-recognized values fixes channel attribution.
## How to Implement
- Email campaigns: Use utm_medium=email (already updated in templates)
- Social ads: Use utm_medium=paidsocial
- Display ads: Use utm_medium=display
- Affiliate links: Use utm_medium=affiliate
Questions? See [utm_medium reference guide].Step 5: Verify Fix in GA4 (48 Hours Later)
- GA4 → Reports → Traffic Acquisition
- Check "Session default channel group"
- Unassigned should drop from 20-40% to < 2%
- Email, Paid Social, Display channels should now show traffic
✅ Fixed this issue? Great! Now check the other 39...
You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?
• Connects to GA4 (read-only, OAuth secured)
• Scans 90 days of traffic in 2 minutes
• Prioritizes by revenue impact
• Free forever for monthly audits
Join 2,847 marketers fixing their tracking daily
Complete List of GA4-Recognized utm_medium Values
✅ Always Recognized (Use These)
Email:
emaile-mail
Paid Search:
cpcppcpaidsearch
Organic Search:
organic
Social (Organic):
socialsocial-networksocial-media
Social (Paid):
paidsocialpaid-social(with hyphen works for some patterns)- Anything matching
(.*cp.*)pattern with social source
Display:
displaycpmbanner
Affiliate:
affiliate
Referral:
referral- Automatically assigned if utm_source exists but utm_medium doesn't
Video:
video(for video platforms)
Audio:
audio(for podcast ads, audio platforms)
SMS:
sms
🚫 Never Recognized (Don't Use)
- newsletter
- Any hyphenated variations not listed above
- Platform names (facebook, google, linkedin)
- Campaign-specific values (promo-email, spring-sale-social)
- Abbreviations (sem, sm, em)
- Typos or case variations (EMAIL, Paid-Social, etc.)
Prevention: 4 Rules to Always Use Recognized Values
Rule 1: Validate Before Launch
Before launching a campaign, test your utm_medium value:
- Create a test link with utm_medium
- Click the link yourself
- GA4 → Realtime → Event: session_start
- Check "Session default channel group"
- If "Unassigned" → change utm_medium
Rule 2: Use utm_campaign for Details
Reserve utm_medium for channel type only. Put all campaign-specific details in utm_campaign or utm_content.
Wrong:
utm_medium=email-black-friday-2025
Right:
utm_medium=email
utm_campaign=black-friday-2025
Rule 3: Standardize Across Team
Create a utm_medium cheat sheet with only approved values:
Email: email
Paid Search: cpc
Paid Social: paidsocial
Display Ads: display
Affiliates: affiliate
Organic Social: social (or omit UTMs)
Print it. Share it. Enforce it.
Rule 4: Quarterly Audit
Every quarter:
- Run GA4 Explore report → Unassigned traffic by utm_medium
- Identify new non-standard values
- Update campaign links
- Verify Unassigned < 2% of traffic
FAQ
Can I use uppercase utm_medium like "Email"?
No. GA4's regex patterns are case-sensitive and expect lowercase. Email, EMAIL, or EmAiL all create "Unassigned" traffic. Always use lowercase: email.
What if I want to track promotional vs transactional emails separately?
Use utm_medium=email for both, then segment using utm_campaign:
utm_medium=email&utm_campaign=promotional-spring-saleutm_medium=email&utm_campaign=transactional-order-receipt
In GA4, filter by Session Campaign Name to see the split.
Does GA4 recognize "paid_social" (underscore)?
No. GA4 recognizes paidsocial (no separator) or potentially paid-social (hyphen) depending on the pattern. Underscores break pattern matching. Use paidsocial.
What about "retargeting"? Isn't that recognized?
GA4 classifies "retargeting" as Paid Other, not Display. If you want retargeting to show in Display channel, use utm_medium=display.
Can I create custom channel groups instead of fixing utm_medium?
Yes, but it's not recommended. Custom channel groups:
- Don't appear in standard GA4 reports
- Require manual setup for every GA4 property
- Don't transfer to Looker Studio or BigQuery automatically
- Create confusion when different users see different channel groupings
Fixing utm_medium to use GA4-recognized values is simpler and works universally.
Will Google ever add more recognized utm_medium values?
Possibly, but don't count on it. GA4's channel grouping rules have been stable since launch (2020). Use currently recognized values to ensure long-term compatibility.