A UTM parameter is extra text on the end of a link that tells your analytics where the click came from. That is the whole idea. Everything else about UTMs is naming discipline and knowing their limits.
They look like this: yoursite.com/pricing?utm_source=linkedin&utm_medium=social&utm_campaign=launch. Everything after the question mark is a label. Your website ignores it for the purposes of showing the page, and your analytics reads it and files the visit accordingly.
The five parameters, and the three you need
There are five standard UTM tags, and most people should use three of them. Adding tags you have no plan for creates work without creating insight.
- utm_source — where the click came from. A specific place: linkedin, bluesky, newsletter, podcast-name.
- utm_medium — the kind of channel. A category: social, email, referral, cpc.
- utm_campaign — the specific push this link belongs to: launch, black-friday, pricing-post.
- utm_content — distinguishes two links inside the same post or email. Useful when you have a button and a text link and want to know which was clicked.
- utm_term — originally for paid search keywords. Ignore it unless you are running search ads.
The distinction between source and medium is the one people get wrong. Source is the specific named origin. Medium is the bucket it belongs to. Twitter is a source, social is the medium. Your newsletter is a source, email is the medium. If you find yourself putting the same value in both, you have collapsed a useful dimension.
The reason the medium bucket matters is that it lets you answer questions one level up. Not just how LinkedIn did, but how social did compared to email. With a dozen sources, the medium column becomes the summary view.
Naming conventions that stop your data fragmenting
To your analytics, Twitter, twitter and X are three different sources. They will appear as three separate rows, each with a third of the traffic, and every conclusion you draw from them will be wrong. This is the single most common way UTM data gets ruined, and it is entirely self-inflicted.
Adopt four rules and never break them. Always lowercase. Hyphens instead of spaces or underscores. One agreed spelling per source, written down somewhere you will actually look. And never let a URL builder autocapitalise for you.
Keep the canonical list in a note or a spreadsheet with a row per source. It takes five minutes to create and it will save you the far more annoying job of cleaning up merged rows in six months. If you have more than one person publishing, this list is not optional.
One more rule worth adopting early: never put anything personal in a UTM. They appear in the URL bar, in referrer headers, in shared screenshots, and in your analytics reports. A name, an email, or a customer id in a query string is a privacy problem waiting to happen. Use an opaque code if you need per-person tracking, and keep the mapping on your own side.
Where to actually put the tags
Tag links you control that lead to a page you own. Your bio link. Links in your posts. The buttons in your newsletter. Sponsorship links you hand to a podcast host. Do not tag internal links between pages on your own site: it resets the session source in most analytics tools and makes it look like your own homepage is referring you traffic.
Long tagged URLs look ugly in a post, and on some platforms they look like spam. A short link that redirects to the tagged URL solves this. The visitor sees something tidy, the analytics still receives the full set of parameters after the redirect, and you get click counts from the shortener as a bonus.
Be consistent about granularity. Deciding to tag per-post rather than per-platform is a fine choice, but make it once. Half your links tagged per campaign and half per individual post produces a report you cannot read.
What UTM parameters cannot do
Here is the limit that catches everyone. A UTM tells your analytics that a visit came from LinkedIn. It does not tell you that the visit turned into money. Your web analytics knows about sessions and pageviews. Your payment processor knows about charges. The UTM lives entirely in the first system and dies at the moment the visitor leaves for checkout.
So you end up with a report that says 3,000 sessions came from LinkedIn last month and 1,100 from X, and no way to know that the X traffic bought four times as much. Traffic volume and revenue are different rankings, and the UTM report only shows you one of them.
They also cannot survive being stripped. Some apps and privacy tools remove query parameters from shared links. Some people copy the URL from the address bar after the parameters have been cleaned. And they never capture dark social — the person who forwards your post in a private message with no link at all.
Closing the gap between the tag and the sale
Getting from “traffic from LinkedIn” to “LinkedIn produced $240” requires one more step: an identifier that survives the trip into checkout. With Stripe this is straightforward in principle. A Checkout Session or Payment Link accepts a client_reference_id, and whatever value you put there comes back attached to the completed payment. Carry your tracking id into that field and the charge arrives already labelled with its origin.
In practice the tedious part is doing it for every post, every time, and keeping the mapping between ids and posts. This is the part seenpaid automates: it publishes to your networks, generates a distinct tracked link per post and platform, carries the id through to Stripe, and connects read-only to your Stripe account to match payments back. The UTM report becomes a revenue report.
Start small
You do not need a tagging taxonomy before you begin. Tag your bio link, tag the links in your newsletter, use three parameters, keep them lowercase, and write the source names in a note. That covers most of the value.
Add utm_content when you have two links in the same place and genuinely need to tell them apart. Add per-post campaign tags when platform-level data stops being specific enough to act on. And when you find yourself wanting to know not where the traffic came from but where the money came from, that is the signal to add the checkout step. Until then, three tags and consistent spelling will serve you better than any elaborate scheme you abandon in a month.