best-practicesUpdated 2025

Why utm_medium=email is Critical for Email Campaigns

GA4 relies on utm_medium to categorize traffic. Here's why email campaigns MUST use utm_medium=email.

7 min readbest-practices

Picture this: You're in a marketing review meeting. Your CMO asks: "How much revenue did email drive last quarter?"

You pull up GA4. The "Email" channel shows $15,000 in revenue.

But the real number is $45,000.

Why? Because two-thirds of your email traffic is being categorized as:

  • "Paid Search" (because you used utm_medium=cpc)
  • "Direct" (because UTMs got stripped)
  • "Social" (because you copied social UTMs into email campaigns)

This fundamental misattribution happens when email campaigns don't use utm_medium=email. And it costs businesses millions in misallocated budget every year.

🚨 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

How GA4 Channel Grouping Works

GA4 uses Default Channel Grouping to categorize all traffic into channels. This grouping is based primarily on utm_medium (and sometimes utm_source).

GA4's Channel Grouping Logic (Simplified)

Code
IF utm_medium = "email" OR "e-mail" OR "e_mail"
  → Channel = Email

ELSE IF utm_medium contains "cpc" OR "ppc" OR "paidsearch"
  → Channel = Paid Search

ELSE IF utm_medium = "organic"
  → Channel = Organic Search

ELSE IF utm_medium contains "social" OR "social-network"
  → Channel = Paid Social

ELSE IF utm_medium = "display" OR "banner"
  → Channel = Display

ELSE IF utm_medium = "referral"
  → Channel = Referral

ELSE IF utm_source is NOT set AND utm_medium is NOT set
  → Channel = Direct

ELSE
  → Channel = Unassigned

The key insight: utm_medium is the primary determinant. If you use the wrong value, your traffic gets miscategorized.

What Happens When You Use the Wrong utm_medium

Scenario 1: Using utm_medium=cpc for Email

Your UTM setup:

Code
?utm_source=newsletter&utm_medium=cpc&utm_campaign=spring-sale

What GA4 thinks: "This is a Paid Search click (because medium=cpc)"

Result:

  • ❌ Traffic shows in "Paid Search" channel
  • ❌ Email metrics invisible in "Email" channel
  • ❌ Paid Search metrics inflated (includes free email clicks)
  • ❌ Cost per click artificially low (email clicks are free)
  • ❌ Budget decisions based on wrong data

Scenario 2: Using utm_medium=social for Email

Your UTM setup:

Code
?utm_source=mailchimp&utm_medium=social&utm_campaign=product-launch

What GA4 thinks: "This is Paid Social traffic"

Result:

  • ❌ Traffic shows in "Paid Social" channel
  • ❌ Email performance hidden
  • ❌ Social channel metrics inflated
  • ❌ Can't compare email vs social accurately

Scenario 3: Using utm_medium=newsletter

Your UTM setup:

Code
?utm_source=mailchimp&utm_medium=newsletter&utm_campaign=weekly-digest

What GA4 thinks: "This is... unrecognized. Put it in 'Unassigned'"

Result:

  • ❌ Traffic shows as "Unassigned" (or sometimes "Other")
  • ❌ Email performance completely invisible
  • ❌ No way to compare email to other channels

Scenario 4: No UTMs at All (or UTMs Stripped)

Your link:

Code
https://yoursite.com/sale
(no UTM parameters)

What GA4 thinks: "No tracking info. This is Direct traffic."

Result:

  • ❌ Traffic shows as "Direct"
  • ❌ Email campaigns get no credit
  • ❌ Direct traffic artificially inflated
  • ❌ True direct traffic (bookmarks, typing URL) mixed with email

😰 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: $120,000 Budget Misallocation

Client: E-commerce fashion brand Email list: 200,000 subscribers Monthly email sends: 12 campaigns Problem: Using utm_medium=cpc for all email campaigns

What GA4 Showed (Quarterly Report):

ChannelSessionsRevenueROAS
Paid Search45,000$180,0006.0x
Email0$0N/A
Direct30,000$90,000N/A

Decision made: "Paid Search is our best channel! Increase budget from $30k/month to $60k/month."

The Reality (After UTM Fix):

ChannelSessionsRevenueROAS
Paid Search20,000$60,0002.0x
Email25,000$120,000∞ (organic channel)
Direct18,000$45,000N/A

What actually happened:

  • 55% of "Paid Search" sessions were actually from email
  • Email was driving 2x the revenue of Paid Search
  • Paid Search ROAS wasn't 6.0x—it was 2.0x
  • Email was the best performing channel (free traffic!)

