UTM Parameter

Tool

A tag appended to a link so an analytics tool can tell which channel and which campaign a visit arrived from.

Why it exists

The problem was visit counts that arrived with no origin attached. Put one blog article's address in a newsletter, run it as an ad, and post it in a community, and the analytics tool reports 8,000 visits to that page on a single line. Nothing distinguishes which of the three paths did the work. The tool isn't failing; it simply never received anything that would let it tell them apart.

That produced a bucket on the dashboard with no known source. Of those 8,000 visits, 3,200 land under direct traffic, and inside that bucket sit people who came from an email client, people who got the link over a messaging app, and people who typed the address from memory. When the unknown bucket is 40 percent of the total, slicing the other 60 percent finely doesn't produce a conclusion.

No conclusion means no decision. Next month's budget has to go either into more ads or into a more frequent newsletter, and with no record of what worked last month that call gets made on instinct. UTM parameters block the problem at the front by recording the source at the moment the link goes out. Past visits can't be reconstructed, so the tagging has to happen in advance.

What it solves

It separates visits to the same address by the path they came in on. Append a question mark to the address, then name-and-value pairs, and the analytics tool reads those values and splits the traffic. There are five names, and the first three get filled almost always.

  1. utm_source — where it came from. newsletter, google, linkedin: the name of the outlet or channel.
  2. utm_medium — what kind of path it was. Values like email, cpc, social. The same google arriving from an ad and arriving from search results gets separated by this field.
  3. utm_campaign — which campaign. Something like 2026-spring-launch, carrying a period or a purpose. This field is what lets you isolate that campaign three months later. Without it, a spring launch and an autumn launch on the same channel blend into one row.
  4. utm_content — which creative inside the same campaign. Two banner variants become banner-a and banner-b.
  5. utm_term — the search keyword in a search ad. Usually left empty on other paths.

Values fragment without a naming convention agreed in advance. Analytics tools count Newsletter and newsletter as different values, so two people writing them differently split one channel across two rows. The usual answer is deciding on all lowercase with hyphens instead of spaces, then keeping the list of permitted values in a document. A new channel gets added to that document before any link using it gets built, a rule that only costs something the first time.

Where it doesn't work is equally clear. It only applies to paths that carry a link, so anyone arriving from an offline event or word of mouth never shows up here. And if a user copies the address out of their browser bar and sends it to a colleague, the parameters travel with it, and that colleague's visit gets recorded as coming from your newsletter. Nothing in the data reveals that this happened, which is one reason these numbers are better read as a direction than as a count.

Alternatives

There are three, and none of them replaces UTM parameters; they get used alongside.

The first is a tracking pixel, a few lines of code embedded in your pages that tell an ad platform who viewed what. The direction is what separates it from UTM: your analytics tool reads the parameters, the ad platform reads the pixel. That's how a platform learns whether someone who clicked an ad went on to pay, and it uses that to go find more people like them.

The second is conversion tracking, the setup that defines what counts as success and records it when it happens. UTM records the path in; this records what happened after. With only one of the two you know visit counts or you know outcomes, and which path produced the outcome appears only when both exist.

The third is a postback, where your server sends the fact of a conversion directly back to the ad platform's server. It skips the browser, so it's less exposed to settings that block tracking. On paths where a browser never gets involved at all, like app installs, it's effectively the only option. The tradeoff is that somebody has to build and maintain the server-to-server connection.

Many teams also add one line to the sign-up form for paths that carry no link: asking outright how the person heard about you. The answers aren't precise, but that single line is what reveals that unrecorded paths exist.

How it sounds at work

"Direct traffic is 40 percent. Someone shipped links without UTM parameters."

Pinning the unknown bucket on missing tags.

"Some links went out with Newsletter capitalized. One channel split into two rows."

The naming convention wasn't followed, so the values fragmented.

"Let's settle the campaign naming rule before we build these links."

Names have to agree up front if anything is to be grouped later.

Pagedeck keeps its link rules in a single document. Ravi wrote down the permitted utm_source values and the campaign name format, and any new channel gets added to that document before its links get built.

The prompt was last quarter's report. Newsletter traffic appeared to have halved, when in fact one person had written Newsletter and split the channel in two. Mia spent two days finding the cause, and the permitted-value list went into the document right after.

What people get wrong

The most common belief is that tagging settles where the credit goes. Paths appear separated, so it feels like an answer arrived. But what these fields record is the last path taken. Someone who saw an ad, came back through search two weeks later, and signed up a month after that by clicking a newsletter gets recorded as newsletter alone. Deciding which touchpoint earns the credit for a conversion is attribution, a separate decision, and these values are only its raw material. Teams that read the material as the answer end up cutting the budget of the channel that did the work at the first touch.

The other frequent view is that more tagging is better. More recorded, more known, it seems. But put parameters on internal links moving between your own pages and the analytics tool counts that move as a new visit, erasing the original source. One internal click by someone who arrived from an ad and every subsequent action gets credited to the internal link. The only place these belong is on links arriving from outside your site. Most analytics tools offer a separate way to label internal clicks, and that's the tool for that job.

Where to go next

Related terms

Last updated 2026-09-16