UTM Tracking for Email Marketing: Naming, Examples & Best Practices
For any link in any email you send, four fields do the work:
?utm_source=newsletter&utm_medium=email&utm_campaign=weekly_digest&utm_content=hero_cta
utm_medium=email is fixed. utm_campaign names the send. utm_content identifies which link in the email was clicked the field that matters most in this channel and gets used least.
utm_source is the one people get wrong, because email is the only channel where the source isn't an outside platform. That decision is covered in detail below.
The Recommended Email UTM Structure
| Field | What it carries in email | Example |
| utm_source | Which list or audience the message went to | newsletter |
| utm_medium | Always email | |
| utm_campaign | The specific send or programme | summer_sale_2026 |
| utm_content | Which link in the email was clicked | hero_cta |
utm_term has no natural role in email it carries paid keywords. Leave it off.
What Should utm_medium Be?
email. Every time, without variation.
This is the settled field, and it's doing real work: GA4 classifies a session into the Email channel when the source or the medium matches an email variant. Setting utm_medium=email guarantees correct classification regardless of what you choose for source.
The only way to get this wrong is inconsistency. Email, e-mail, and email_marketing will each create separate rows in your Session medium report even where the channel classification still resolves so your channel report looks fine while your medium report is fragmented. Pick email and never touch it again.
What Should utm_source Be?
Here's the one that's genuinely contested, and where a lot of published advice is wrong.
Your email platform is not the source. Mailchimp, Klaviyo, HubSpot and the rest deliver the message. They aren't whose audience it is the list is yours. Tagging utm_source=mailchimp records which vendor you pay, which is not a marketing question, and it breaks entirely the day you migrate.
The source should identify which audience received the message. Three strategies do that, and which one suits you depends on how many distinct audiences you actually have.
Strategy A Name the list or programme *(recommended for most)*
utm_source=newsletter
utm_source=product_updates
utm_source=lifecycle
Each meaningfully different audience gets its own source. A weekly newsletter subscriber, a product-updates subscriber, and someone in an onboarding automation are different people with different intent, and separating them lets you compare their behaviour.
Use when you send to more than one distinct list or run automations alongside broadcasts.
Tradeoff: you need to decide up front what counts as "meaningfully different," and add new values deliberately rather than inventing them per send.
Strategy B One source for all email *(fine for small senders)*
utm_source=newsletter
If you have one list and one kind of email, one source value is a complete and correct implementation. utm_campaign still separates individual sends.
Use when you have a single audience. Tradeoff: if you later add lifecycle automations, you'll want to split and splitting later means your historical data doesn't match the new structure.
Strategy C Name the ESP *(one narrow legitimate use)*
utm_source=mailchimp
Almost always wrong, with one exception: if you are genuinely running two platforms in parallel a migration, or a deliberate comparison and need to know which one delivered the traffic. Even then, most teams are better served putting that in utm_content and keeping the source describing the audience.
A trap worth naming
utm_source=email will classify correctly, because GA4's Email channel rule matches on source or medium. It still wastes the field: you've now recorded "email" twice and learned nothing about which audience responded. If your medium is already email, your source has a different job to do.
If you're still unsure which value belongs in which field, source vs medium vs campaign resolves it with a three question test.
Newsletter Example
Scenario: your weekly newsletter, with the lead story linking to a new article.
https://onlinetoolpot.com/blogs/utm-parameters
?utm_source=newsletter
&utm_medium=email
&utm_campaign=weekly_digest
&utm_content=lead_story
Why these values. The campaign is weekly_digest rather than a date, because you want every issue grouped as one ongoing programme that's what lets you see whether the newsletter as a channel is working. Individual issues are distinguished by utm_content or by the date range you filter on.
If you'd rather compare issue against issue, use utm_campaign=weekly_digest_2026_08_21 instead and accept that you'll have one campaign per send. Both are defensible. Pick one and apply it to every issue.
Promotional Email Example
Scenario: a one-off promotional send for a summer sale.
https://onlinetoolpot.com/tool/campaign-url-builder
?utm_source=newsletter
&utm_medium=email
&utm_campaign=summer_sale_2026
&utm_content=hero_cta
Why these values. The campaign names the initiative and carries the year, because "summer sale" recurs and you'll want to compare this one against next year's.
Critically, summer_sale_2026 should be the identical campaign value on the paid social ads, the organic posts, and the paid search for the same promotion. That's what makes the campaign comparable across channels and it's the most common thing teams get wrong, because the email is built by one person and the ads by another.
Automated Sequence Example
Scenario: a five-email welcome sequence, tagging the second email.
https://onlinetoolpot.com/tool/campaign-url-builder
?utm_source=lifecycle
&utm_medium=email
&utm_campaign=welcome_series
&utm_content=email_2_setup
Why these values. The source is lifecycle rather than newsletter because automation recipients are a different audience in a different state newly signed up, being onboarded and mixing them into your newsletter numbers makes both harder to read.
The campaign covers the whole sequence, and utm_content identifies the position within it. That's what tells you which email in the sequence actually drives action, which is the question worth asking about an automation.
Sequences run for months or years, so this is the tagging most worth getting right first time. Changing it mid flight splits the reporting at the moment you change it.
Multiple Links in One Email
This is the highest-value technique in email tracking and the most underused.
A promotional email typically contains several links to the same landing page: a hero button, an inline text link, an image, a secondary CTA, and a footer link. Every UTM is identical except one.
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_2026&utm_content=hero_cta
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_2026&utm_content=inline_text
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_2026&utm_content=product_image
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_2026&utm_content=secondary_cta
?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale_2026&utm_content=footer_cta
Without utm_content, all five clicks merge into one number. You know the email worked. You don't know whether your hero button earned its position, whether anyone reads to the footer, or whether the image is doing anything at all.
With it, you can answer a question that changes how you build the next email.
Keep the vocabulary small and reusable
hero_cta should mean the same placement in every email you send. If it means the top button this week and a sidebar link next week, the field's cross-campaign value disappears.
A working set for most senders:
hero_cta · inline_text · product_image · secondary_cta · footer_cta · header_logo
Six values, reused indefinitely. That's a complete system.
Email Naming, Briefly
Everything on this page assumes lowercase values and one consistent separator. Newsletter and newsletter are two different sources; summer_sale and summer-sale are two different campaigns.
That's the whole of it for a single sender. If more than one person tags email links, or if email is one channel among several, you need an agreed set of values written down UTM naming conventions covers the approved lists, the governance, and a copyable template.
When Your Email Platform Tags Links For You
Most email platforms offer to append UTM parameters automatically. This is convenient and it is also the most common source of broken email tracking, for a reason that isn't obvious.
Do not combine automatic and manual tagging. Mailchimp's own documentation is explicit that users should choose only one type of Google Analytics tracking rather than combining its automatic parameters with custom ones. The same principle applies across platforms: two systems appending parameters to the same URL produces duplicated or conflicting values, and the result is unpredictable rather than merely wrong.
Pick one approach and apply it consistently:
Option 1 Manual tagging. Turn the platform's automatic tracking off and tag your links yourself. More work per send; complete control over every value; consistent with how you tag every other channel.
Option 2 Platform tagging, configured properly. Leave it on, but go into the settings and configure what it sends. Most platforms let you edit the values rather than accepting defaults, and the defaults are frequently wrong a common failure is a medium value that doesn't match the rest of your taxonomy, which fragments your reporting while looking harmless.
The check that catches this. Send yourself a test, click a link, and read the address bar. If you see the same parameter twice, or values you didn't choose, your platform is tagging on top of you. This takes fifteen seconds and it's the single most useful email tracking test there is.
Platform behaviour and interface options change. Verify your own platform's current settings rather than trusting a screenshot from an article.
Does Apple's Privacy Protection Break Email UTM Tracking?
A live question with a precise answer, and one the rest of this SERP doesn't address.
Mail Privacy Protection affects opens, not clicks. MPP works by proxying remote content the tracking pixel that registers an open. It applies to remote content loading in Apple Mail, not to link redirects. Your open rates are inflated and unreliable; your click data passes through a different mechanism and stays comparatively trustworthy.
Link Tracking Protection targets user identifiers, not campaign parameters. Apple's Link Tracking Protection, which operates in Mail, Messages, and Safari Private Browsing, strips parameters containing unique per user identifiers the fbclid and gclid style click IDs used for cross site tracking. Standard UTM parameters, which carry campaign information rather than user identifiers, appear to be unaffected.
What this means practically. utm_source, utm_medium, utm_campaign and utm_content should continue working normally on Apple devices. What degrades is recipient-level and cross-site attribution.
And here's the part worth sitting with: the thing Apple strips is precisely the thing you should never have put in a URL anyway. Recipient identifiers, email addresses, and customer IDs in query parameters were always a privacy problem URLs are logged, cached, shared and screenshotted by systems you don't control. If you've followed the no personal data rule, these changes cost you nothing.
Apple's behaviour is observed and reported rather than exhaustively documented, and it changes between OS releases. Treat this as current as of now rather than permanent, and test your own links.
Email UTM Mistakes
Channel specific failures. The general ones capitalisation, spaces, mixed separators apply here too and are covered in the naming conventions guide.
Changing the source value between sends. newsletter this month, weekly_email next, newsletter_list after that. Your email traffic splits three ways and no report reassembles it. Decide once.
Using a different medium for different email types. email for broadcasts, email_automation for sequences, newsletter for the newsletter. Now your email channel is fragmented at the medium level, which is worse than fragmenting at source level because it affects channel classification. Medium is always email; the distinction you want belongs in source or campaign.
Putting recipient data in the URL. Email addresses, names, customer IDs, and subscriber IDs must never appear in a UTM value not in utm_content, not in utm_term, not anywhere. This is the mistake email marketers make more than any other channel, because the ESP makes merge tags so easy to insert. URLs are logged and shared far beyond your analytics.
Tagging links to your own site inside a transactional email. Order confirmations and password resets go to people already in a relationship with you. Tagging those links attributes ordinary account activity to a marketing campaign and inflates your numbers.
Reusing utm_content values inconsistently. If hero_cta means the top button in one email and something else in another, the field stops being comparable and becomes decoration.
Forgetting the sequence. Automations run for years. An untagged welcome series is invisible traffic for as long as it runs, and nobody notices because nobody launches it twice.
Seeing Your Email Data in GA4
Your email traffic appears in Reports → Acquisition → Traffic acquisition, with the dimension set to Session source medium you're looking for newsletter email or whichever source you chose.
utm_content doesn't appear in that report's dimension list. To see which links were clicked, build an Exploration and add the Manual ad content dimension.
Standard reports can take 24 to 48 hours to process, so check Realtime immediately after your send rather than concluding the tagging failed. How to track UTM campaigns in GA4 covers reporting and troubleshooting in full.
Build Your Email Tracking Links
Email is the channel where a single campaign can need five or six variants of the same URL. Building them by hand is where the typos come from.
Build your email tracking URL → set your source, medium, and campaign once, then change only utm_content for each link in the email.
Where to go next:
- Need copyable examples for other channels? → UTM examples library
- Want the full definition of each parameter? → UTM parameters reference
- Standardising values across a team? → UTM naming conventions
- Unsure which field a value belongs in? → Source vs medium vs campaign
- New to campaign tracking? → Complete campaign URL guide






