What are UTM parameters, and how do you use them well?

What each of the five UTM parameters does, how to name them so your reports do not split, which mistakes keep coming up and why they never belong on internal links.

By , Full stack developer

On this page

You send a newsletter, post an Instagram story, print a leaflet with a QR code. Visits arrive on your website, but when you open analytics a good share of them show up as “direct” traffic: no origin at all. Clicks from email apps, messaging apps or a QR code often arrive without saying where they came from.

UTM parameters fix that. They are tags added to the end of a URL to tell analytics who sent the visit, through which channel and as part of which campaign. The page the person sees is the same; what changes is what gets recorded.

The name comes from Urchin, the analytics company Google bought in 2005 and that eventually became Google Analytics. The letters stand for Urchin Tracking Module, and the format outlived the company: practically every analytics tool understands it today.

An ordinary link with tags added to the end:

https://yourdomain.com/catalogue/?utm_source=newsletter&utm_medium=email&utm_campaign=catalogue-launch

The ? marks where the parameters begin, and each & separates one from the next. Your website does nothing with them: the page loads exactly the same. It is the analytics script that reads them when the visit arrives and files it in the right place.

The five parameters

Parameter What it answers Examples
utm_source Who sent the visit? google, newsletter, instagram
utm_medium Through what kind of channel? cpc, email, social, qr
utm_campaign As part of which specific push? catalogue-launch, sale-2026
utm_term For which paid keyword? Mostly paid search only
utm_content Which exact link inside the piece? header-button, footer-link

Source and medium are the minimum. The campaign is what lets you compare one push with another, and it is worth setting almost every time. The last two are optional: utm_term mostly makes sense in search ads, and utm_content tells two links inside the same piece apart, such as the button at the top and the link at the bottom of an email, or version A and version B of an ad.

One detail about the medium is worth knowing: Google Analytics 4 uses it to sort every visit into its channel groups (email, organic social, paid search and so on), and it does so by matching known values. Write email as the medium and the visit lands in the email group. Invent electronic-mail and it will most likely end up as “Unassigned”. Sticking to standard names for the medium spares you that problem.

GA4 also accepts a few extra parameters, such as utm_id, but these five are the ones every tool understands.

A naming convention matters more than the parameters

UTMs rarely fail for technical reasons; they fail through inconsistency. If one person on the team types Instagram, another instagram and a third ig, the report shows three different sources, each with a third of the visits, and no reliable conclusion. A few simple rules prevent it:

  • Lowercase everything, always. Analytics is case-sensitive: Facebook and facebook count as two sources.
  • Hyphens instead of spaces. A space is encoded as %20 or + and clutters the reports. catalogue-launch reads cleanly anywhere.
  • A closed vocabulary for the medium. A short, stable list: email, social, cpc, display, qr, referral. Nobody invents a new medium without adding it to the list.
  • One name per thing. Either instagram or ig, but the same one in every campaign.
  • Campaign names that age well. A year from now you should still know what it was: sale-2026 says more than promo.
  • A shared sheet where every campaign link is logged as it is created. It is little work, and it is what keeps the convention alive when the team changes.

And one rule that is about compliance rather than style: never put personal data in a UTM, such as the email address of a newsletter recipient. Google Analytics terms prohibit sending it information that identifies individuals, and the URL ends up stored in places you do not control.

The mistakes that keep coming up

This is the most expensive one. Put UTM parameters on a banner on your own home page that leads to the offers page, and analytics rewrites the origin of that visit: the conversion is credited to your banner, and the ad or email that actually brought the person disappears from the report. Depending on the tool, it may also split the visit in two. UTMs are for links pointing to your site from outside it. To measure which internal links get clicked, analytics has click events.

Tagging what already tags itself

If you use Google Ads with auto-tagging, every click already carries its identifier (gclid) and the platform knows which ad it came from. Adding manual UTMs on top adds nothing and can produce contradictory data. The same applies to platforms that append their own parameters.

Copy a URL that already carried another campaign’s UTMs, add the new ones, and the link ends up with two sources. Which value wins depends on the tool, and it is rarely the one you wanted.

In a leaflet, a presentation or a text message, a two-hundred-character URL is off-putting. In print the link goes inside a QR code; if it has to be read out or typed, a URL shortener stores the long address and redirects to it without losing the parameters.

Forgetting the tagged version in search engines

If a UTM link gets published on another website and Google crawls it, the same page now exists at two addresses. The canonical tag, which should point to the clean URL, keeps it from being treated as a separate page.

When the journey ends outside your website

UTMs only count what happens on your site. If a campaign leads people to message you on WhatsApp, the practical approach is for the ad to point to a page on your website with its parameters, and for the button on that page to open the chat. We cover it in WhatsApp click-to-chat links for your business.

Building yours

The UTM builder assembles the link from the destination URL and the parameters, with common source and medium combinations a click away and the encoding done correctly. As you type, it flags whatever would split the report: capitals, spaces, a missing source or medium, a campaign with no name, a destination that already carried UTMs or that uses http://.

It also works the other way round: paste any URL and it takes it apart parameter by parameter, marks which ones are tracking, and gives you the clean version to share. It is useful for reviewing a campaign’s links before launch and for understanding what a link someone sent you is carrying.


UTM parameters are about the simplest thing in analytics: five tags on a URL. The hard part is the discipline of writing them the same way every time. With an agreed list of names and a sheet to log them in, your reports stop saying “direct” and start telling you what works.

Shall we talk about process orchestration?

Tell us your case and we come back with a first read on scope within one business day.

We reply within one business dayBogotá · UTC−5

Message us on WhatsApp (opens in a new tab)