The cost of the mistake:

  • $360,000 overspent on Paid Search (annual overinvestment)
  • $120,000 underinvestment in email (missed opportunity)
  • Total impact: $480,000 misallocation

After the fix, they cut Paid Search budget by 50% and tripled email sends. Revenue increased 35% with the same total marketing budget.

Why "email" Is the Only Accepted Value

GA4 recognizes these utm_medium values for Email channel grouping:

emaile-maile_mail

Industry standard: email (shortest, most common)

Why not use custom values like "newsletter" or "mailchimp"?

Because GA4's Default Channel Grouping won't recognize them. Your traffic will show as:

  • "Unassigned" channel (can't compare to other channels)
  • "Other" (mixed with miscellaneous traffic)
  • Lost in reports (invisible to standard channel analysis)

The rule: If you want GA4 to categorize your email traffic as "Email," you MUST use one of the three accepted values above.

The Anatomy of a Correct Email UTM

Standard Format

Code
?utm_source=`{"{"}{"{"}source{"}"}{"}"}}`&utm_medium=email&utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}`

Examples (All Correct)

Newsletter:

Code
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-jan-2025

Promotional campaign:

Code
?utm_source=mailchimp&utm_medium=email&utm_campaign=spring-sale-2025

Transactional email:

Code
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirmation

Drip sequence:

Code
?utm_source=klaviyo&utm_medium=email&utm_campaign=trial-day3-upgrade-offer

Event invitation:

Code
?utm_source=events&utm_medium=email&utm_campaign=webinar-seo-jan-15

What to Put in utm_source

You have flexibility here. Common approaches:

Option 1: ESP name

Code
utm_source=mailchimp
utm_source=sendgrid
utm_source=klaviyo

Option 2: Email type

Code
utm_source=newsletter
utm_source=promo
utm_source=transactional

Option 3: Campaign category

Code
utm_source=customer-nurture
utm_source=lead-generation
utm_source=retention

Our recommendation: Use campaign type (Option 2) unless you use multiple ESPs and need to compare their performance.

What to Put in utm_campaign

Be specific and descriptive:

Code
✅ Good:
utm_campaign=spring-sale-2025-03-15
utm_campaign=product-launch-widget-pro
utm_campaign=black-friday-early-access-vip

❌ Bad:
utm_campaign=promo
utm_campaign=campaign1
utm_campaign=test

Naming format we recommend:

Code
`{"{"}{"{"}type{"}"}{"}"}}`-`{"{"}{"{"}name{"}"}{"}"}}`-`{"{"}{"{"}date{"}"}{"}"}}`

Examples:
sale-spring-clearance-2025-03
webinar-advanced-seo-jan-15
newsletter-weekly-digest-w02-2025

How to Verify Your Email Tracking

Test 1: Check Your UTMs (30 seconds)

Step 1: Send yourself a test email Step 2: Click a link Step 3: Check the browser address bar Step 4: Confirm you see utm_medium=email

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

❌ Wrong:
https://yoursite.com/sale?utm_source=newsletter&utm_medium=cpc&utm_campaign=spring

Test 2: GA4 Real-Time Report (1 minute)

Step 1: After clicking test email, open GA4 Step 2: Reports → Real-time Step 3: Look for your session Step 4: Verify:

  • Source: newsletter (or your ESP name)
  • Medium: email
  • Campaign: [your-campaign-name]

If you see:

  • Medium: cpc → Fix your ESP UTM settings
  • Medium: (none) → UTMs were stripped (see solutions here)

Test 3: GA4 Traffic Acquisition Report (After Campaign Send)

Step 1: GA4 → Reports → Traffic acquisition Step 2: Date range: Last 7 days Step 3: Look for "Email" in channel list Step 4: Click to see all email sources

Expected: All your email campaigns grouped under "Email" channel with consistent utm_medium=email.

Common Mistakes and How to Fix Them

Mistake #1: Copying Paid Ad UTMs into Email

Wrong:

Code
Google Ads UTM: ?utm_source=google&utm_medium=cpc&utm_campaign=shoes
Email using same: ?utm_source=newsletter&utm_medium=cpc&utm_campaign=shoes

Why it's wrong: Email traffic will show as Paid Search.

Fix: Always use utm_medium=email for email campaigns:

Code
?utm_source=newsletter&utm_medium=email&utm_campaign=shoes-sale

Mistake #2: Using ESP Name as Medium

Wrong:

Code
?utm_source=campaign&utm_medium=mailchimp&utm_campaign=sale

Why it's wrong: GA4 doesn't recognize "mailchimp" as Email channel.

Fix: Put ESP in source, not medium:

Code
?utm_source=mailchimp&utm_medium=email&utm_campaign=sale

Mistake #3: Inconsistent Medium Values

Wrong:

Code
Email 1: utm_medium=email
Email 2: utm_medium=e-mail
Email 3: utm_medium=newsletter
Email 4: utm_medium=e_mail

Why it's wrong: While email, e-mail, and e_mail all work, mixing them fragments your data. And newsletter doesn't work at all.

Fix: Pick ONE standard and use it everywhere:

Code
utm_medium=email (recommended)

Mistake #4: No UTMs on Transactional Emails

Missed tracking:

  • Password reset links
  • Order confirmations
  • Shipping notifications
  • Account alerts

Fix: Add UTMs to transactional emails too:

Code
?utm_source=transactional&utm_medium=email&utm_campaign=password-reset
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirm

What About Other Email Use Cases?

SMS Campaigns

Don't use utm_medium=email.

Use utm_medium=sms:

Code
?utm_source=twilio&utm_medium=sms&utm_campaign=flash-sale-text

GA4 will create a separate "SMS" channel.

Push Notifications

Use utm_medium=push:

Code
?utm_source=onesignal&utm_medium=push&utm_campaign=cart-reminder

In-App Messages

Use utm_medium=app or utm_medium=in-app:

Code
?utm_source=intercom&utm_medium=app&utm_campaign=upgrade-prompt

The pattern: Each messaging channel should have its own utm_medium value for proper channel grouping in GA4.

Prevention Checklist

✅ Set utm_medium=email as default in your ESP ✅ Audit all existing email templates (marketing + transactional) ✅ Update automation/drip sequences ✅ Test with real email send before major campaigns ✅ Verify in GA4 real-time reports ✅ Train team on email UTM standards ✅ Document standards in team wiki/playbook ✅ Review quarterly for compliance

✅ 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

Can I use utm_medium=e-mail with a hyphen?

Yes! GA4 recognizes email, e-mail, and e_mail. All three work. But email is the shortest and most common.

What if I want to differentiate between promotional and transactional emails?

Use utm_source or utm_campaign for differentiation, NOT utm_medium:

Code
Promotional:
?utm_source=promo&utm_medium=email&utm_campaign=spring-sale

Transactional:
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirm

Both show in "Email" channel, but you can filter/segment by source or campaign in GA4 reports.

Will this change affect my historical data?

No. Historical data remains as-is. The fix applies to future email traffic only. Consider adding a GA4 annotation marking the change date for future reference.

I use multiple ESPs (Mailchimp for newsletters, Klaviyo for drips). How should I track them?

Option 1: ESP in source

Code
Mailchimp: ?utm_source=mailchimp&utm_medium=email&utm_campaign=weekly
Klaviyo: ?utm_source=klaviyo&utm_medium=email&utm_campaign=drip-day1

Option 2: ESP in content

Code
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly&utm_content=mailchimp
?utm_source=drip&utm_medium=email&utm_campaign=onboarding-day1&utm_content=klaviyo

We recommend Option 1 for easier ESP performance comparison.

What if my ESP doesn't let me set default UTM parameters?

Create a UTM template document and manually add to each campaign:

Code
Standard Email UTM Template:
?utm_source=[campaign-type]&utm_medium=email&utm_campaign=[descriptive-name]

Copy/paste this into every email campaign.

Does utm_medium=email affect email deliverability?

No. UTM parameters are added to links inside your email content, not to email headers. They don't affect spam scores, deliverability, or inbox placement.

Conclusion

Why utm_medium=email is critical:

  1. GA4 channel grouping depends on it - Without utm_medium=email, your traffic gets miscategorized
  2. Budget decisions rely on accurate data - Misattribution leads to budget misallocation
  3. Channel comparison becomes possible - Compare email vs paid vs organic accurately
  4. Email ROI becomes visible - Prove email's value to stakeholders

The fix:

  1. Set utm_medium=email as default in your ESP
  2. Update all existing email templates (including transactional)
  3. Test before sending
  4. Verify in GA4 real-time reports
  5. Monitor monthly for compliance

This single parameter change ensures GA4 correctly categorizes your email traffic and gives you accurate channel performance data for optimization.


Related: Complete Email Tracking Best Practices Guide

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.