You send emails. People click links. But when you check your analytics, half the traffic shows up as “direct.” Or it gets lumped with other campaigns. You can’t tell which email drove what.

This happens because email links aren’t tagged consistently. Or they’re auto-tagged by your email tool in ways you didn’t choose. Or someone copy-pasted last month’s link without updating the campaign name.

How email UTMs work

UTMs tell analytics where clicks came from. For email, you’re answering:

  • utm_source: Where did this come from? (email)
  • utm_medium: What type of email? (newsletter, drip, onboarding)
  • utm_campaign: Which specific send? (july_2025_digest, welcome_sequence)

Tag every link. Then you can see which email sent someone to your site.

Five ways to break your email tracking

Changing utm_source per campaign. Don’t use utm_source=july_newsletter. Source should be stable. Use email every time.

Forgetting utm_medium. Without it, all your emails look the same in reports. A newsletter is different from an onboarding drip.

Date-based campaign names that expire. utm_campaign=email_july_15 tells you nothing in three months. Use descriptive names.

Letting the ESP auto-tag everything. Some email tools add their own UTMs. If you also add yours, you get duplicates or conflicts. Check what your tool does before adding your own.

Inconsistent casing. Newsletter and newsletter show up as separate campaigns in most analytics tools. Pick lowercase. Stick with it.

How to tag it

For every email link, use this:

utm_source=email
utm_medium=[type of email]
utm_campaign=[descriptive name]

Types of email (pick one per email type):

  • newsletter — regular sends to your list
  • drip — automated sequences
  • onboarding — welcome or activation emails
  • transactional — receipts, password resets (if you’re tracking those)

Newsletter vs drip: two examples

Newsletter example:

You send a monthly product digest. The link to your pricing page:

https://example.com/pricing?utm_source=email&utm_medium=newsletter&utm_campaign=july_digest
  • email as source — stable, always the same
  • newsletter as medium — distinguishes it from drip sequences
  • july_digest as campaign — specific enough to identify, readable in reports

Drip/onboarding example:

Someone signs up and enters a 5-email welcome sequence. Email 3 links to a demo page:

https://example.com/demo?utm_source=email&utm_medium=onboarding&utm_campaign=welcome_3
  • Same email source
  • onboarding medium — separates it from marketing newsletters
  • welcome_3 — identifies the sequence

Verify it in analytics

After sending, go to Google Analytics. Navigate to Reports > Acquisition > Traffic acquisition.

Filter by source/medium = email / newsletter or email / onboarding.

You should see your campaign names listed. If you see:

  • (not set) — links weren’t tagged
  • Duplicate campaigns with different casing — fix your consistency
  • Your ESP’s auto-tags mixed with yours — you have a conflict to resolve

Click numbers should roughly match what your email tool reports. Big gaps mean tracking is broken somewhere.