Why Your Email Campaigns Show as Direct Traffic in GA4
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:
- User clicks link in Gmail
- Gmail routes through their link scanner (
google.com/url?q=...) - Link redirects to your site
- UTM parameters stripped during redirect
- 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 Client | UTM 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 Mail | Occasional stripping via link protection |
| Apple Mail (iOS 15+) | Mail Privacy Protection hides opens, but clicks usually preserve UTMs |
| ProtonMail | Generally 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:
- Email campaign ROI visibility - Can't measure which campaigns convert
- Channel comparison - Email undervalued vs paid/organic
- Budget justification - "Direct" gets credit for email's conversions
- A/B test results - Can't tell which email variant performed better
- 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
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:
- Create duplicate landing page or use dynamic routing
- Page slug =
{campaign-type}-email-{month-year} - 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:
- Create custom dimension:
email_click_id - Configure to capture
eidURL parameter - 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:
- If UTM present → use UTM
- If no UTM but referrer is
mail.google.com→ categorize as Email - 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:
- Email link includes unique hash:
?ref=email_spring2025_user123 - Server intercepts request, logs in database
- Server sets first-party cookie with campaign data
- 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:
- Send test email to Gmail account
- Click link from Gmail web client
- Check GA4 real-time report within 30 seconds
- 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
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)
Will short links (bit.ly) help?
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):
- Always add UTM parameters (captures 40-80% of traffic)
- Use unique landing pages (captures 100% by URL pattern)
- Add email click IDs (backup tracking)
- Configure custom channel grouping for email referrers
- 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.