How to Fix 'GA4 Medium Unrecognized' Error in 5 Minutes

UTMGuard Team
7 min readtroubleshooting

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:

  • email
  • cpc / ppc
  • paidsocial
  • display
  • affiliate
  • social

Not recognized (common mistakes):

  • newsletter (should be email)
  • paid-social (should be paidsocial)
  • retargeting (should be display)
  • partner (should be affiliate)
  • Email (uppercase—should be lowercase email)

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

Get Your Free Audit Report

The 5-Minute Fix (Step-by-Step)

Step 1: Identify Broken utm_medium Values (2 minutes)

  1. GA4 → Explore → Create Free Form
  2. Add dimension: Session manual medium
  3. Add dimension: Session default channel group
  4. Add metric: Sessions
  5. Filter: Session default channel group = "Unassigned"
  6. 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 WithChannel It Goes To
newsletteremailEmail
email-promotionalemailEmail
email-* (anything)emailEmail
paid-socialpaidsocialPaid Social
social-paidpaidsocialPaid Social
retargetingdisplayDisplay
remarketingdisplayDisplay
partneraffiliateAffiliates
influenceraffiliateAffiliates
sponsoredaffiliateAffiliates
PPC / CPC (uppercase)cpc (lowercase)Paid Search
paid-searchcpc or paidsearchPaid Search

For each channel, update your link templates:

Email Campaigns

Platform: Mailchimp

  1. Settings → Tracking → Google Analytics
  2. Change utm_medium default from newsletter to email
  3. Save

Platform: HubSpot

  1. Settings → Marketing → Tracking
  2. Update default UTM parameters
  3. Change utm_medium to email

Platform: ActiveCampaign

  1. Settings → Tracking
  2. Update utm_medium parameter to email

Manual templates:

  • Update all email signature links
  • Update all newsletter templates
  • Change utm_medium=newsletter to utm_medium=email

Social Media Ads

Facebook Ads:

  1. Open Facebook Ads Manager
  2. Go to each active campaign → Ads tab
  3. Edit destination URLs
  4. Change utm_medium=paid-social to utm_medium=paidsocial
  5. Save

LinkedIn Ads:

  1. Campaign Manager → Campaigns
  2. Edit destination URLs
  3. Change utm_medium=paid-social to utm_medium=paidsocial

Social media scheduler (Hootsuite/Buffer):

  1. Settings → Analytics/Tracking
  2. Update default utm_medium to paidsocial (for paid posts)
  3. Save template

Display & Retargeting Campaigns

Google Display Network:

  1. Google Ads → Display campaigns
  2. Update tracking template or destination URLs
  3. Change utm_medium=retargeting to utm_medium=display

Retargeting platforms:

  1. Update URL parameters in platform settings
  2. Change to utm_medium=display

Affiliate platform templates:

  1. Update default utm_medium to affiliate
  2. 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)

  1. GA4 → Reports → Traffic Acquisition
  2. Check "Session default channel group"
  3. "Unassigned" should drop 50-90%
  4. 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:

Email

Find ThisReplace With
newsletteremail
e_mailemail
mailemail
emaiemail
emialemail
EMAILemail
Emailemail
email-promotionalemail
email-transactionalemail
email-nurtureemail
email_*email
Find ThisReplace With
paid-socialpaidsocial
social-paidpaidsocial
paid_socialpaidsocial
PAID-SOCIALpaidsocial
facebookpaidsocial (+ utm_source=facebook)
linkedinpaidsocial (+ utm_source=linkedin)
instagrampaidsocial (+ utm_source=instagram)

Display Ads

Find ThisReplace With
retargetingdisplay
remarketingdisplay
bannersdisplay
display-adsdisplay
programmaticdisplay
nativedisplay
DISPLAYdisplay

Affiliates

Find ThisReplace With
partneraffiliate
influenceraffiliate
ambassadoraffiliate
referral-partneraffiliate
partnershipaffiliate
Find ThisReplace With
PPCppc
CPCcpc
paid-searchpaidsearch
paid_searchpaidsearch
semcpc
google-adscpc

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.

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

  1. GA4 → Admin → Data Display → Channel Groups
  2. Click "Create custom channel group"
  3. Name it: "Fixed Channel Grouping"
  4. 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"
  1. Save custom channel group
  2. 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

Run Complete UTM Audit (Free Forever)

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 campaigns
  • cpc or ppc - Paid search
  • paidsocial - Paid social ads
  • social - Organic social posts
  • display - Display ads, retargeting
  • affiliate - Affiliate and partner links
  • sms - 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:

  1. Create test link with UTM parameters
  2. Click it yourself
  3. GA4 → Realtime → Check channel classification
  4. If "Unassigned" → fix utm_medium before full launch

4. Monthly Spot Check

First Monday of every month:

  1. GA4 → Traffic Acquisition
  2. Check "Unassigned" %
  3. 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.

Prioritize by traffic volume:

  1. Fix the utm_medium values causing MOST Unassigned sessions first
  2. Update templates (prevents new mistakes)
  3. Update active campaigns
  4. 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.


Related: GA4 Medium Unrecognized Rule Documentation