UTM parameters: a naming checklist for every campaign

One campaign, five rows in your report, and none of them the channel you paid for. The cause is almost never the analytics tool: it is the words you typed into the link, and they are far cheaper to fix before the send than after it.

UTM parameters: a naming checklist for every campaign

Short answer: UTM parameters are the tags you add to a link so your analytics knows where the click came from. They fail for one reason, inconsistent names: Facebook and facebook become two channels. Pick a small vocabulary, write it down, and check every campaign link against it before launch.

What UTM parameters actually do

A UTM parameter is a small piece of text attached to the end of a URL. Your analytics reads those values out of the link, groups the visit by them, and never interprets them. It cannot know that spring_sale, Spring Sale and spring-sale describe the same promotion; it treats them as three, because that is what the URLs say.

Five parameters exist. Three do almost all the work, and two are worth knowing before you need them.

ParameterWhat it holdsWhen you need it
utm_sourceWho sent the click: the platform, the property or the listAlways. It is the line your source report groups by
utm_mediumThe type of channel: email, cpc, social, referralAlways. Without it, the click often falls out of the channel groups
utm_campaignWhich push the link belongs toAlways. It is what gathers a campaign into one line
utm_contentWhich link or creative inside the same messageAs soon as one email, post or page carries two links
utm_termThe paid keyword, inherited from paid searchOnly when you manage ads outside the ad platform

An example link looks like this, and it is illustrative rather than a template to copy word for word: https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=autumn-launch&utm_content=header-button. Read it out loud and you already know where that click came from, which is the whole point.

What happens without them is worth stating, because it is the source of most support questions I get. An untagged link in an email usually arrives with no usable referrer, so the visit lands in direct or unknown traffic. An untagged link in a paid social post can fall into referral. Neither is a channel you chose; both are the absence of a decision.

Why one campaign arrives as five channels

The mechanisms are boring and repeat every week, so they are easy to guard against once you have named them.

  • Case. Values are case-sensitive in most analytics tools. Facebook and facebook are two sources, and your report quietly doubles.
  • Spaces and accents. A space in a value becomes %20 in the URL. It still works, but it is unreadable in a spreadsheet and easy to mistype in the next campaign.
  • Synonyms. newsletter, email, e-news and nl for the same channel give you four lines where you wanted one.
  • Swapped roles. Putting the channel in the source and the platform in the medium looks harmless and breaks the default channel groups: the visit no longer matches a known pattern and drops into an unassigned bucket.
  • Invented mediums. Default grouping rules in most tools recognise a short list of medium values. A creative synonym for one of them is read as a name nobody defined, so the campaign stops appearing in the channel you check.
  • Tagged internal links. This one is not cosmetic. A link carrying UTM parameters inside your own site can overwrite the original source and start a new session, so one visit becomes two, the original campaign loses the credit, and a self-referral appears in the report.

The last item deserves its own rule, and it is the one I repeat most often: tag the links that leave your site, never the links that stay. Navigation, in-page banners and product recommendations do not need parameters. Campaign links in an email, a partner newsletter, an ad or a QR code do. If you want to know which banner on your own homepage works, that is a job for clicks and goals inside the page, not for UTM parameters. Setting up a goal that answers a real question comes first anyway: a tagged link is only useful if you already decided what a successful visit means.

The naming checklist to run before a link ships

This is the list I run before a campaign goes out. Ten minutes against one link, and the whole campaign stays readable for a year.

  1. Name the campaign before you build the link. One short token for the offer and the moment: autumn-launch. If two people cannot agree on the name, the report never will.
  2. Write everything in lowercase. No capitals anywhere in a value, including brand names.
  3. Use hyphens, never spaces. And do not mix hyphens with underscores: pick one separator and stay with it.
  4. Reuse a medium your tool already knows (email, cpc, social, referral, organic). Inventing one hides the campaign instead of labelling it.
  5. Keep one meaning per parameter. Source is who sent the click, medium is how it arrived, campaign is which push. The format of the message does not belong in the source.
  6. Add utm_content the moment there are two links in the same email or post: header-button, footer-link, image. Otherwise you can see the campaign, not the link that produced the click.
  7. Never tag a link that points to your own domain. Internal links keep the original source intact; tagged ones can overwrite it.
  8. Do not stack parameters on top of the ad platform's own tags. Paid search and paid social add their own identifiers automatically; adding your own on top is how two tools end up reporting two different numbers for the same click.
  9. Keep values short enough to type. If the link will end up in a QR code, a slide or a printed flyer, a value nobody can read is a value nobody will reproduce.
  10. Save the finished link in a shared sheet before you paste it anywhere. The next person reuses it instead of rebuilding it from memory, which is how consistency survives holidays and turnover.
  11. Open your own link in a private window, confirm the destination page, then check the source report within the hour. A tagged link that lands on the wrong page is worse than an untagged one: it looks like data.

