attribution-errorsUpdated 2025

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.

6 min readattribution-errors

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.

🚨 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:

Code
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:

  1. Receives the parameter
  2. Sees utm_medium is missing
  3. Can't determine channel grouping
  4. 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

Get Your Free Audit Report

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:

Code
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):

Code
?utm_source=newsletter
?utm_source=newsletter&utm_campaign=spring
?utm_source=facebook&utm_campaign=spring&utm_content=video

✅ Complete (has utm_medium):

Code
?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)

  1. GA4 → Reports → Traffic Acquisition
  2. Look for "(direct) / (none)" or "Unassigned"
  3. Click on the row
  4. Add secondary dimension: "Session source"
  5. 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)

  1. Create test URL: yoursite.com?utm_source=test
  2. Click it in incognito browser
  3. GA4 → Realtime report
  4. Check traffic source

If it shows as "(direct)" → Confirmed orphaned parameter issue.

The 2-Minute Fix

Before (orphaned):

Code
https://yoursite.com/page?utm_source=newsletter&utm_campaign=spring-sale

After (complete):

Code
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-social or utm_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.):

  1. Find default UTM settings
  2. Check if utm_medium is configured
  3. Add default: utm_medium=email
  4. Apply to all templates

For social scheduling tools (Buffer, Hootsuite, etc.):

  1. Check UTM builder settings
  2. Ensure utm_medium is always included
  3. Set default based on platform (social, paid-social)

For link shorteners (Bitly, etc.):

  1. Review campaign builder defaults
  2. Verify both utm_source AND utm_medium are required fields
  3. 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:

Code
utm_source=`{"{"}{"{"}source{"}"}{"}"}}`     ← REQUIRED
utm_medium=`{"{"}{"{"}medium{"}"}{"}"}}`     ← REQUIRED
utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}` ← RECOMMENDED

Never create URLs with only:

Code
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 post
  • utm_source=facebook&utm_medium=cpc → Paid ad
  • utm_source=google&utm_medium=organic → Search result
  • utm_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:

Code
yoursite.com?utm_source=newsletter&utm_medium=email&utm_campaign=april

You update it for the new campaign:

Code
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

Run Complete UTM Audit (Free Forever)

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:

Code
?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:

Code
?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:

  1. Double encoding: utm_source=newsletter became utm%5Fsource=newsletter
  2. Parameter order issues: Some platforms break if utm_source isn't first
  3. JavaScript stripping: Your site's code may be removing parameters
  4. 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:

  1. Add utm_medium to every URL with utm_source
  2. Use standard values: email, social, cpc, referral, display
  3. Test URLs before sending campaigns
  4. 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.


Related: UTM Parameter Requirements Documentation

UTM

Get Your Free Audit in 60 Seconds

Connect GA4, run the scan, and see exactly where tracking is leaking budget. No credit card required.

Trusted by growth teams and agencies to keep attribution clean.