Why GA4 Shows 'Unassigned' for utm_source (The Orphaned Parameter Fix)
utm_source tracked but GA4 shows 'Unassigned' traffic? Missing utm_medium creates orphaned parameters that break attribution.
You spent 20 minutes carefully crafting UTM parameters for your email campaign.
You added utm_source=newsletter to every link.
You sent it to 15,000 subscribers.
GA4 shows the traffic as "(direct) / (none)" or "Unassigned".
Your email campaign just disappeared into the void.
Here's the problem: utm_source without utm_medium is like a letter without an address. GA4 receives it but has nowhere to put it.
This is called an "orphaned parameter," and it's the #1 reason perfectly tagged campaigns show as unattributed traffic.
Table of contents
- What is an Orphaned utmsource?
- Why GA4 Requires Both Parameters
- Real Example: $42,000 Email Campaign Lost
- How to Check If You Have Orphaned Parameters
- Quick URL Test (10 seconds)
- GA4 Traffic Report Test (2 minutes)
- GA4 Realtime Test (30 seconds)
- The 2-Minute Fix
- Fix 1: Add utmmedium to All Links
- Fix 2: Bulk Update Existing Campaigns
- Fix 3: Update UTM Templates
- Why This Mistake Happens
- Reason 1: Confusing utmsource as "Enough"
- Reason 2: Outdated UTM Guides
- Reason 3: UTM Builders with Poor Validation
- Reason 4: Copy-Paste Errors
- What About utmcampaign?
- FAQ
- Can I use just utmmedium without utmsource?
- Will fixing this restore historical data?
- What if I see "Unassigned" traffic but my URLs have both parameters?
- Can I use custom medium values?
- Does this affect Google Ads auto-tagging?
- Prevention Checklist
- Conclusion
🚨 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
What is an Orphaned utm_source?
Orphaned parameter = utm_source present but utm_medium missing
Your URL looks like this:
yoursite.com?utm_source=newsletter&utm_campaign=spring-sale
Notice what's missing? utm_medium
GA4 requires BOTH utm_source AND utm_medium to attribute traffic correctly.
If you only send utm_source, GA4:
- Receives the parameter
- Sees utm_medium is missing
- Can't determine channel grouping
- Routes traffic to "Unassigned" or "(direct) / (none)"
Your utm_source becomes orphaned—present but unused.
Why GA4 Requires Both Parameters
GA4's attribution logic follows this hierarchy:
First check: Platform click IDs (gclid, fbclid, etc.) Second check: utm_source + utm_medium combination Third check: HTTP referrer Last resort: "(direct) / (none)"
When you only provide utm_source:
- GA4 can't use it (needs utm_medium too)
- Falls through to checking HTTP referrer
- Email has no referrer (direct click from inbox)
- Result: Classified as "(direct) / (none)"
The utm_source you added is completely ignored.
😰 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: $42,000 Email Campaign Lost
Client: B2B SaaS company Campaign: Product launch email to 28,000 leads Email spend: $4,200 (design, copywriting, list maintenance)
URLs used in email:
https://productsite.com/launch?utm_source=email&utm_campaign=launch-2024
What they expected in GA4:
- Source: email
- Medium: email
- Sessions: ~2,800 (10% open rate × 50% click rate)
What GA4 actually showed:
- Source / Medium: "(direct) / (none)"
- Sessions attributed to email: 0
- Sessions in "Unassigned": 2,847
The impact:
- CMO thought email generated zero traffic
- Proposed cutting email budget by 60%
- Attributed 2,847 sessions to "organic interest" instead
- Nearly killed a channel producing $42K in pipeline
What was actually happening:
- All 2,847 sessions WERE from email
- utm_source=email was present but orphaned
- Missing utm_medium caused GA4 to reject attribution
- Traffic dumped into "(direct) / (none)"
The fix: Added utm_medium=email to all links. Next campaign tracked perfectly.
How to Check If You Have Orphaned Parameters
Quick URL Test (10 seconds)
Look at your campaign URLs. Check for this pattern:
❌ Orphaned (missing utm_medium):
?utm_source=newsletter
?utm_source=newsletter&utm_campaign=spring
?utm_source=facebook&utm_campaign=spring&utm_content=video
✅ Complete (has utm_medium):
?utm_source=newsletter&utm_medium=email
?utm_source=newsletter&utm_medium=email&utm_campaign=spring
?utm_source=facebook&utm_medium=social&utm_campaign=spring&utm_content=video
GA4 Traffic Report Test (2 minutes)
- GA4 → Reports → Traffic Acquisition
- Look for "(direct) / (none)" or "Unassigned"
- Click on the row
- Add secondary dimension: "Session source"
- Check if sources appear with "(none)" medium
If you see actual source names with "(none)" medium → You have orphaned utm_source parameters.
Examples:
- newsletter / (none)
- facebook / (none)
- partner-site / (none)
These should never exist. Every source needs a medium.
GA4 Realtime Test (30 seconds)
- Create test URL:
yoursite.com?utm_source=test - Click it in incognito browser
- GA4 → Realtime report
- Check traffic source
If it shows as "(direct)" → Confirmed orphaned parameter issue.
The 2-Minute Fix
Fix 1: Add utm_medium to All Links
Before (orphaned):
https://yoursite.com/page?utm_source=newsletter&utm_campaign=spring-sale
After (complete):
https://yoursite.com/page?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale
Common utm_medium values by channel:
- Email:
utm_medium=email - Organic social:
utm_medium=social - Paid social:
utm_medium=paid-socialorutm_medium=cpc - Partner links:
utm_medium=referral - Display ads:
utm_medium=display - Affiliate:
utm_medium=affiliate
Fix 2: Bulk Update Existing Campaigns
For email marketing platforms (Mailchimp, Klaviyo, etc.):
- Find default UTM settings
- Check if utm_medium is configured
- Add default:
utm_medium=email - Apply to all templates
For social scheduling tools (Buffer, Hootsuite, etc.):
- Check UTM builder settings
- Ensure utm_medium is always included
- Set default based on platform (social, paid-social)
For link shorteners (Bitly, etc.):
- Review campaign builder defaults
- Verify both utm_source AND utm_medium are required fields
- Don't allow links to save without utm_medium
Fix 3: Update UTM Templates
If you use a UTM template or builder:
Minimum required parameters:
utm_source=`{"{"}{"{"}source{"}"}{"}"}}` ← REQUIRED
utm_medium=`{"{"}{"{"}medium{"}"}{"}"}}` ← REQUIRED
utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}` ← RECOMMENDED
Never create URLs with only:
utm_source=`{"{"}{"{"}source{"}"}{"}"}}` ← INCOMPLETE
utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}` ← INCOMPLETE
Why This Mistake Happens
Reason 1: Confusing utm_source as "Enough"
Many marketers think: "If I add utm_source, GA4 will know where traffic came from."
Wrong. GA4 uses source + medium together to determine channel grouping.
Source alone is ambiguous:
utm_source=facebook→ Organic post? Paid ad? Shared link?utm_source=google→ Organic search? Paid search? Display ad?
Medium provides context:
utm_source=facebook&utm_medium=social→ Organic postutm_source=facebook&utm_medium=cpc→ Paid adutm_source=google&utm_medium=organic→ Search resultutm_source=google&utm_medium=cpc→ Google Ad
Reason 2: Outdated UTM Guides
Some older guides say: "Add utm_source to track traffic sources."
They don't mention that utm_medium is equally required.
This advice worked in Universal Analytics (old GA). It doesn't work in GA4.
Reason 3: UTM Builders with Poor Validation
Some UTM builder tools allow you to create URLs without utm_medium.
They should flag this as an error. Instead, they let you generate broken URLs.
Reason 4: Copy-Paste Errors
You copy a URL from a previous campaign:
yoursite.com?utm_source=newsletter&utm_medium=email&utm_campaign=april
You update it for the new campaign:
yoursite.com?utm_source=newsletter&utm_campaign=may
You accidentally deleted utm_medium during editing.
✅ 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
What About utm_campaign?
utm_campaign is optional for attribution but highly recommended.
GA4 can attribute traffic with just utm_source + utm_medium:
?utm_source=newsletter&utm_medium=email
This will show correctly as: newsletter / email
However, you won't be able to:
- Distinguish between campaigns from the same source
- Track performance across different email sends
- Report ROI per campaign
Best practice: Always include all three:
?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale
FAQ
Can I use just utm_medium without utm_source?
No. GA4 requires BOTH utm_source AND utm_medium. Using only utm_medium creates the same orphaned parameter problem.
Will fixing this restore historical data?
No. Historical data remains as "(direct) / (none)". The fix only works for new sessions going forward. Consider annotating in GA4 when you fixed it.
What if I see "Unassigned" traffic but my URLs have both parameters?
Check these other causes:
- Double encoding:
utm_source=newsletterbecameutm%5Fsource=newsletter - Parameter order issues: Some platforms break if utm_source isn't first
- JavaScript stripping: Your site's code may be removing parameters
- Fragment before query:
#section?utm_source=...(should be?utm_source=...#section)
Can I use custom medium values?
Yes, but use GA4's standard channel grouping values when possible:
- organic, cpc, referral, email, affiliate, display, social, video, audio, sms, push
Custom values (like "newsletter" or "partner") work but may not map to GA4's default channel groups.
Does this affect Google Ads auto-tagging?
No. Google Ads uses gclid, which doesn't require utm_medium. This issue only affects manual UTM parameters.
Prevention Checklist
✅ Setup (one-time):
- Document: "utm_source AND utm_medium are both required"
- Update all UTM templates to include both parameters
- Configure email platform with default utm_medium=email
- Set up validation in UTM builder tools
✅ Before Every Campaign:
- Verify utm_source is present
- Verify utm_medium is present
- Test URL in incognito → Check GA4 Realtime
- Confirm traffic shows correct source/medium (not "(direct)")
✅ Monthly Audit:
- GA4 → Traffic Acquisition report
- Filter to "(direct) / (none)" or "Unassigned"
- Add secondary dimension: "Session source"
- Investigate any sources showing with "(none)" medium
- Find and fix campaign URLs missing utm_medium
Conclusion
Seeing "Unassigned" or "(direct) / (none)" traffic when you added utm_source?
You have orphaned parameters.
The fix:
- Add utm_medium to every URL with utm_source
- Use standard values: email, social, cpc, referral, display
- Test URLs before sending campaigns
- Configure defaults in email/social tools
utm_source without utm_medium is worthless. Always use both.
This 2-minute fix ensures every campaign you tag actually shows up in GA4 reports.