Fix Email Medium Mismatch in 5 Minutes (Quick Guide)
Your email campaigns using wrong utm_medium? Here's the fastest way to fix it in every major ESP.
Quick diagnosis: Open your last email campaign. Click a link. Look at the URL.
If you see this:
?utm_source=newsletter&utm_medium=cpc
?utm_source=email&utm_medium=social
?utm_source=mailchimp&utm_medium=paid
You have an email medium mismatch. GA4 is categorizing your email traffic as Paid Search, Paid Social, or another wrong channel.
The correct format:
?utm_source=newsletter&utm_medium=email
?utm_source=mailchimp&utm_medium=email
?utm_source=campaign-name&utm_medium=email
This guide shows you how to fix it in 5 minutes across every major email platform.
Table of contents
- The Universal Fix (Works for Any ESP)
- One-Time Fix vs Every-Campaign Fix
- Fix for Each Major ESP
- Mailchimp
- SendGrid
- ActiveCampaign
- HubSpot
- Constant Contact
- Campaign Monitor
- Klaviyo
- ConvertKit
- Drip
- Transactional Emails (Postmark, SendGrid API, etc.)
- Verification: Did It Work?
- Test #1: Send Test Email (2 minutes)
- Test #2: Check GA4 Real-Time (30 seconds)
- Test #3: Check Historical Data (1 week later)
- What About Historical Data?
- Common Mistakes When Fixing
- Mistake #1: Only Fixing New Campaigns
- Mistake #2: Using Inconsistent Values
- Mistake #3: Forgetting Transactional Emails
- Mistake #4: Not Testing in Multiple Email Clients
- Prevention Checklist
- FAQ
- Can I use utmmedium=e-mail or email instead of email?
- What if I want to differentiate between different email types?
- My ESP doesn't have default UTM settings. What should I do?
- Will this fix affect my email deliverability?
- I have multiple brands using the same ESP. Should I use different utmsource values?
- How often should I audit my email UTMs?
- 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
The Universal Fix (Works for Any ESP)
The rule: Set utm_medium=email in ALL email campaigns.
Why? GA4's Default Channel Grouping uses utm_medium to categorize traffic:
utm_medium=email→ Email channel ✅utm_medium=cpc→ Paid Search ❌utm_medium=social→ Paid Social ❌utm_medium=paid→ Paid Search ❌
One-Time Fix vs Every-Campaign Fix
Most ESPs let you set default UTM parameters that apply to every email automatically. Fix it once, never worry again.
Platforms with default UTMs:
- Mailchimp ✅
- SendGrid ✅
- ActiveCampaign ✅
- HubSpot ✅
- Constant Contact ✅
- Campaign Monitor ✅
Platforms without defaults (manual per campaign):
- Some transactional email services
- Custom-built email systems
- Legacy email tools
Fix for Each Major ESP
Mailchimp
Time: 2 minutes
Step 1: Go to Account → Settings Step 2: Click Tracking in left sidebar Step 3: Scroll to Google Analytics link tracking Step 4: Toggle ON if not already enabled Step 5: Set default parameters:
utm_source: mailchimp
utm_medium: email
utm_campaign: (leave blank, set per campaign)
Step 6: Click Save
Result: All future Mailchimp campaigns will automatically use utm_medium=email.
Existing campaigns: You'll need to resend or update them manually.
SendGrid
Time: 2 minutes
Step 1: Settings → Tracking → Google Analytics Step 2: Enable Google Analytics tracking Step 3: Set global defaults:
utm_source: sendgrid
utm_medium: email
utm_campaign: (set per campaign in email builder)
Step 4: Click Save
Note: SendGrid applies these to all campaigns unless overridden in individual email settings.
ActiveCampaign
Time: 3 minutes
Step 1: Settings → Analytics & Goals Step 2: Click Google Analytics Step 3: Enable tracking and set defaults:
Domain: yourwebsite.com
utm_source: activecampaign
utm_medium: email
utm_campaign: %TITLE% (dynamic campaign name)
Step 4: Click Save Settings
Pro tip: Use ActiveCampaign's merge tags for dynamic values:
%TITLE%- Campaign title%LISTNAME%- Email list name
HubSpot
Time: 2 minutes
Step 1: Settings → Marketing → Email Step 2: Scroll to Tracking URL parameters Step 3: Enable Add tracking parameters to links Step 4: Configure:
utm_source: hubspot
utm_medium: email
utm_campaign: (HubSpot auto-fills from campaign name)
Step 5: Click Save
Note: HubSpot automatically uses the email's internal name for utm_campaign.
Constant Contact
Time: 2 minutes
Step 1: Account → Settings Step 2: Click Tracking Step 3: Enable Google Analytics Step 4: Set defaults:
utm_source: constantcontact
utm_medium: email
utm_campaign: (set per email)
Step 5: Save changes
Campaign Monitor
Time: 2 minutes
Step 1: Account settings → Google Analytics Step 2: Enable Link tracking Step 3: Set default UTMs:
utm_source: campaignmonitor
utm_medium: email
utm_campaign: (customizable per campaign)
Step 4: Save
Klaviyo
Time: 3 minutes
Step 1: Account → Settings → Integrations Step 2: Find Google Analytics Step 3: Enable and configure:
utm_source: klaviyo
utm_medium: email
utm_campaign: {{ campaign.name }} (dynamic)
Step 4: Click Connect
Pro tip: Klaviyo supports dynamic variables for super detailed tracking:
?utm_source=klaviyo&utm_medium=email&utm_campaign={{ campaign.name }}&utm_content={{ message.name }}
ConvertKit
Time: Manual per campaign (no global defaults)
In each email: Step 1: Broadcast or Sequence editor Step 2: Click link you want to track Step 3: Click Edit URL Step 4: Add UTM parameters manually:
?utm_source=convertkit&utm_medium=email&utm_campaign=newsletter-jan-2025
Step 5: Repeat for every link in every email
Tip: Create a saved snippet with your standard UTM format to speed this up.
Drip
Time: 2 minutes
Step 1: Settings → Tracking Step 2: Enable Google Analytics tracking Step 3: Set defaults:
utm_source: drip
utm_medium: email
utm_campaign: {{ campaign.name }}
Step 4: Save
Transactional Emails (Postmark, SendGrid API, etc.)
Time: Varies (depends on your email templates)
Step 1: Find your email templates
- Usually in code:
templates/emails/ - Or in admin panel: Email templates section
Step 2: Locate all links (CTA buttons, footer links)
Step 3: Update hardcoded UTMs:
Before:
<a href="https://yoursite.com/reset-password?utm_source=app&utm_medium=transactional">After:
<a href="https://yoursite.com/reset-password?utm_source=app&utm_medium=email&utm_campaign=password-reset">Step 4: Deploy updated templates
Step 5: Test with a triggered email (password reset, order confirmation, etc.)
😰 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
Verification: Did It Work?
Test #1: Send Test Email (2 minutes)
Step 1: Send a test email to yourself
Step 2: Click a link in the email
Step 3: Check the browser address bar
Step 4: Confirm you see utm_medium=email
✅ Good:
https://yoursite.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring
❌ Bad:
https://yoursite.com/sale?utm_source=newsletter&utm_medium=cpc&utm_campaign=spring
Test #2: Check GA4 Real-Time (30 seconds)
Step 1: After clicking test email link, open GA4 Step 2: Reports → Real-time Step 3: Look for your session Step 4: Verify:
- Source: Your ESP name (mailchimp, sendgrid, etc.)
- Medium: email
- Channel: Email
If you see:
- Source: (direct) → UTMs were stripped (see Layer 2-4 solutions in this guide)
- Medium: cpc → Fix didn't apply, check ESP settings again
Test #3: Check Historical Data (1 week later)
Step 1: GA4 → Reports → Traffic acquisition
Step 2: Date range: Last 7 days
Step 3: Primary dimension: Source / Medium
Step 4: Look for [your-esp] / email
Expected: All email traffic now correctly categorized as Email channel.
What About Historical Data?
Bad news: Historical data stays miscategorized. GA4 doesn't retroactively change past attribution.
Good news: Your fix applies to all future emails immediately.
Workaround for historical analysis:
- Create a GA4 annotation marking the fix date
- For historical reports, manually combine:
mailchimp / email(correct)mailchimp / cpc(miscategorized, pre-fix)
- Use date filters: "Before [fix date]" vs "After [fix date]"
Common Mistakes When Fixing
Mistake #1: Only Fixing New Campaigns
Problem: You set defaults but existing campaigns/templates still use old UTMs.
Fix: Audit existing:
- Email templates
- Saved campaigns
- Automation sequences
- Transactional emails
Mistake #2: Using Inconsistent Values
Problem:
Email 1: utm_medium=email
Email 2: utm_medium=e-mail
Email 3: utm_medium=newsletter
Fix: Pick ONE standard: utm_medium=email (most common).
Mistake #3: Forgetting Transactional Emails
Problem: Marketing emails fixed, but password resets, order confirmations, shipping updates still use wrong UTMs.
Fix: Check transactional email templates separately (often different system).
Mistake #4: Not Testing in Multiple Email Clients
Problem: Works in Gmail web, but stripped in Outlook mobile.
Fix: Test in:
- Gmail (web + mobile app)
- Outlook (web + mobile app)
- Yahoo Mail
- Apple Mail
Prevention Checklist
✅ Set utm_medium=email as default in your ESP ✅ Update existing email templates with correct UTMs ✅ Fix transactional email UTMs (often forgotten) ✅ Test with a real email send before major campaigns ✅ Verify in GA4 real-time report ✅ Document UTM standards for new team members ✅ Quarterly audit to catch new templates/campaigns
✅ 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
Can I use utm_medium=e-mail or e_mail instead of email?
Yes, GA4 recognizes all three: email, e-mail, e_mail. But email is the industry standard and shortest.
What if I want to differentiate between different email types?
Use utm_campaign or utm_source for differentiation, never utm_medium:
Newsletters:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest
Promotions:
?utm_source=promo&utm_medium=email&utm_campaign=flash-sale
Transactional:
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirm
My ESP doesn't have default UTM settings. What should I do?
Create a UTM template document for your team:
# Email UTM Standard
ALL email links must include:
?utm_source=[esp-name]&utm_medium=email&utm_campaign=[campaign-name]
Examples:
Newsletter: ?utm_source=convertkit&utm_medium=email&utm_campaign=weekly-jan-9
Promo: ?utm_source=convertkit&utm_medium=email&utm_campaign=spring-sale-2025Then manually add to each campaign (copy/paste from template).
Will this fix affect my email deliverability?
No. UTM parameters are added to links inside your email, not to the email headers. They don't affect spam scores or deliverability.
I have multiple brands using the same ESP. Should I use different utm_source values?
Yes! Use brand-specific sources:
Brand A: ?utm_source=newsletter-brandA&utm_medium=email&utm_campaign=jan-sale
Brand B: ?utm_source=newsletter-brandB&utm_medium=email&utm_campaign=jan-sale
This lets you compare email performance across brands in GA4.
How often should I audit my email UTMs?
Quarterly. Email systems change:
- New templates added
- New team members create campaigns
- ESP settings reset after platform updates
Run a 15-minute audit every 3 months to catch drift.
Conclusion
Email campaigns using wrong utm_medium? Fix it in 5 minutes:
- Go to your ESP's analytics/tracking settings
- Set utm_medium=email as the default
- Update existing templates
- Test with a real email send
- Verify in GA4 real-time reports
This single fix ensures GA4 correctly categorizes all your email traffic as "Email" channel instead of misattributing it to Paid Search, Paid Social, or Direct.
Related: Email Tracking UTM Best Practices