UTM links are normal URLs with tracking parameters added to the end.

A plain URL:

https://example.com/pricing

A UTM URL:

https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=launch

The UTM Builder helps build and parse these links without forgetting a parameter or mixing naming styles.

The simple idea

UTM parameters answer this question:

Where did this visitor come from?

Analytics tools can read the parameters and group traffic by campaign.

The common UTM fields are:

  • utm_source;
  • utm_medium;
  • utm_campaign;
  • utm_term;
  • utm_content;
  • utm_id.

You do not always need all of them.

Step 1: choose the final destination URL

Start with the real page people should visit:

https://example.com/pricing

Make sure this URL works before adding tracking parameters. UTM tags do not fix a broken destination.

Step 2: set utm_source

utm_source says where the traffic comes from.

Examples:

newsletter
google
linkedin
whatsapp
github

If I send a link in an email newsletter, I might use:

utm_source=newsletter

Keep source names consistent. Do not use Newsletter, newsletter, and email_newsletter for the same thing unless you want messy reports.

Step 3: set utm_medium

utm_medium says the type of channel.

Examples:

email
social
cpc
referral
qr

For a newsletter:

utm_medium=email

For a paid search ad:

utm_medium=cpc

Think of source as “where” and medium as “what kind of channel”.

Step 4: set utm_campaign

utm_campaign names the campaign.

Examples:

product_launch
black_friday_2026
september_newsletter

Pick a name that will still make sense later. A campaign name like test is not helpful in reports.

I prefer lowercase names with hyphens or underscores, then use the same style everywhere.

Step 5: use utm_content for variants

utm_content is useful when two links point to the same page inside the same campaign.

Example:

utm_content=top_button
utm_content=footer_link
utm_content=image_banner

This helps answer:

Which link placement got the click?

Do not put everything into campaign names. Use utm_content for variants.

Step 6: use utm_term when it actually means something

utm_term is often used for paid search keywords. If you are not tracking keywords, you may not need it.

Leaving unused fields empty is better than filling them with random values.

Step 7: build the URL

Open UTM Builder and fill the fields.

Example:

URL: https://example.com/pricing
source: newsletter
medium: email
campaign: september_launch
content: top_button

Result:

https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=september_launch&utm_content=top_button

The tool handles URL encoding so spaces and special characters do not break the URL.

Step 8: click-test the final URL

Before sending a UTM link to many people, open it in a browser.

Check:

  • does the page load?
  • do the parameters stay in the URL?
  • does the website redirect and remove them?
  • does the page show the correct content?
  • is the link too long for the place you are sharing it?

If a redirect strips query parameters, analytics may lose the campaign data.

The UTM Builder can also parse an existing UTM URL. This is useful when someone sends a long link and you want to see what campaign values are inside.

Paste the URL and check whether the naming is consistent with your conventions.

My UTM naming rules

I try to keep UTM values:

  • lowercase;
  • short but readable;
  • consistent;
  • free of private information;
  • stable across campaigns.

Bad:

utm_campaign=My Big Test Campaign Final FINAL 2

Better:

utm_campaign=pricing_launch_2026

My UTM checklist

Before sharing a tracked link, I check:

  1. Is the destination URL correct?
  2. Is utm_source consistent?
  3. Is utm_medium consistent?
  4. Is utm_campaign meaningful?
  5. Do I need utm_content for variants?
  6. Am I leaving unused fields empty?
  7. Did I test the final URL in a browser?
  8. Will this still make sense in analytics later?

UTM links are easy to create. The real discipline is naming them clearly enough that future-you can read the report.

Comments

Comments are welcome — please read the comment policy first. Powered by giscus and GitHub Discussions.