Skip to content
SEOSeptember 20, 20264 min read

UTM Parameters Explained: Track Campaigns Without Breaking Analytics

How to build UTM tracking URLs the right way: utm_source vs utm_medium vs utm_campaign, naming conventions that keep reports clean, encoding mistakes to avoid, and QR-code tracking.

By FernandesLabs

Founder & Lead Developer · Published September 20, 2026

Share:

What are UTM parameters?

UTM parameters are short labels you append to a URL so your analytics tool can tell you where each visitor came from. They are the difference between a report that says "1,400 visits from google.com" and one that says "620 visits from the spring-sale newsletter, 480 from LinkedIn post #3, 300 from a partner banner".

The name is history, not marketing: Urchin Tracking Module — Urchin was the analytics company Google bought in 2005 and turned into Google Analytics. The convention outlived the product and is now understood by essentially every analytics platform.

The five parameters that matter

ParameterQuestion it answersGood values
utm_sourceWho sent the traffic?newsletter, linkedin, partner-blog
utm_mediumWhat kind of channel?email, cpc, social, referral
utm_campaignWhich initiative?spring-sale-2026, product-launch
utm_termWhich paid keyword?crm+software
utm_contentWhich creative/link variant?cta-top, banner-a vs banner-b

Only utm_source and utm_medium are effectively required — without them your analytics tool buckets the visit into "(direct)" or "unattributed". The rest are optional but powerful: utm_content is what makes A/B comparisons possible ("the green button won, 2.3× more clicks").

A worked example

Base URL:

https://fernandeslabs.com/tools/json-formatter

Tagged for a LinkedIn post promoting it as part of a launch campaign:

https://fernandeslabs.com/tools/json-formatter
  ?utm_source=linkedin
  &utm_medium=social
  &utm_campaign=launch-week
  &utm_content=post-dev-tools

Every click on that exact link is now separable in your reports from every other LinkedIn click. Build variants of it in seconds with the Campaign URL Builder — it constructs the URL and keeps the parameter names consistent.

Naming conventions: where analytics goes to die

UTM parameters are case-sensitive and literal in most analytics tools. These three values create three separate report rows for the same newsletter:

utm_source=Newsletter
utm_source=newsletter
utm_source=NEWSLETTER

Pick a convention and enforce it mechanically:

  • All lowercase, always (spring-sale, never Spring-Sale).
  • Dashes, not spaces — spaces must be encoded (spring%20sale) and are invisible in copied links.
  • No PII — no emails or names in parameters; many tools strip or block them, and it leaks data in referrer headers.
  • A fixed medium vocabulary — email, social, cpc, referral, qr. If one campaign says social-paid and the next says paid-social, your channel report splits in two.
  • Dates in campaign names, not sources — launch-2026-09 expires naturally; linkedin-2026 as a source does not.

Teams that skip this end up with reports listing 40 variations of Facebook and no way to merge them after the fact.

Encoding: the silent report killer

URLs can only contain a limited character set. Anything else — spaces, &, +, non-Latin characters — must be percent-encoded. Two failure modes are common:

  1. Unencoded ampersands inside values. utm_campaign=spring&sale produces campaign spring plus a broken parameter sale. If your campaign name contains &, use a dash: spring-sale.
  2. Double encoding. An encoded value that gets encoded again turns spring-sale into spring%252Dsale in reports. This happens when a URL passes through multiple systems (email service → redirect → landing page) and gets "helpfully" encoded at each hop.

If you are building tagged links by hand, run the result through the URL Encoder / Decoder and decode it again to see exactly what a browser will receive. Or skip hand-building entirely: the Campaign URL Builder and UTM Builder encode correctly as they go.

QR codes are UTM campaigns too

A printed QR code is a tracked channel like any other — and unlike a link in an email, you cannot change the destination after printing. Tag the URL inside the QR code:

https://fernandeslabs.com/tools/qr-generator
  ?utm_source=poster
  &utm_medium=qr
  &utm_campaign=conference-2026
  &utm_content=booth-banner

Two rules make QR attribution work:

  • Always use a unique campaign/source (utm_medium=qr separates scans from web clicks in the same report).
  • Shorten before generating — every parameter adds characters, and more characters mean a denser, harder-to-scan code. The QR Campaign Generator builds the tagged URL and the code together, so the tag survives to print.

Because the code on the banner is fixed, utm_content=booth-banner vs utm_content=flyer is how you later tell which physical placement actually drove visits.

Do UTM parameters hurt SEO?

No — with one caveat. Google treats tagged URLs as separate addresses from the canonical page. As long as your pages declare a canonical URL (the tagged parameters are stripped from the canonical), link equity consolidates on the clean URL and the tagged variants do not compete in search results. Publish links with UTMs freely on social and in email; just verify your CMS emits self-referencing canonicals (the Canonical URL Checker confirms it in one paste).

A 30-second pre-flight checklist

Before you publish a tagged link:

  1. All lowercase, dashes for spaces?
  2. utm_source and utm_medium present, with values from your fixed vocabulary?
  3. URL decodes to exactly the parameters you intended?
  4. Opened the link in a private window — does it land on the right page?
  5. For print/QR: unique source, short URL, generated from the final tagged address?

Clean UTM data is not a reporting nicety — it is the input to every "which channel should we double down on" decision you will make next quarter. Tag deliberately, and the answer is sitting in your analytics instead of buried under forty spelling variants.

Related free tools

Try these free online tools — all run in your browser with no sign-up.

Keep reading

More hand-written guides from the blog.

Was this guide helpful?

Anonymous — one tap, no sign-up.

Get new guides in your inbox

One short email when we publish a new guide or tool. No spam, unsubscribe anytime.

We store your email only to send occasional updates. See our privacy policy — no sharing, no spam.