Why Your Email Campaigns Show as Direct Traffic in GA4

UTMGuard Team
8 min readbest-practices

You just sent a perfectly tagged email campaign to 10,000 subscribers:

https://yoursite.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale

Your ESP shows 2,000 clicks. Great!

You open GA4 to see the results...

Source/Medium: (direct) / (none) Channel: Direct

Wait. How did 2,000 email clicks become Direct traffic? You added UTM parameters. You tested the link. Everything looked perfect.

Welcome to the frustrating world of email privacy features that strip your UTM parameters before users even reach your website.

🚨 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

Why This Happens: Email Clients Strip UTMs for Privacy

Modern email providers (Gmail, Outlook, Yahoo, Apple Mail) increasingly prioritize user privacy. One way they do this is by removing or altering tracking parameters from links in emails.

How UTM Stripping Works:

What you send:

https://yoursite.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale

What the email client does:

  1. User clicks link in Gmail
  2. Gmail routes through their link scanner (google.com/url?q=...)
  3. Link redirects to your site
  4. UTM parameters stripped during redirect
  5. User arrives at your site with no tracking data

What reaches your site:

https://yoursite.com/sale

What GA4 records:

  • Source: (direct)
  • Medium: (none)
  • Campaign: (not set)

Which Email Clients Strip UTMs?

Email ClientUTM Stripping Behavior
Gmail (web)Sometimes strips, especially with link scanning
Gmail (iOS app)Frequently strips after safety checks
Outlook (web)Intermittent stripping via SafeLinks
Outlook (mobile)Strips when ATP (Advanced Threat Protection) enabled
Yahoo MailOccasional stripping via link protection
Apple Mail (iOS 15+)Mail Privacy Protection hides opens, but clicks usually preserve UTMs
ProtonMailGenerally preserves UTMs

The pattern: The more aggressive the privacy/security feature, the more likely UTMs get stripped.

What This Breaks

When email traffic appears as Direct, you lose:

  1. Email campaign ROI visibility - Can't measure which campaigns convert
  2. Channel comparison - Email undervalued vs paid/organic
  3. Budget justification - "Direct" gets credit for email's conversions
  4. A/B test results - Can't tell which email variant performed better
  5. Lifecycle tracking - Nurture sequences invisible in analytics

😰 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: $25,000 Email Budget Nearly Eliminated

Client: B2B SaaS company Email list: 75,000 subscribers Monthly email sends: 8 campaigns Attribution: 60% of email traffic showing as Direct

What The CMO Saw:

  • Email: 2,000 sessions, 40 conversions (CPA: $100)
  • Direct: 8,000 sessions, 180 conversions (CPA: $0)
  • Paid Search: 5,000 sessions, 100 conversions (CPA: $80)

Decision proposed: "Direct traffic converts better than Email. Let's cut the email budget and invest in Paid Search."

The Reality (After Investigation):

Of the 8,000 "Direct" sessions:

  • 5,000 were actually from email (63%)
  • 2,000 were truly direct (bookmarks, typing URL)
  • 1,000 were from other sources

Actual email performance:

  • 7,000 sessions (2,000 tracked + 5,000 untracked)
  • 220 conversions (40 tracked + 180 untracked)
  • CPA: $45 (best channel!)

The fix: Implemented proper email tracking (explained below). Email budget increased by $15,000/month instead of being cut by $25,000/month.

The Solution: Multi-Layered Email Tracking

Since you can't control email client behavior, you need redundant tracking methods to capture email traffic even when UTMs get stripped.

Layer 1: Always Use utm_medium=email (Required)

Even though UTMs sometimes get stripped, ALWAYS include them:

?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale-2025

Why? When UTMs DO make it through (40-80% of the time), GA4 correctly categorizes the traffic.

Layer 2: Add Email-Specific Landing Pages

Create unique landing pages for each email campaign:

Instead of:

❌ https://yoursite.com/sale?utm_source=newsletter&utm_medium=email

Use:

✅ https://yoursite.com/sale-email-jan2025

Now GA4 can identify email traffic by page URL even if UTMs are stripped.

Implementation:

  1. Create duplicate landing page or use dynamic routing
  2. Page slug = {campaign-type}-email-{month-year}
  3. Track in GA4 via Landing Page report

Layer 3: Use Email Click IDs (Advanced)

Add a unique identifier that tracks individual email clicks:

https://yoursite.com/sale?eid=abc123&utm_source=newsletter&utm_medium=email&utm_campaign=spring

The eid parameter:

  • Stands for "Email ID" (or use email_id, click_id, etc.)
  • Less likely to be stripped (not a standard tracking param)
  • Captured even if UTMs are removed
  • Tie to your ESP's click tracking data

Setup in GA4:

  1. Create custom dimension: email_click_id
  2. Configure to capture eid URL parameter
  3. Match with ESP click data for attribution

Layer 4: Use HTTP Referrer Tagging

Some email clients preserve the referrer header even when stripping UTMs.

Common referrers from email:

  • mail.google.com (Gmail web)
  • outlook.office365.com (Outlook web)
  • mail.yahoo.com (Yahoo)

