
UTM parameters are short tags appended to the end of a URL so analytics tools can credit a visit to the right source. They do not change what the page looks like, what it says, or how it behaves - a link with or without UTM tags leads to the exact same page. What changes is how that visit gets labelled the moment it lands in GA4.
Without UTM tags, a click from a newsletter, a partner blog, and a printed QR code can all collapse into a vague “Direct” or “Referral” bucket, making it impossible to know which channel actually earned the visit - and, eventually, the sale.
The three parameters that matter most
Every UTM link is built from a small, predictable set of parameters:
- utm_source - where the traffic came from: newsletter, linkedin, partner, google.
- utm_medium - the mechanism that carried the click: email, cpc, social, referral, affiliate.
- utm_campaign - the name of the specific initiative: spring_launch, webinar_june, black_friday_2026.
- utm_content (optional) - useful when two links point to the same page from the same campaign, such as a header link versus a footer link in the same email.
- utm_term (optional) - mostly relevant for paid search keyword tracking, rarely needed elsewhere.
Source, medium, and campaign cover the vast majority of real needs. Adding content and term only when there is a genuine reason to split traffic keeps reports readable instead of cluttered.
Consider a realistic scenario: a business posts the same offer as an organic LinkedIn update and as a paid LinkedIn ad, both linking to the same landing page. Without UTM tags, GA4 lumps both under a generic linkedin.com referral, making it impossible to tell whether the paid budget earned any of the resulting leads. Two lines of tagging - utm_medium=social for the organic post, utm_medium=cpc for the paid ad - is the entire difference between a channel report that can answer the budget question and one that cannot.
What a good UTM link looks like in practice
A newsletter call-to-action pointing to a blog post might use utm_source=newsletter&utm_medium=email&utm_campaign=march_tips. A paid search ad for a brand term might use utm_source=google&utm_medium=cpc&utm_campaign=brand. A partner posting a link on their own blog might use utm_source=partnername&utm_medium=referral&utm_campaign=partnership_2026. In every case, values stay lowercase, use underscores instead of spaces, and describe the channel in words a colleague would recognise six months later without asking what “spr_promo2” meant. Consistency matters more than cleverness - a boring, predictable naming pattern is what keeps GA4 reports usable as the number of campaigns grows.
A shared link builder - Google's own Campaign URL Builder, or a simple internal spreadsheet with dropdown validation for source and medium - works fine for generating these. The specific tool matters far less than making sure everyone on the team reaches for the same one instead of typing parameters from memory each time a new link is needed.

Where UTM links should - and should not - be used
Use them for email campaigns, social posts, paid ads on platforms that do not auto-tag, partner and affiliate links, printed QR codes and offline campaigns, and guest posts on other sites - anywhere the traffic source would otherwise be ambiguous.
Do not use them for internal navigation links, your own site's internal search results, or any link you control end-to-end where GA4 already knows the source without help. Tagging internal links is the single most common way UTM tracking quietly breaks itself, and it is worth a five-minute site-wide check whenever a new template or menu ships.
Common mistakes that quietly break reporting
Most UTM problems are not visible until months later, when reports stop making sense:
- Tagging internal links between your own pages, which resets the session's original source and pollutes every report downstream.
- Inventing a new spelling of the same campaign name every time - spring_sale, Spring-Sale, springsale2026 - splitting one campaign into three rows nobody can total.
- Manually tagging links inside Google Ads or Meta Ads, doubling up on parameters those platforms already auto-tag through their own integrations, which can override or conflict with manual tags.
- Sending a UTM link through a URL shortener or redirect service that strips the query string before the click lands on your site.
- Building UTM links by hand with no shared reference, so two people tag the same campaign two different ways.
- Tagging a link that will be opened inside a mobile app's in-app browser or a PDF reader, without checking whether that environment strips or mangles the query string before the click ever reaches your site.
A lightweight process that keeps everyone consistent
A shared UTM dictionary, even a simple one, solves almost all of the above:
- Agree a short list of accepted values for source and medium before any campaign launches, and write them down somewhere the whole team can see.
- Pick one campaign-naming convention (for example lowercase_with_underscores plus a year) and reuse it everywhere.
- Generate links with a shared builder or spreadsheet template instead of typing parameters from memory.
- Spot-check new links in GA4's Realtime report right after launch, before real spend starts flowing through them.

At Killer Click we agree a simple UTM dictionary with every client before a campaign goes live, covering source, medium, and campaign naming for every channel in play. It is a small amount of upfront discipline that keeps GA4 reports comparable month over month, instead of turning into a museum of one-off typos nobody can explain a year later.