Skip to content

Blog

UTM best practices that keep analytics clean

16 July 2026

UTM parameters are how you tell your analytics where a click came from. They are simple, which is exactly why they get messy: three people tag the same campaign three different ways, and suddenly newsletter, Newsletter, and news-letter are three separate sources in your report. A month later, no one can say which channel actually worked. Clean UTMs are less about cleverness and more about consistency, the same words, the same case, every time, across the whole team.

This guide covers what each parameter is for, the naming rules that keep reports readable, the mistakes that quietly corrupt attribution, and the one habit that fixes drift for good.

What UTMs actually do

A UTM parameter is a tag appended to a link’s query string, ?utm_source=newsletter&utm_medium=email, that your analytics reads to attribute the visit. The link still goes to the same page; the tags just travel along and get recorded. They do not change the destination or the user’s experience. They exist purely so that, later, you can answer “where did this traffic come from?” with data instead of a guess.

Because the tag is just text you type, nothing enforces consistency. That is the whole problem, and the whole solution.

The five parameters

  • utm_source is where the traffic comes from: newsletter, linkedin, sms.
  • utm_medium is the channel type: email, social, cpc.
  • utm_campaign is the specific push: spring-sale, q3-launch.
  • utm_term is optional, usually for paid keywords.
  • utm_content is optional, to tell two versions apart: hero-cta vs footer-cta.

A useful way to remember the first three: source is who, medium is how, campaign is why. If you can fill those three in cleanly, your reports will mostly take care of themselves.

Rules that keep reports readable

Lowercase everything. UTMs are case-sensitive, so Email and email are counted as different values. Pick lowercase and never deviate. This single rule prevents the most common form of split reporting.

No spaces. Use hyphens: spring-sale, not spring sale. Spaces get percent-encoded into %20, which makes links ugly, harder to share, and error-prone when someone copies them by hand.

Agree on a vocabulary. Decide as a team what your sources and mediums are called, and write it down in a shared doc. The goal is that anyone tagging a link reaches for the same words without having to ask. A short, fixed list of allowed source and medium values beats infinite freedom every time.

Keep campaign names human. q3-launch is easier to recognize six months later than camp_00417. You are writing for your future self, who will not remember the code.

Be consistent about medium categories. Decide once whether paid search is cpc or ppc, whether organic social is social or social-organic, and stick to it. Mixing them fragments your channel view.

Do not tag internal links. Adding UTMs to links between your own pages overwrites the original source and corrupts attribution, a visitor who arrived from linkedin suddenly looks like they came from your own homepage. Only tag links that bring people to your site from outside.

Common mistakes that corrupt attribution

  • Inconsistent case or spelling, FB, fb, facebook, Facebook as four “sources.” Pick one.
  • Tagging internal navigation, the single fastest way to make your source report lie.
  • Putting UTMs on the wrong layer, tag the campaign link, not every link on the destination page.
  • Encoding personal data in a UTM, never put emails, phone numbers, or names in utm_content; that is personal data in a URL.
  • Reinventing names per campaign, if “spring sale” is spring-sale this quarter and springsale next, the trend line breaks.
  • Forgetting UTMs entirely on a paid link, an untagged ad click lands in “direct” or “referral” and you lose the attribution you paid for.

Presets beat memory

The reason UTMs drift is that they rely on people typing the same thing every time. They will not. Willpower is not a naming convention. The fix is to save the combinations you use as presets, so applying the right source and medium is one click instead of a fresh chance to make a typo.

That is what SwiftURL’s UTM Presets are for: build a UTM as you create a link, save it, and reuse it across the team so every value rolls up correctly. When the tagging is a dropdown instead of a text field, the whole “newsletter vs Newsletter” problem simply stops happening. Clean tags flow straight into cleaner reports, which is where reading your analytics actually becomes possible.

A starter convention you can copy

If your team does not have a written convention yet, start with this and adapt it. The rule is: pick one value from each list and never improvise a new one without adding it to the list.

  • utm_source (the specific platform): newsletter, linkedin, instagram, whatsapp, sms, google.
  • utm_medium (the channel type, kept to a short fixed set): email, social, cpc, referral, sms.
  • utm_campaign (human-readable, dated where useful): diwali-2026, q3-launch, webinar-oct.

A tagged link then looks like:

https://go.yourbrand.com/sale?utm_source=whatsapp&utm_medium=social&utm_campaign=diwali-2026

Notice it is lowercase, hyphenated, and readable at a glance six months from now. Paste that list into a shared doc, and tagging becomes lookup instead of invention. Better still, encode the list as presets so the lookup is a dropdown, more on that below.

How clean tags pay off downstream

The reason any of this matters is that UTMs are the backbone of your attribution. When they are consistent, your source and campaign reports add up, and you can confidently say “SMS drove more signups than email this month.” When they are messy, every number carries an asterisk, and you end up manually merging Newsletter and newsletter in a spreadsheet after the fact. Clean tags are cheaper to maintain at the moment of creation than to repair at the moment of reporting, which is the whole argument for presets over willpower.

Frequently asked questions

Are UTM parameters case-sensitive? Yes. Email and email are recorded as different values, which is why standardizing on lowercase matters so much. This is the most common cause of accidentally split reports.

Should I put UTMs on internal links? No. Tagging links between your own pages overwrites the visitor’s original source and corrupts attribution. Only tag links that bring traffic to your site from an outside channel.

Do UTMs slow down or change my links? No. They are just query-string tags your analytics reads. The destination and the user experience are unchanged. They can make a raw link longer, which is another good reason to pair them with a branded short link.

How do I stop my team from tagging inconsistently? Write down an agreed vocabulary and, more importantly, remove the chance to typo it. Presets turn tagging into selection rather than spelling, see UTM Presets.

The takeaway

Consistent tags in, trustworthy reports out. Lowercase everything, no spaces, agree on a vocabulary, keep names human, never tag internal links, and then take the discipline off people’s shoulders with presets so it holds automatically. Clean UTMs are the difference between analytics you can act on and a report you have to apologize for.

Start free and save your first preset, or see how UTM Presets work across a team.