GA4 attribution logic:

  1. If UTM present → use UTM
  2. If no UTM but referrer is mail.google.com → categorize as Email
  3. If no UTM and no referrer → Direct

Setup in GA4:

Create custom channel grouping:
- IF referrer contains "mail.google.com" OR "outlook" OR "yahoo"
- AND source/medium = (direct)/(none)
- THEN channel = Email (Untagged)

Layer 5: Server-Side Tracking (Most Reliable)

For critical campaigns, implement server-side tracking:

How it works:

  1. Email link includes unique hash: ?ref=email_spring2025_user123
  2. Server intercepts request, logs in database
  3. Server sets first-party cookie with campaign data
  4. GA4 reads cookie for attribution

Benefit: Immune to email client stripping (server sees the full original URL).

Step-by-Step Fix

For Small Businesses (Layers 1-2):

Step 1: Update all email templates with correct UTMs

?utm_source=newsletter&utm_medium=email&utm_campaign=`{campaign-name}`

Step 2: Create unique landing pages for major campaigns

/spring-sale → /spring-sale-email
/webinar-signup → /webinar-email-jan

Step 3: Track by Landing Page in GA4

  • Reports → Engagement → Landing page
  • Filter by pages containing "-email"

For Medium Businesses (Layers 1-3):

Add Step 4: Implement email click IDs

In your ESP (Mailchimp example):

Merge tags: *|UNIQID|* (unique per recipient)

Link format:
https://yoursite.com/sale?eid=*|UNIQID|*&utm_source=mailchimp&utm_medium=email&utm_campaign=spring

In GA4:

  • Admin → Data display → Custom definitions
  • Create dimension: email_click_id → Parameter: eid

For Enterprise (All Layers):

Add Step 5: Implement custom channel grouping for referrer-based attribution

GA4 Admin → Data display → Channel groups:

Create rule:

Channel name: Email (Untagged Gmail)
Conditions:
- Session source exactly matches (direct)
- Session manual medium exactly matches (none)
- Page referrer contains mail.google.com

Verification & Testing

Test Before Sending:

  1. Send test email to Gmail account
  2. Click link from Gmail web client
  3. Check GA4 real-time report within 30 seconds
  4. Verify source/medium appears (or note if stripped)

Test with multiple clients:

  • Gmail (web and mobile app)
  • Outlook (web and mobile app)
  • Yahoo Mail
  • Apple Mail (iOS)

Expected results: 40-80% preserve UTMs, 20-60% strip them.

Ongoing monitoring:

Run monthly report in GA4:

Dimensions: Landing page, Source/medium
Segments: Traffic with "/email" in URL but source = (direct)

This shows how much email traffic is being misattributed.

Prevention Checklist

✅ Always use utm_medium=email in email links ✅ Create unique landing pages for major email campaigns ✅ Consider email click IDs (eid parameter) for large sends ✅ Set up custom channel grouping for email referrers ✅ Test links in multiple email clients before sending ✅ Monitor Direct traffic for email landing page URLs ✅ Document email tracking strategy for your team

✅ 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

FAQ

Why do email clients strip UTM parameters?

Privacy and security. Email providers scan links for malware and phishing. During this process, they sometimes remove tracking parameters to protect user privacy and prevent sophisticated tracking techniques.

Can I prevent email clients from stripping UTMs?

No. You can't control the email client's behavior. The solution is redundant tracking (unique landing pages, click IDs, referrer analysis) so you still capture the data even when UTMs are lost.

Does this affect all email campaigns equally?

No. Stripping rates vary by:

  • Email client (Gmail strips more than ProtonMail)
  • Device (mobile apps strip more than web)
  • User settings (security-conscious users enable more protections)
  • Email content (promotional emails flagged more than transactional)

How much email traffic typically gets misattributed?

Industry averages:

  • 20-30% for B2C (consumer email clients with aggressive privacy)
  • 10-20% for B2B (corporate email with less aggressive stripping)
  • Up to 50% for iOS Gmail app users (most aggressive)

Sometimes, but not recommended. Short links:

  • ✅ May bypass some stripping (redirect happens after email client check)
  • ❌ Lose user trust (hidden destination)
  • ❌ Another point of failure (URL shortener downtime)
  • ❌ Slower (extra redirect)

Better to use unique landing pages.

What about email open tracking? Is that affected too?

Yes! Email open tracking (invisible tracking pixels) is heavily impacted by privacy features:

  • Apple Mail Privacy Protection (iOS 15+): Pre-loads all images, making open tracking unreliable
  • Gmail image proxying: Caches images, distorts open timing

Result: Open rates are increasingly unreliable. Focus on click tracking and conversions instead.

Conclusion

Email campaigns showing as Direct traffic? Modern email clients strip UTM parameters for user privacy.

The solution (multi-layered approach):

  1. Always add UTM parameters (captures 40-80% of traffic)
  2. Use unique landing pages (captures 100% by URL pattern)
  3. Add email click IDs (backup tracking)
  4. Configure custom channel grouping for email referrers
  5. Consider server-side tracking for critical campaigns

You can't prevent UTM stripping, but you can build tracking resilience so your email campaigns get proper attribution even when UTMs are stripped.


Related: Email Source Medium Mismatch Documentation