If your analytics is consent-based and a share of visitors decline, the numbers will be lighter than your shop backend. That is expected, and it does not change the checklist: compare sources with each other rather than against the absolute figure from the till.

The mistakes I still see most often

Same failures every time I open a small site's campaign report. The fix column is the useful half of the table.

What happensWhat it does to your reportThe fix
Capitals and accents inside a valueOne channel becomes two or three lines with different spellingsLowercase and plain ASCII, applied when the link is generated
Four synonyms for one channelYou cannot sum a channel without counting it four timesA dropdown in the sheet, with one value per channel
UTM parameters on internal linksA new session, an overwritten source and a self-referralTag outbound links only; keep your own navigation clean
The same link reused for a second placementTwo placements read as one, so one looks like the other's resultOne link per placement, separated by utm_content
An email sent with no campaign valueThe send dissolves into the channel average and stops being visibleAlways name the campaign, even for a small send
Nothing written down anywhereNext month's values differ from this month's and the trend resetsOne shared page: the source list, the medium list, the campaign pattern

The pattern behind all six: a naming decision taken by whoever happens to be building the link. The checklist works because it moves that decision to one place, once, before the work starts.

What to do with the reports you already broke

First, the honest part: you cannot rewrite the past. Sessions already recorded keep the values they arrived with, and editing stored data would break the comparisons you rely on. Repair happens one layer above the raw data.

  1. Build an alias map. List every variant that appears in your source report, then write the canonical name next to it: fb, Facebook and facebook.com all become facebook.
  2. Apply the map in the reporting layer. A spreadsheet column, a lookup table or a chart in your dashboard. The underlying exports stay untouched, so you still recognise last quarter's numbers.
  3. Fix forward. From today, every new link uses the canonical value. Old sessions keep their variants, gathered by the map, so the trend line does not jump.
  4. Watch the source report for a month. A new variant appearing usually means a template, a newsletter tool or an agency did not receive the rule. Fix the template, not the person.

Naming discipline is not tidy bookkeeping for its own sake. It decides which channel you get to judge, and a channel you cannot judge is a channel you cannot fix. Once the names are clean, the useful question is the one about money: which source brings visits that are worth something? Comparing sources on value per visit rather than on volume is what turns a tidy report into a decision, and that is a habit worth building next. A report where the same channel appears five times cannot tell you which one pays.

On tooling, the honest position: SessionInsight does not manage your UTM names, it reads them. Traffic arrives already grouped by source, so your convention shows up immediately as either two clean lines or a mess, and you can open the sessions behind a channel to see what those visitors actually did. It covers goals, sources, realtime, a cookie-less lightweight mode, email reports and shared dashboards, with the sessions kept behind every drop-off. If you are still choosing where to measure at all, the question is the same as everywhere else: pick the tool by the question you need answered, not by the length of its feature list. You can see how it works or start on the free plan, one website and 50,000 pageviews a month for 30 days.

FAQ

What is the difference between utm_source and utm_medium?

Source is who sent the click, medium is how it arrived. A newsletter link normally reads utm_source=newsletter and utm_medium=email. Keeping those two roles separate is what lets your analytics group visits by channel; if the same kind of value lands in both, the default channel groups stop recognising the visit and it drops out of the reports you actually read.

Do UTM parameters hurt SEO?

Campaign links pointing at your site are not a ranking factor in themselves, and search engines handle parameterised URLs every day. The real risk is internal links: a tagged link inside your own site can start a new session and overwrite the original source in your analytics. Tag the links that leave your site, leave your own navigation clean, and keep tagged URLs out of your sitemap and canonical tags.

Are UTM values case-sensitive?

Yes, in most analytics tools. Facebook, facebook and FACEBOOK count as three different values, so one channel becomes three lines in your source report. Lowercase is the safe default, and it is the reason the first rule of the checklist is to stop capitals at the moment the link is created.

Should I use UTM parameters for email campaigns?

Yes, and email is where they matter most. Many email clients pass no usable referrer, so an untagged link arrives as direct or unknown traffic and the send disappears into a bucket you cannot act on. One campaign name per send, plus a content value when the email carries more than one link.

What should a utm_campaign value look like?

One short, descriptive, lowercase token, identical in every link that belongs to the same push: autumn-launch, not a sentence and not a date. It is the field that gathers the whole campaign into a single line in the report, so it has to be decided before the first link is created rather than after the send.

Can I fix UTM names in data I already collected?

Not at the source: old sessions keep the values they were recorded with, and rewriting stored data breaks your comparisons. Fix it one layer up by mapping every variant you find to one canonical name in your reporting tool or spreadsheet, then apply the canonical name to every new link. Old data stays readable, new data stays clean.

Bruno PersechiniFounder of SEINSIGHTS. Twenty years of turning analytics into decisions. Published October 10, 2026.