How to Fix 'GA4 Medium Unrecognized' Error in 5 Minutes
20% of your traffic is trapped in GA4's "Unassigned" channel.
You need it fixed. Now.
Not next week. Not after reading 15 blog posts. Right now.
This is the 5-minute emergency fix for non-standard utm_medium values breaking your GA4 channel attribution.
🚨 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
The 60-Second Diagnosis
Step 1: GA4 → Reports → Traffic Acquisition
Step 2: Look for "Unassigned" in Session default channel group
Step 3: Note the percentage
- < 5%? Minor cleanup needed
- 5-20%? Medium priority fix
- > 20%? Critical—fix immediately
If you see > 5% Unassigned traffic from marketing campaigns, you have this problem.
What's Happening (30-Second Explanation)
GA4 only recognizes specific utm_medium values:
Recognized:
emailcpc/ppcpaidsocialdisplayaffiliatesocial
Not recognized (common mistakes):
newsletter(should beemail)paid-social(should bepaidsocial)retargeting(should bedisplay)partner(should beaffiliate)Email(uppercase—should be lowercaseemail)
When GA4 sees a utm_medium value it doesn't recognize, it dumps traffic into "Unassigned."
Your attribution breaks. Your reports show missing channels. You can't measure ROI.
😰 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
The 5-Minute Fix (Step-by-Step)
Step 1: Identify Broken utm_medium Values (2 minutes)
- GA4 → Explore → Create Free Form
- Add dimension: Session manual medium
- Add dimension: Session default channel group
- Add metric: Sessions
- Filter: Session default channel group = "Unassigned"
- Click "Share" → "Download CSV"
You now have a list of every utm_medium value creating Unassigned traffic.
Example output:
utm_medium | Channel Group | Sessions
--------------------|---------------|----------
newsletter | Unassigned | 3,200
paid-social | Unassigned | 2,100
retargeting | Unassigned | 890
partner | Unassigned | 450
Email | Unassigned | 340
Step 2: Map to GA4-Recognized Values (1 minute)
For each broken utm_medium, choose the correct replacement:
| Current (Broken) | Replace With | Channel It Goes To |
|---|---|---|
| newsletter | email | |
| email-promotional | email | |
| email-* (anything) | email | |
| paid-social | paidsocial | Paid Social |
| social-paid | paidsocial | Paid Social |
| retargeting | display | Display |
| remarketing | display | Display |
| partner | affiliate | Affiliates |
| influencer | affiliate | Affiliates |
| sponsored | affiliate | Affiliates |
| PPC / CPC (uppercase) | cpc (lowercase) | Paid Search |
| paid-search | cpc or paidsearch | Paid Search |
Step 3: Update Campaign Links (2 minutes)
For each channel, update your link templates:
Email Campaigns
Platform: Mailchimp
- Settings → Tracking → Google Analytics
- Change
utm_mediumdefault fromnewslettertoemail - Save
Platform: HubSpot
- Settings → Marketing → Tracking
- Update default UTM parameters
- Change utm_medium to
email
Platform: ActiveCampaign
- Settings → Tracking
- Update utm_medium parameter to
email
Manual templates:
- Update all email signature links
- Update all newsletter templates
- Change
utm_medium=newslettertoutm_medium=email
Social Media Ads
Facebook Ads:
- Open Facebook Ads Manager
- Go to each active campaign → Ads tab
- Edit destination URLs
- Change
utm_medium=paid-socialtoutm_medium=paidsocial - Save
LinkedIn Ads:
- Campaign Manager → Campaigns
- Edit destination URLs
- Change
utm_medium=paid-socialtoutm_medium=paidsocial
Social media scheduler (Hootsuite/Buffer):
- Settings → Analytics/Tracking
- Update default utm_medium to
paidsocial(for paid posts) - Save template
Display & Retargeting Campaigns
Google Display Network:
- Google Ads → Display campaigns
- Update tracking template or destination URLs
- Change
utm_medium=retargetingtoutm_medium=display
Retargeting platforms:
- Update URL parameters in platform settings
- Change to
utm_medium=display
Affiliate Links
Affiliate platform templates:
- Update default utm_medium to
affiliate - Send updated link format to partners
Manual affiliate links:
- Find all partner links with
utm_medium=partner - Replace with
utm_medium=affiliate
Step 4: Verify Fix (Check 24-48 Hours Later)
- GA4 → Reports → Traffic Acquisition
- Check "Session default channel group"
- "Unassigned" should drop 50-90%
- Email, Paid Social, Display channels should now show traffic
Expected results:
Before fix:
Channel | Sessions
-----------------|----------
Unassigned | 8,400 (35%)
Paid Search | 6,200
Direct | 5,100
Organic Search | 4,300
After fix (48 hours later):
Channel | Sessions
-----------------|----------
Email | 4,100 (was in Unassigned)
Paid Social | 2,800 (was in Unassigned)
Paid Search | 6,200
Direct | 5,100
Organic Search | 4,300
Display | 890 (was in Unassigned)
Affiliate | 450 (was in Unassigned)
Unassigned | 460 (was 8,400)
Emergency Lookup Table: Quick Replacements
Use this table for instant utm_medium fixes:
| Find This | Replace With |
|---|---|
| newsletter | |
| e_mail | |
| emai | |
| emial | |
| email-promotional | |
| email-transactional | |
| email-nurture | |
| email_* |
Paid Social
| Find This | Replace With |
|---|---|
| paid-social | paidsocial |
| social-paid | paidsocial |
| paid_social | paidsocial |
| PAID-SOCIAL | paidsocial |
| paidsocial (+ utm_source=facebook) | |
| paidsocial (+ utm_source=linkedin) | |
| paidsocial (+ utm_source=instagram) |
Display Ads
| Find This | Replace With |
|---|---|
| retargeting | display |
| remarketing | display |
| banners | display |
| display-ads | display |
| programmatic | display |
| native | display |
| DISPLAY | display |
Affiliates
| Find This | Replace With |
|---|---|
| partner | affiliate |
| influencer | affiliate |
| ambassador | affiliate |
| referral-partner | affiliate |
| partnership | affiliate |
Paid Search
| Find This | Replace With |
|---|---|
| PPC | ppc |
| CPC | cpc |
| paid-search | paidsearch |
| paid_search | paidsearch |
| sem | cpc |
| google-ads | cpc |
Common Mistakes to Avoid
Mistake 1: Mixing Old and New Values
Wrong:
- Some campaigns use
newsletter - Other campaigns use
email
Result: Data split between "Email" channel and "Unassigned."
Right: Update ALL campaigns to email immediately. Don't leave mixed values.
Mistake 2: Using Uppercase
Wrong: utm_medium=Email
Result: Still goes to "Unassigned" (case-sensitive regex)
Right: utm_medium=email (always lowercase)
Mistake 3: Adding Hyphens
Wrong: utm_medium=paid-social
Result: May not match GA4 pattern (depends on version)
Right: utm_medium=paidsocial (no hyphen)
Mistake 4: Platform Names in utm_medium
Wrong:
utm_source=spring-sale&utm_medium=facebook
Result: "facebook" not recognized as utm_medium
Right:
utm_source=facebook&utm_medium=paidsocial
Platform name goes in utm_source. Channel type goes in utm_medium.
Mistake 5: Not Updating Historical Links
Problem: You fix new campaigns, but old email templates still use utm_medium=newsletter.
Result: New traffic goes to "Email" channel. Old template traffic still goes to "Unassigned."
Solution: Update ALL templates, not just new campaigns.
What If You Can't Change utm_medium? (Alternative Fix)
In rare cases, you might not be able to change utm_medium values (e.g., third-party platform limitation).
Alternative solution: Create a custom channel group in GA4.
Create Custom Channel Group
- GA4 → Admin → Data Display → Channel Groups
- Click "Create custom channel group"
- Name it: "Fixed Channel Grouping"
- Add rules for your non-standard values:
Example custom rules:
Channel: Email
Conditions:
- Session manual medium exactly matches "newsletter"
OR
- Session manual medium exactly matches "email-promotional"
Channel: Paid Social
Conditions:
- Session manual medium exactly matches "paid-social"
OR
- Session manual medium exactly matches "social-paid"
Channel: Display
Conditions:
- Session manual medium exactly matches "retargeting"
OR
- Session manual medium exactly matches "remarketing"
- Save custom channel group
- Use it in reports: Exploration → Dimensions → "Custom channel group"
Limitations:
- Doesn't work in standard GA4 reports (only Explorations)
- Doesn't transfer to Looker Studio automatically
- Every user must manually select custom channel group
- Must be recreated for every GA4 property
We recommend fixing utm_medium values instead of creating custom channel groups.
✅ 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
How to Prevent This Problem Forever
1. Create utm_medium Reference Guide
Approved utm_medium values ONLY:
email- All email campaignscpcorppc- Paid searchpaidsocial- Paid social adssocial- Organic social postsdisplay- Display ads, retargetingaffiliate- Affiliate and partner linkssms- SMS campaigns
Share this with your team. Pin it. Enforce it.
2. Update All Campaign Templates
Don't rely on manual UTM creation.
Set default utm_medium in:
- Email platform settings
- Social media scheduler settings
- URL shortener defaults
- Ad platform tracking templates
3. Validate Before Launch
Before every campaign launch:
- Create test link with UTM parameters
- Click it yourself
- GA4 → Realtime → Check channel classification
- If "Unassigned" → fix utm_medium before full launch
4. Monthly Spot Check
First Monday of every month:
- GA4 → Traffic Acquisition
- Check "Unassigned" %
- If > 2%, investigate and fix
5. Use UTMGuard
Automate validation with UTMGuard:
- Scans all GA4 traffic
- Detects non-standard utm_medium values
- Alerts you before traffic hits "Unassigned"
- Suggests GA4-recognized replacements
FAQ
How long until GA4 shows the fix?
24-48 hours. GA4 reports update with a delay. Use Realtime reports to verify immediately.
Will fixing utm_medium affect historical data?
No. Historical data stays as-is in "Unassigned." The fix only affects future traffic.
Can I bulk-update old data?
No. GA4 doesn't allow retroactive data changes. Focus on fixing future campaigns.
What if I have 50+ campaign links to update?
Prioritize by traffic volume:
- Fix the utm_medium values causing MOST Unassigned sessions first
- Update templates (prevents new mistakes)
- Update active campaigns
- Update archived/paused campaigns last
Does this apply to Universal Analytics too?
Universal Analytics had similar (but not identical) channel grouping rules. If you're still using UA, check for "Unassigned" traffic there too.