best-practicesUpdated 2025

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.

6 min readbest-practices

Quick diagnosis: Open your last email campaign. Click a link. Look at the URL.

If you see this:

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

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

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

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

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

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

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

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

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

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

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

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

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

Html
<a href="https://yoursite.com/reset-password?utm_source=app&utm_medium=transactional">

After:

Html
<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

Get Your Free Audit Report

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

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

  1. Create a GA4 annotation marking the fix date
  2. For historical reports, manually combine:
    • mailchimp / email (correct)
    • mailchimp / cpc (miscategorized, pre-fix)
  3. 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:

Code
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

Run Complete UTM Audit (Free Forever)

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:

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

Markdown
# 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-2025

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

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

  1. Go to your ESP's analytics/tracking settings
  2. Set utm_medium=email as the default
  3. Update existing templates
  4. Test with a real email send
  5. 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

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.