UTM Tags for Email Marketing Campaigns: A Full Guide
Email is one of the easiest channels to tag well and one of the easiest to get subtly wrong, especially once an email has more than one call to action. Here is how to structure UTM tags for email properly.
Priya Nair
Senior Marketing Analyst
Attribution & Analytics Blueprint Guide
Why email needs more tagging discipline than it first appears
Email looks like one of the simplest channels to tag: one send, one campaign, one set of UTM parameters. In practice, a single email often contains multiple links, a header logo linking to the homepage, a hero image linking to a product page, a text CTA linking to a signup form, each of which deserves its own distinction if you want to know which part of the email is actually driving clicks.
Treating an email as a single undifferentiated link source loses this granularity entirely, collapsing what could be useful creative-level insight into one aggregated number for the whole send. Getting the tagging structure right from the start avoids having to guess later which part of a high-performing email actually worked.
Setting utm_source and utm_medium for email consistently
The most common and reliable pattern is utm_source identifying the platform or list, such as newsletter or klaviyo, and utm_medium consistently set to email across every email send. Keeping medium consistent as email, rather than letting it vary between sends, is what allows GA4's default channel grouping to correctly bucket all email traffic together as one channel in high-level reports.
Some teams are tempted to make utm_medium more specific per send type, such as medium=promo-email versus medium=newsletter-email, which can work but adds complexity to your channel grouping rules in GA4. A simpler and more maintainable approach is keeping medium as email uniformly and using utm_campaign to distinguish between a promotional send and a regular newsletter send instead.
Using utm_content to separate multiple CTAs in one email
This is where email tagging earns its complexity. Every distinct link within a single email, the header logo, the hero banner, the primary CTA button, a secondary text link further down, should carry a distinct utm_content value describing its placement, such as content=hero-banner or content=footer-link. The campaign and source and medium values stay identical across all of them, since they are all part of the same send.
This structure lets you see, within GA4's traffic acquisition reports filtered by campaign, exactly which placement within the email drove the most clicks and, more importantly, which placement drove the most conversions. It is common to discover that a secondary text link outperforms a prominent hero banner on a conversion basis, an insight that is invisible without this level of tagging.
Handling the interplay with your ESP's own click tracking
Most email service providers apply their own click-tracking redirect on top of every link in an email automatically, regardless of whether you have added UTM parameters. This means a link a subscriber clicks often passes through the ESP's own tracking domain first, before redirecting to your actual destination URL with the UTM parameters still attached, assuming the ESP is configured correctly to preserve query strings through that redirect.
It is worth testing this specific interaction before a campaign launches, since some ESP configurations or link-shortening features can strip query parameters during their own redirect step, silently breaking UTM tracking even though the link appears correct in the email editor. Sending a test email to yourself and clicking through to check the final landing page URL catches this before it affects real send data.
Naming conventions that scale across a sending calendar
A newsletter program that sends weekly or more often needs a campaign naming convention that distinguishes individual sends without becoming unmanageable over time. A pattern like newsletter_2026_w34 for a specific week's send, alongside a broader campaign for occasional standalone promotions, keeps individual sends distinguishable while still letting you group by month or quarter using partial string matching in GA4 if needed.
Avoid overly generic campaign names like newsletter reused identically across every single send, since this makes it impossible to distinguish one week's performance from another in reporting, effectively erasing the ability to compare sends against each other over time.
Reviewing email UTM data alongside open and click rates
Your ESP's own dashboard will report open rates and click-through rates natively, but this data lives inside the ESP and does not automatically tell you what happened after the click, whether that traffic converted or bounced immediately. Cross-referencing your ESP's click data against GA4's UTM-tagged session and conversion data for the same campaign name gives a fuller picture than either source alone.
This is particularly useful for identifying emails with a healthy click-through rate but poor downstream conversion, which usually points to a landing page problem rather than an email content problem, a distinction that pure ESP metrics cannot make on their own.
Testing subject lines and CTAs without corrupting the tagging
When running A/B tests on subject lines or CTA copy within an email program, keep the UTM tagging structure consistent between variants so the test results are comparable in GA4 as well as in your ESP's own testing report. Use utm_content to distinguish the variant itself, such as content=cta-a versus content=cta-b, while keeping campaign, source, and medium identical.
This approach is covered in more detail specifically for subject line testing in how to test subject lines using tracked links, which is worth reviewing alongside this guide if subject line and CTA testing is a regular part of your email program.
A worked example: tagging a product launch email
A software company sends a launch announcement email containing four links: a header logo linking to the homepage, a hero image linking to the new product page, a primary CTA button reading Start Free Trial, and a footer link to a comparison page. All four share utm_source=newsletter, utm_medium=email, and utm_campaign=product_launch_q3, but each carries a distinct utm_content value: content=header-logo, content=hero-image, content=primary-cta, and content=footer-comparison.
Two days after sending, GA4's traffic acquisition report filtered to product_launch_q3 shows the primary CTA drove 340 sessions and 28 trial signups, while the hero image drove 210 sessions but only 6 signups despite more prominent placement. This tells the team that the hero image is generating curiosity clicks that do not convert as well as the direct CTA, information that would be completely invisible if all four links had shared a single undifferentiated content value or none at all. It also gives the team a concrete reason to redesign the hero image placement in the next send, rather than guessing at what to change based on overall open and click rates alone.
Building the links without manual tagging errors
Because a single email can require several distinct tagged links, manual tagging is where small inconsistencies creep in most easily, particularly around utm_content naming across placements. A UTM builder that lets you generate a batch of related links sharing the same campaign, source, and medium while only varying content removes most of this risk.
UTMLoop's utm-builder supports this batch-style workflow, and pairing it with a shortener keeps the final links in the email template clean rather than long and unwieldy, which matters for both email client rendering and the professional appearance of the send itself. The free tier covers the volume most email programs need.
Frequently Asked Questions
Should every link in an email have the same UTM tags?
Campaign, source, and medium should stay the same across every link in one send, since they describe the same email. utm_content should differ per link to identify which specific placement, such as the header logo or the primary CTA, generated the click.
Why did my UTM parameters disappear after sending a test email?
Most email service providers wrap links in their own click-tracking redirect. If that redirect is misconfigured, it can strip the original query string, including your UTM parameters, before forwarding to the destination. Test this before every campaign launch.
What should utm_medium be for email campaigns?
A consistent value of email is the most reliable choice, since it allows GA4's default channel grouping to bucket all email traffic together correctly. Use utm_campaign to distinguish between different types of sends rather than varying the medium value.
How do I compare which part of an email performed best?
Tag each distinct link within the email with a unique utm_content value describing its placement, then compare click and conversion counts for each value within GA4's traffic acquisition reports filtered by the shared campaign name.
Join 14,000+ marketing growth leaders
Receive our bi-weekly breakdown of campaign analytics setups, attribution rules, naming tactics, and link-stitching blueprints. Direct to your inbox.
Continue reading blueprints
All ArticlesGoogle Analytics Alternatives: Where Else Can You See UTM Data?
GA4 isn't the only place to read UTM data, Matomo, Plausible, Fathom, and Adobe Analytics all read the same utm_source and utm_campaign tags natively.
Setting Up Conversions in GA4 Without a Developer
You can set up most GA4 conversion tracking yourself with built-in tools and Google Tag Manager's click-based triggers, no custom code required.