MAILCRAFT
Home Features Pricing About Blog Contact Log in Get Started →
Campaign analytics

UTM Parameters for Email Campaigns Without Messy Reports

UTM Parameters for Email Campaigns Without Messy Reports

UTM parameters for email only produce clean reports when every link follows one fixed, lowercase naming convention, written down before the send. Skip that rule and the same newsletter shows up under a dozen spellings of its source. Which campaign actually sold? Nobody can say. Below: the three tags every link needs, a convention you can copy, and a checklist to run before each send.

Why Does Email Traffic Split Into a Dozen Sources?

Email traffic splits because UTM values are case sensitive and typed by hand, so “Newsletter”, “newsletter” and “news-letter” end up as three separate rows. The Google Analytics campaign URL builder guide says it plainly: utm_source=google is not the same as utm_source=Google. Then there’s the second problem. Links that miss a parameter land in (not set), a bucket of traffic nobody can attribute to anything. Now add a few people, a few templates, and tools that tag some links but quietly skip others (it happens more than you’d think). The report falls apart fast.

Which UTM Parameters for Email Do You Actually Need?

Always set utm_source, utm_medium and utm_campaign, and add utm_content whenever one email has more than one link to the same page. Each tag answers one question. Source: where did the visit come from? Medium: what type of channel? Campaign: which send? For utm_medium, email campaigns always get the literal value “email”. No variations. That keeps the channel grouped correctly and apart from in-app or other traffic. utm_content is the one people forget, and it’s what separates two calls to action in one message, say a top link and a footer button. Google also recommends utm_id and utm_source_platform once you use any UTM parameter at all, but honestly, a small team can treat those two as optional.

A UTM Naming Convention You Can Copy

A workable UTM naming convention is lowercase only, hyphens instead of spaces, one fixed value per field and a date or ID inside the campaign name. Copy this set as is:

  • utm_source = list or newsletter name, e.g. weekly-newsletter
  • utm_medium = email, always
  • utm_campaign = yyyy-mm-topic, e.g. 2026-09-autumn-sale
  • utm_content = link position or creative, e.g. header-cta, footer-link

For utm_source on a newsletter, use the list name, not the name of your email tool. Why? Because you might switch providers one day, and the reports should still make sense after that. A complete link built this way looks like: https://www.example.com/pricing/?utm_source=weekly-newsletter&utm_medium=email&utm_campaign=2026-09-autumn-sale&utm_content=header-cta. And ban “Email”, “e-mail”, “mail” and “newsletter” from the medium field. Entirely. In my view this one rule saves more cleanup than everything else combined.

How to Tag Email Links Step by Step

Build each tagged URL in a shared sheet, paste it into the campaign, then click-test it before sending. A few minutes per send, that’s all:

  1. Add the send as a new row in the shared sheet.
  2. Fill in values only from the allowed-value lists.
  3. Join them to the URL with ?, = and &; parameter order does not matter.
  4. Paste the result into every link in the email.
  5. Click through the test send and check the address bar.

One gotcha. If the landing URL already has a question mark in it, append the tags with & rather than adding a second ?. Whatever tool sends the campaign, the sheet stays your single source of truth for every value.

Email Campaign Tracking in Google Analytics: Where to Read the Results

Tagged clicks land in the Traffic acquisition report, where session source, medium and campaign mirror your UTM values one to one. Google’s explanation of how campaign and traffic-source data gets processed confirms that custom campaign values map straight to report dimensions. Filter by medium equal to email. Then break the rows down by campaign and content, and you’ll see which send (and which link inside it) drove sales. That view beats inbox metrics, frankly. The open rate stopped meaning much once mail clients started loading images automatically, so visits and revenue tell you far more. Want a cross-check? Compare Google Analytics with MailCraft’s campaign reports with CSV exports.

If you’re wondering what exactly happened there, our piece on why the open rate stopped meaning much walks through the shift in detail.

How to Keep the Convention From Drifting

Stop drift with one owner, one shared sheet with dropdowns and a monthly look at the source/medium report for new spellings. Past data can’t be rewritten. So note the date the convention started and compare results only from that point on. And if you want revenue matched to campaigns beyond what Google Analytics shows, a good place to start is syncing shop data with email.

UTM parameters for email pay off only when the convention is boring and strictly enforced. Consistency, not cleverness, is what makes the reports readable. For next steps, browse our articles on campaign analytics.

FAQ

Should utm_medium always be “email”?

Yes. One value, “email”, for every send, so all email traffic groups into a single row. The newsletter or list name goes in utm_source instead.

Why do I see (not set) for some email campaigns?

Usually a link carried only some of the parameters, or none at all. Set source, medium and campaign on every link, and the (not set) rows for email traffic should stop growing.

Do I need UTM tags on every link in a newsletter?

Every link that points to your own site, yes. When several links lead to the same page, use utm_content to tell them apart.