UTM Parameters: A Taxonomy That Survives to Revenue

Five parameters, and only three should be free text. Why source and medium need a closed list, why you should never tag internal links, and the three places attribution disappears before the money arrives.

KISSmetrics Editorial

|11 min read

A UTM parameter is a label attached to a click. It has to survive a redirect, a return visit, a device switch and several weeks before it reaches the thing you care about, which is a payment. Most schemes are designed for the click and then quietly fail at every step after it.

The tagging conventions in most companies were written once, by one person, and have been eroding since. The erosion is not carelessness. It is what happens when a scheme has no rule for a case that turns up later, so somebody invents one, and then somebody else invents a different one. This piece is about designing for that, and about the three places the tag gets lost between the click and the revenue.

The newsletter

Join our KISS newsletter

One short read a week on what actually moves revenue, in a free email. Read by 10,000+ operators and founders.

No spam. Unsubscribe in one click.

I.Why a UTM scheme degrades, reliably, within two quarters

The failure is not discipline. It is that every scheme meets a case it has no rule for, and the person who meets it has to guess.

A.Free text is the whole problem

Open the source and medium report on almost any account with more than a year of history and you will find facebook, Facebook, fb, facebook.com and FB-Ads, all describing the same channel, all counted separately. Nobody was careless. Five people needed a tag on five different days and the scheme did not tell them which word to use.

Case sensitivity alone will split a channel in two. GA4 treats Email and email as different values, so one campaign distributed by two people appears as two channels, each with half the revenue and neither hitting whatever threshold makes anyone look at it.

The fix is unglamorous. Source and medium come from a written list of permitted values. Campaign, content and term stay free text, because that is where the actual detail lives and constraining them helps nobody.

B.The three mistakes that do real damage

Inconsistent casing is annoying. These three lose data.

Tagging internal links. Somebody adds UTMs to a homepage banner so they can measure it. Every visitor who clicks it now starts a fresh attribution: in GA4 the campaign change ends the session and begins a new one, and the source that actually brought them to the site is overwritten by internal-banner. You have traded a real acquisition source for a click you could have measured as an event.

Hand-tagging Google Ads. Auto-tagging attaches a GCLID that carries keyword, match type, device and network. A manual UTM carries whatever you typed. If both are present, one wins and it may not be the one you expected, and you have thrown away the richer label to keep the poorer one.

Putting a medium where a source goes. Source is where the click came from, medium is what kind of link it was. utm_source=email is the most common single error in the discipline: email is a medium, and the source is the specific list or send.

II.A taxonomy built to survive contact with other people

A scheme is good if a new hire can tag a link correctly on their first day without asking anyone.

A.The five parameters, and what each is for

What goes in each parameter

Campaign tracking view
ParameterAnswersRuleExample
utm_sourceWhich property sent the clickClosed list, lowercaselinkedin
utm_mediumWhat kind of link it wasClosed list, lowercasepaid-social
utm_campaignWhich initiative it belongs toFree text, dated prefix2026-q3-pricing
utm_contentWhich creative or placementFree textcarousel-b
utm_termWhich keywordPaid search onlyfunnel-analytics
Source and medium are the only two that feed the default channel grouping, which is why they are the only two that get a closed list.

Keep the medium list short. email, paid-search, paid-social, organic-social, referral, affiliate, display, sponsorship covers almost everything, and if you need a ninth the conversation about adding it is exactly the conversation that keeps the list working.

Date-prefix the campaign. 2026-q3-pricing sorts chronologically, survives being reused next year, and makes a stale campaign obvious in a report. A campaign called pricing will be running for three years and nobody will notice.

B.Write it down where the links get built

A taxonomy that lives in a document nobody opens is a taxonomy that lasts one quarter. It has to live at the point of use, which in practice means a link builder: a small form with source and medium as dropdowns, campaign and content as text fields, that emits the finished URL.

The point is not convenience. It is that a dropdown cannot be typed into wrongly, and every governance problem in this discipline reduces to somebody typing.

III.Getting the tag to last until the money arrives

A perfect tag is worthless if the attribution it created expires before the purchase does.

A.The three places attribution disappears

Assume the tag is correct. It still has to survive to be useful, and there are three standard points of loss.

The session ends. This is the big one. If your analytics stores acquisition source on the session, then a person who arrives from a LinkedIn ad and purchases eleven days later has a purchase attributed to whatever brought them back, which is usually direct or brand search. Every long consideration cycle systematically credits the last touch and starves the first. See first-touch versus last-touch attribution for what that does to a budget.

The redirect strips it. Link shorteners, consent walls, login flows and payment providers all forward users, and not all of them preserve query strings. If your checkout starts with a redirect, test whether the parameters survive it. Many do not.

Nothing was tagged in the first place. Which brings us to the fastest growing untagged channel in the dataset.

Where an untagged arrival ends up

Acquisition view
Bucketed as direct
100%
Correctly attributed
0%
Not a measurement, a definition. An arrival with no referrer and no parameters has nowhere else to go, which is why a large direct bucket is a reporting artefact rather than a finding about brand strength.

B.The channel nobody has a convention for yet

A measurable share of referral traffic now arrives from answer engines. Someone asks ChatGPT or Perplexity a question, the model cites you, they click. You cannot put a UTM on that link because you did not create it.

Some of those arrivals carry a referrer that identifies the assistant and some do not, depending on the surface and the client. Where the referrer is absent, the visit lands in direct alongside genuinely direct traffic, and the channel becomes invisible at exactly the moment it is growing. The practical response is a referrer rule rather than a tagging rule: recognise the assistant domains explicitly and split them out before they reach the default grouping. We covered the measurement side in how to track ChatGPT traffic and the strategic question in LLM visibility versus LLM acquisition.

C.Storing the tag on the person

Every loss above except the stripped redirect comes from the same design choice: the tag is stored against a session, and sessions expire.

Kissmetrics stores acquisition source as a property on the person the first time it sees it, and keeps it for as long as the data is retained, which is currently not capped. It is still there three weeks later, on a different device, when the order lands, so first touch and last touch are both available from one record rather than being a modelling decision made in advance. That is the difference between knowing which campaign produced revenue and knowing which campaign produced the last click before revenue.

It does not fix a tag that was wrong, and nothing will. A closed list and a link builder fix that. What it fixes is the part where a correct tag stops mattering because too much time passed.

Verdict

UTM parameters are a labelling problem and an expiry problem, and most teams solve only the first. A closed list for source and medium, a dated campaign convention, no internal tagging, no hand-tagging of Google Ads, and a builder so nobody has to type: that is the labelling half, and it is a morning's work.

The expiry half is architectural. If attribution lives on a session, every purchase that takes longer than a session to happen will be credited to the wrong place, and no tagging discipline can recover it. Store the source on the person, and the tag you wrote in March is still doing its job in June.

Continue Reading

utm parameterscampaign trackingutm taxonomyattributionutm best practicescampaign naming conventionsource medium
KISSmetrics

Build your business intelligence layer for free.

KISSmetrics stores acquisition source on the person the first time it sees them, so the campaign you tagged in March is still on the record in June when the order lands.