Email Campaign Tracking: Complete UTM Best Practices Guide
Master email UTM tracking with this comprehensive guide covering ESPs, automation, A/B testing, and GA4 attribution.
You're sending thousands of emails every month. Newsletters, promotions, abandoned carts, product updates. But when you look at GA4, your email data is a mess:
- Some emails show as "Email" channel ✅
- Others appear as "Direct" ❌
- A few show up as "Paid Search" ❌❌
- Campaign names are inconsistent
- Can't compare performance across email types
- No idea which subject lines or CTAs drive conversions
Sound familiar?
This guide gives you a complete, copy-paste-ready UTM tracking framework for email campaigns that works across every major ESP and ensures clean, consistent GA4 data.
Table of contents
- The Email UTM Framework (Copy This)
- Core Rule: The 3 Required Parameters
- Optional (But Recommended) Parameters
- Email UTM Naming Standards
- Standard Format
- Naming Conventions: Do's and Don'ts
- UTM Strategy by Email Type
- 1. Regular Newsletters
- 2. Promotional Campaigns
- 3. Drip/Nurture Campaigns
- 4. Transactional Emails
- 5. Event Invitations / Webinars
- 6. Product Updates / Announcements
- Advanced: A/B Testing Email Campaigns
- Use utmcontent to Track Variants
- GA4 A/B Test Analysis
- Advanced: Audience Segmentation with utmterm
- Track Which Audience Segment Converts Best
- GA4 Segment Performance Analysis
- ESP-Specific Setup (Quick Reference)
- Mailchimp
- SendGrid
- Klaviyo
- HubSpot
- ActiveCampaign
- Link-Level UTM Customization
- When to Use Different UTMs for Links Within the Same Email
- Common Email UTM Mistakes to Avoid
- Mistake #1: Using utmmedium=newsletter
- Mistake #2: Inconsistent Capitalization
- Mistake #3: Forgetting Transactional Emails
- Mistake #4: Not Encoding Special Characters
- Mistake #5: Using Generic Campaign Names
- GA4 Custom Reports for Email Performance
- Report 1: Email Campaign Performance Dashboard
- Report 2: Email Link Performance (CTA Analysis)
- Report 3: Email Audience Segment Performance
- Prevention & Maintenance Checklist
- FAQ
- Should I use utmsource=mailchimp or utmsource=newsletter?
- Do I need UTMs on transactional emails?
- Can I use different utmmedium values for different email types?
- What if my ESP auto-generates campaign names?
- How often should I audit my email UTM setup?
- Should I track email opens with 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 Email UTM Framework (Copy This)
Core Rule: The 3 Required Parameters
EVERY email link must include these 3 UTM parameters:
?utm_source=`{"{"}{"{"}source{"}"}{"}"}}`&utm_medium=email&utm_campaign=`{"{"}{"{"}campaign{"}"}{"}"}}`
Parameter definitions:
| Parameter | What It Tracks | Example Values |
|---|---|---|
utm_source | Email platform OR campaign type | mailchimp, newsletter, drip, transactional |
utm_medium | Traffic type (ALWAYS "email") | email (never change this!) |
utm_campaign | Specific campaign identifier | spring-sale-2025-01, weekly-digest-jan-9 |
Optional (But Recommended) Parameters
| Parameter | When to Use | Example Values |
|---|---|---|
utm_content | A/B testing, link differentiation | cta-button, footer-link, hero-image |
utm_term | Audience segmentation | vip-customers, trial-users, lapsed-buyers |
Email UTM Naming Standards
Standard Format
?utm_source=`{"{"}{"{"}platform{"}"}{"}"}}`&utm_medium=email&utm_campaign=`{"{"}{"{"}type{"}"}{"}"}}`-`{"{"}{"{"}name{"}"}{"}"}}`-`{"{"}{"{"}date{"}"}{"}"}}`
Examples:
Weekly Newsletter:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-2025-01-09
Promotional Campaign:
?utm_source=mailchimp&utm_medium=email&utm_campaign=spring-sale-2025-01
Abandoned Cart Recovery:
?utm_source=klaviyo&utm_medium=email&utm_campaign=cart-recovery-day1
Product Announcement:
?utm_source=newsletter&utm_medium=email&utm_campaign=product-launch-widget-pro
Transactional (Order Confirmation):
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirmation
Naming Conventions: Do's and Don'ts
DO:
- Use lowercase (GA4 is case-sensitive: "Spring" ≠ "spring")
- Use hyphens instead of spaces (
spring-salenotspring sale) - Include dates for time-bound campaigns (
jan-2025or2025-01) - Be descriptive (
flash-sale-shoes-30offnotpromo) - Keep consistent across campaigns
DON'T:
- Use spaces (breaks URLs, requires encoding)
- Use special characters (
&,=,?,#) - Mix uppercase and lowercase
- Use generic names (
campaign1,promo,test) - Change naming format mid-year
UTM Strategy by Email Type
1. Regular Newsletters
Frequency: Weekly, bi-weekly, or monthly
UTM Format:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-`{"{"}{"{"}date{"}"}{"}"}}`
Example:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-2025-01-09
Pro tip: Include week number for easy comparison:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-w02-2025
2. Promotional Campaigns
Use case: Sales, discounts, limited-time offers
UTM Format:
?utm_source=`{"{"}{"{"}platform{"}"}{"}"}}`&utm_medium=email&utm_campaign=`{sale-type}`-`{"{"}{"{"}product{"}"}{"}"}}`-`{"{"}{"{"}date{"}"}{"}"}}`
Examples:
Spring Sale:
?utm_source=mailchimp&utm_medium=email&utm_campaign=spring-sale-2025-03
Black Friday:
?utm_source=klaviyo&utm_medium=email&utm_campaign=black-friday-2025
Flash Sale (24hr):
?utm_source=sendgrid&utm_medium=email&utm_campaign=flash-sale-jan-9-2025
3. Drip/Nurture Campaigns
Use case: Onboarding, trial sequences, re-engagement
UTM Format:
?utm_source=`{"{"}{"{"}platform{"}"}{"}"}}`&utm_medium=email&utm_campaign=`{"{"}{"{"}sequence{"}"}{"}"}}`-{day/email-number}
Examples:
Trial onboarding:
?utm_source=drip&utm_medium=email&utm_campaign=trial-onboarding-day1
?utm_source=drip&utm_medium=email&utm_campaign=trial-onboarding-day3
?utm_source=drip&utm_medium=email&utm_campaign=trial-onboarding-day7
Re-engagement:
?utm_source=activecampaign&utm_medium=email&utm_campaign=win-back-email1
?utm_source=activecampaign&utm_medium=email&utm_campaign=win-back-email2
4. Transactional Emails
Use case: Order confirmations, password resets, shipping updates
UTM Format:
?utm_source=transactional&utm_medium=email&utm_campaign=`{email-type}`
Examples:
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirmation
?utm_source=transactional&utm_medium=email&utm_campaign=password-reset
?utm_source=transactional&utm_medium=email&utm_campaign=shipping-notification
Pro tip: Add &utm_content={order-id} for order-specific tracking:
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirmation&utm_content=order-12345
5. Event Invitations / Webinars
UTM Format:
?utm_source=events&utm_medium=email&utm_campaign=`{event-name}`-`{"{"}{"{"}date{"}"}{"}"}}`
Examples:
?utm_source=events&utm_medium=email&utm_campaign=webinar-seo-strategies-jan-15
?utm_source=events&utm_medium=email&utm_campaign=conference-2025-registration
6. Product Updates / Announcements
UTM Format:
?utm_source=newsletter&utm_medium=email&utm_campaign=product-`{"{"}{"{"}feature{"}"}{"}"}}`-announcement
Examples:
?utm_source=newsletter&utm_medium=email&utm_campaign=product-ai-integration-launch
?utm_source=newsletter&utm_medium=email&utm_campaign=feature-dark-mode-announcement
😰 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
Advanced: A/B Testing Email Campaigns
Use utm_content to Track Variants
Subject Line A/B Test:
Variant A:
?utm_source=newsletter&utm_medium=email&utm_campaign=jan-sale&utm_content=subject-a
Variant B:
?utm_source=newsletter&utm_medium=email&utm_campaign=jan-sale&utm_content=subject-b
CTA Button A/B Test:
Button text "Buy Now":
?utm_source=promo&utm_medium=email&utm_campaign=spring-sale&utm_content=cta-buy-now
Button text "Shop the Sale":
?utm_source=promo&utm_medium=email&utm_campaign=spring-sale&utm_content=cta-shop-sale
Email Design A/B Test:
Image-heavy design:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest&utm_content=design-images
Text-focused design:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest&utm_content=design-text
GA4 A/B Test Analysis
Step 1: GA4 → Explore → Blank exploration
Step 2: Dimensions: utm_content, utm_campaign
Step 3: Metrics: Sessions, Conversions, Conversion rate
Step 4: Filter: utm_campaign = your test campaign name
Result: Compare conversion rates by utm_content variant.
Advanced: Audience Segmentation with utm_term
Track Which Audience Segment Converts Best
VIP customers:
?utm_source=promo&utm_medium=email&utm_campaign=exclusive-sale&utm_term=vip-customers
Trial users:
?utm_source=drip&utm_medium=email&utm_campaign=upgrade-offer&utm_term=trial-users
Lapsed customers (no purchase in 90 days):
?utm_source=winback&utm_medium=email&utm_campaign=comeback-offer&utm_term=lapsed-90days
Geography-based:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest&utm_term=us-east
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest&utm_term=us-west
GA4 Segment Performance Analysis
GA4 → Explore:
- Dimension:
utm_term - Metrics: Sessions, Revenue, ROAS
- Compare which audience segment has highest lifetime value
ESP-Specific Setup (Quick Reference)
Mailchimp
Settings → Tracking → Google Analytics
utm_source: mailchimp
utm_medium: email
utm_campaign: *|CAMPAIGN_UID|* (dynamic)
SendGrid
Settings → Tracking → Google Analytics
utm_source: sendgrid
utm_medium: email
utm_campaign: (set per campaign)
Klaviyo
Settings → Integrations → Google Analytics
utm_source: klaviyo
utm_medium: email
utm_campaign: {{ campaign.name }}
HubSpot
Settings → Marketing → Email → Tracking URL parameters
utm_medium: email
(HubSpot auto-sets source and campaign)
ActiveCampaign
Settings → Analytics & Goals → Google Analytics
utm_source: activecampaign
utm_medium: email
utm_campaign: %TITLE%
Link-Level UTM Customization
When to Use Different UTMs for Links Within the Same Email
Scenario: Email with multiple CTAs (hero button, mid-email link, footer link)
Strategy: Same campaign, different utm_content:
Hero CTA button:
?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale&utm_content=hero-cta
Product image link:
?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale&utm_content=product-image
Footer "Shop Now":
?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale&utm_content=footer-link
GA4 Analysis:
- Which CTA position gets most clicks?
- Which link drives highest conversion rate?
Common Email UTM Mistakes to Avoid
Mistake #1: Using utm_medium=newsletter
Wrong:
?utm_source=mailchimp&utm_medium=newsletter&utm_campaign=jan-sale
Right:
?utm_source=newsletter&utm_medium=email&utm_campaign=jan-sale
Why: utm_medium determines GA4 channel grouping. Only email is recognized as Email channel.
Mistake #2: Inconsistent Capitalization
Wrong:
Email 1: utm_campaign=Spring-Sale
Email 2: utm_campaign=spring-sale
Email 3: utm_campaign=SPRING-SALE
GA4 treats these as 3 different campaigns!
Right: Pick one standard (lowercase recommended):
utm_campaign=spring-sale
Mistake #3: Forgetting Transactional Emails
Missed tracking opportunities:
- Password reset emails → often link to login page (conversion!)
- Order confirmations → often link to related products (upsell!)
- Shipping notifications → often link to tracking page (engagement!)
Fix: Add UTMs to ALL transactional email links.
Mistake #4: Not Encoding Special Characters
Wrong (breaks URL):
?utm_campaign=50% Off Sale!
Right (URL-encoded):
?utm_campaign=50-percent-off-sale
Or use URL encoding:
?utm_campaign=50%25%20Off%20Sale
Mistake #5: Using Generic Campaign Names
Wrong:
utm_campaign=promo
utm_campaign=campaign1
utm_campaign=test
Right:
utm_campaign=spring-sale-2025-03
utm_campaign=product-launch-widget-pro
utm_campaign=black-friday-early-access
GA4 Custom Reports for Email Performance
Report 1: Email Campaign Performance Dashboard
GA4 → Explore → Free Form
Dimensions:
- utm_campaign
- utm_source
Metrics:
- Sessions
- Engaged sessions
- Conversions
- Revenue
- Conversion rate
Filter: utm_medium = email
Result: See which email campaigns drive most revenue.
Report 2: Email Link Performance (CTA Analysis)
Dimensions:
- utm_campaign
- utm_content
Metrics:
- Sessions
- Conversion rate
Filter: utm_medium = email
Result: See which CTA position converts best.
Report 3: Email Audience Segment Performance
Dimensions:
- utm_term
- utm_campaign
Metrics:
- Sessions
- Revenue
- ROAS
Filter: utm_medium = email AND utm_term is not null
Result: See which audience segments have highest lifetime value.
Prevention & Maintenance Checklist
✅ Set default UTMs in your ESP (utm_medium=email) ✅ Create naming standards doc for your team ✅ Audit quarterly for naming drift ✅ Test before major sends (check real-time GA4) ✅ Train new team members on UTM standards ✅ Review GA4 monthly for anomalies (e.g., email showing as Direct) ✅ Update transactional emails when adding new flows
✅ 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
Should I use utm_source=mailchimp or utm_source=newsletter?
Both are valid. Choose based on your reporting needs:
Use ESP name (mailchimp, sendgrid) if you:
- Want to compare ESP performance
- Use multiple ESPs
- Care about platform-level metrics
Use campaign type (newsletter, promo, transactional) if you:
- Only use one ESP
- Want to compare email types
- Care more about content type than platform
Our recommendation: Use campaign type as source, ESP as medium or content:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest&utm_content=mailchimp
Do I need UTMs on transactional emails?
Yes! Even transactional emails drive valuable actions:
- Password reset → user logs in (engagement)
- Order confirmation → user clicks "track order" (retention)
- Shipping notification → user browses related products (upsell)
Track them all.
Can I use different utm_medium values for different email types?
No. Always use utm_medium=email for ALL emails. Use utm_source or utm_campaign to differentiate:
✅ Promotional:
?utm_source=promo&utm_medium=email&utm_campaign=jan-sale
✅ Transactional:
?utm_source=transactional&utm_medium=email&utm_campaign=order-confirm
❌ Wrong:
?utm_source=app&utm_medium=transactional (GA4 won't recognize as email)
What if my ESP auto-generates campaign names?
Most ESPs let you customize:
- HubSpot: Uses email name (rename your emails to match UTM standards)
- Mailchimp: Uses campaign title (rename to match standards)
- Klaviyo: Use
{{ campaign.name }}variable (rename campaign in Klaviyo)
If your ESP doesn't allow customization, manually override per campaign.
How often should I audit my email UTM setup?
Monthly: Quick check (5 min)
- Send test email
- Click link
- Verify in GA4 real-time
Quarterly: Full audit (30 min)
- Review all active email templates
- Check new automation sequences
- Verify transactional emails
- Update team documentation
Should I track email opens with UTMs?
No. UTMs track clicks, not opens. Email opens are tracked by:
- ESP (Mailchimp, SendGrid, etc.) via tracking pixels
- Note: Open tracking is increasingly unreliable due to privacy features (Apple Mail Privacy Protection)
Focus on click tracking and conversions instead.
Conclusion
Email UTM tracking best practices summary:
- Always use utm_medium=email (never change this)
- Use descriptive campaign names (not "promo" or "test")
- Stay consistent (lowercase, hyphens, date formats)
- Track ALL emails (including transactional)
- Use utm_content for A/B testing
- Use utm_term for audience segmentation
- Set ESP defaults to automate UTM addition
- Test before sending (verify in GA4 real-time)
- Audit quarterly to prevent naming drift
Follow this framework and your email data in GA4 will be clean, consistent, and actionable for optimization decisions.
Related: Why utm_medium=email is Critical