Most marketers build a UTM link the same way: paste the page URL into a note, tack on ?utm_source= by hand, guess at the medium, and send it. It takes thirty seconds and it works — right up until someone checks the reports three weeks later and finds "google" and "Google" sitting in separate rows, half the clicks logged as (not set), and a campaign nobody can find because it was tagged three different ways by three different people.
UTM parameters are simple in theory. In practice, they're one of the easiest places for attribution data to quietly break — and because nothing throws an error when it happens, most teams don't notice until the numbers stop making sense. This guide covers what each parameter actually does, why case and consistency matter more than people think, and a naming convention you can put in place today. If you just want to build a clean link right now, our free UTM builder handles the formatting for you.
What UTM parameters actually track
A UTM (Urchin Tracking Module) parameter is just a query string tacked onto a URL. When someone clicks a tagged link, the values ride along and show up in your analytics platform's traffic source reports. There are five standard parameters, though you'll rarely need all five on the same link:
- utm_source — where the traffic is coming from:
google,newsletter,linkedin. - utm_medium — the general channel type:
cpc,email,paid-social,organic-social. - utm_campaign — the specific promotion or initiative:
spring-sale-2026,webinar-launch. - utm_term — mainly for tagging paid search keywords.
- utm_content — differentiates two links pointing at the same source, medium and campaign, e.g. a header CTA versus a footer CTA in the same email.
Google's own guidance on custom campaign URLs is explicit that the first three should always travel together: "When you add parameters to a URL, you should always use utm_source, utm_medium, and utm_campaign." Leave one out and that traffic typically shows up as (not set) in your reports instead of being attributed to anything useful — the data isn't lost exactly, it's just stripped of the context that would have made it actionable.
Skip the manual tagging. Our free UTM builder auto-formats source, medium and campaign for you, with quick-fill presets for Google Ads, Meta, LinkedIn and email.
The mistake that quietly fragments every report: case sensitivity
UTM parameter names are case-insensitive — UTM_SOURCE and utm_source both work at the URL level. The values you put in them are a different story. Google Analytics 4 treats utm_source=Facebook and utm_source=facebook as two entirely separate sources, each getting its own row in every report. Tag one campaign's links as Email and another's as email, and you've split a single channel's performance in two without any warning that it happened.
This is worth repeating because it's so easy to miss: nothing in Google Analytics tells you when this happens. Your traffic acquisition report will simply show two rows where there should be one, and unless you're specifically looking for near-duplicate source names, it reads as noise rather than a bug. The practical fix is boring but effective — pick lowercase, hyphenated values as your default and stick to them across every campaign and every team member building links. It's the single highest-leverage UTM habit you can adopt, which is why our builder auto-lowercases and hyphenates by default.
A naming convention that survives more than one campaign
Most UTM problems aren't really tagging problems — they're the absence of a shared standard. Here's a simple framework that holds up once more than one person is building links:
- Lowercase, hyphenated, no spaces or special characters.
utm_campaign=black-friday-2026, notBlack Friday 2026!. - Fixed vocabulary for utm_medium. Agree on a short list up front —
cpc,email,paid-social,organic-social,referral,sms— and don't let people invent new ones per campaign. This is the field where "email" vs. "e-mail" vs. "newsletter" does the most damage. - Campaign names that sort and search well. Leading with a date or quarter (
2026-q3-webinar) makes campaigns easy to find and compare later, rather than relying on memory for what "spring-push" referred to. - Keep a shared log. A simple spreadsheet or doc listing every campaign name in use stops the same promotion from being tagged five different ways by five different people. It doesn't need to be fancy — it just needs to be the one place everyone checks before creating a new link.
Before and after
Three people tagging the same autumn email promotion without a convention often ends up looking like this:
utm_source=Newsletter&utm_medium=Email&utm_campaign=Autumn Saleutm_source=newsletter&utm_medium=email&utm_campaign=autumn_promoutm_source=email&utm_medium=newsletter&utm_campaign=Autumn-Sale-2026
Three tagged links, three different sources, three different mediums, three different campaign names — all describing the same email send. With a shared convention, that becomes one consistent set across every link: utm_source=newsletter&utm_medium=email&utm_campaign=autumn-sale-2026.
Common UTM mistakes worth checking your own links for
- Tagging internal links. Adding UTMs to links between your own pages resets the session's original source in some setups, which can make a paid visitor look "organic" or "direct" by the time they convert two pages later.
- Using utm_medium for the platform instead of the channel type.
utm_medium=facebooktells you nothing about whether that traffic was paid or organic — that's what utm_source is for. Keep medium to the channel type (paid-social,organic-social) and source to the platform (facebook). - Re-tagging a link that's already live. Changing the UTMs on a URL that's already been shared (in a printed ad, an old email, a pinned social post) fragments that campaign's history instead of correcting it.
- No record of what's already been tagged. Without a shared log, duplicate or inconsistent campaign names creep in every time a new person builds a link.
- Forgetting the trio entirely on "quick" links. Source-only or medium-only tags still show up, but with incomplete context — usually landing as
(not set)for whatever's missing.
Clean UTMs won't fix everything — here's what else causes "direct" traffic
Even with perfect tagging discipline, UTMs only cover links you control. A meaningful share of the traffic showing up as (direct) or (none) in your reports never had a chance to carry a UTM in the first place:
- Stripped referrers. Redirect chains, link shorteners, and some HTTPS-to-HTTP transitions drop referrer information before your analytics tool ever sees it.
- Untagged links in closed environments. A link pasted into an email client, a PDF, a Slack message, or a WhatsApp chat typically doesn't pass a referrer at all, regardless of whether it had UTMs.
- Multi-session journeys. Someone clicks a tagged ad, doesn't convert, and comes back two days later by typing your domain from memory or a saved bookmark — the UTM from the first visit is gone unless something on your side is capturing and holding onto it.
That last one is where UTM tagging alone runs out of road. A tagged link tells you what brought someone to your site for a single session — it doesn't do anything to connect that source to a form fill, phone call, or booking that happens later, potentially across multiple visits. That's the gap Lead Recorder's lead source tracking is built to close: it captures the source on arrival and holds onto it until the visitor actually converts, so the lead itself — not just the session — carries the attribution.
Try the builder, then automate the rest
A consistent naming convention and a decent UTM builder solve the tagging half of this problem. The other half — knowing which of those tagged visitors actually turned into a lead — is a tracking problem, not a tagging one.
Want every form fill automatically tied to the UTM that brought it in? Lead Recorder captures a visitor's source the moment they land and attaches it to the lead when they convert — no manual tagging or spreadsheet required.
Further reading
- Google: Custom campaign URLs (official documentation)
- Google's own Campaign URL Builder
- HubSpot: What are UTM tracking codes?
- Lead Recorder's free UTM builder — the auto-lowercasing, preset-driven version of everything above


