
13 June 2026
CRO-Focused Web Development: Why How You Build Affects How You Convert
Read insight ->
Insights

UTM parameters are only useful if everyone tags links the same way every time. The parameters themselves are simple, but the value is entirely in the consistency: the same five tags, written in the same case, drawn from the same short list of approved words, owned by one person or one tool. Get that right and your GA4 reports separate channels cleanly and attribution holds. Get it wrong and "Facebook", "facebook" and "FB" become three sources, half your traffic lands in Unassigned, and you spend the quarter arguing about which number is real. This is the standard we apply across the tracking work we do, written so a marketing team can adopt it in an afternoon.
UTM parameters are five tags you add to the end of a link so your analytics can tell where a click came from and which campaign it belonged to. They look like ?utm_source=newsletter&utm_medium=email&utm_campaign=spring_launch on the end of a URL, and GA4 reads them to attribute the visit. Without them, paid, social and email traffic collapses into vague buckets and you cannot tell which activity actually drove revenue.
They matter because attribution is the foundation every other marketing decision sits on. If your channel reporting is wrong, you scale the wrong campaigns and cut the ones that were working. In the tracking work we have done (167+ tracking containers built and over $4.95M in ad spend tracked at around 98 percent accuracy), broken or inconsistent UTMs are one of the most common reasons a dashboard disagrees with reality. The fix is almost never a new tool. It is a standard that everyone follows.
You need three every time, and two more when they add information. utm_source, utm_medium and utm_campaign are the core set that answer where the traffic came from, what type of channel it was, and which campaign it belonged to. utm_term and utm_content are optional and exist to capture paid keywords and to tell two creatives or links apart.
Parameter | Required | What it answers | Example values |
|---|---|---|---|
utm_source | Yes | Which site or platform sent the traffic | google, facebook, newsletter, linkedin |
utm_medium | Yes | What type of channel it was | cpc, email, paid_social, affiliate, referral |
utm_campaign | Yes | Which campaign or promotion it belonged to | spring_launch_2026, brand_always_on |
utm_term | Optional | The paid search keyword | womens_running_shoes |
utm_content | Optional | Which creative or link variant was clicked | hero_cta, video_ad_a |
The discipline is to always set the three required tags and to use utm_content whenever a campaign has more than one creative or more than one link to the same page. That is what lets you compare ad variants and button placements later instead of guessing.
The rules are short, and breaking any one of them fragments your reports. Treat them as non-negotiable across every link your team builds:
Name the source after the specific platform and set the medium to the value GA4 uses to group that channel. The source is granular (the actual website or vendor), while the medium is one of a small, fixed set. Here is a starting taxonomy you can adopt as is.
Channel | utm_source | utm_medium | Notes |
|---|---|---|---|
Paid social (Meta) | facebook or instagram | paid_social | One source per platform, not "meta" for both |
Organic social (hand-shared) | linkedin, facebook | social | For links your team posts manually |
Email newsletter | newsletter | Name the programme, not the tool ("mailchimp") | |
Paid search (Microsoft) | bing | cpc | Use cpc so it maps to Paid Search |
Display | google, network_name | display | Banner and programmatic placements |
Affiliate or partner | partner_name | affiliate | One source per partner |
Referral or PR | publication_name | referral | Earned placements and link partners |
The single biggest mistake here is inventing a new medium for every channel. Mediums should come from the short approved list so they line up with GA4 channel grouping. Sources can be as specific as you like.
No. Adding UTM parameters to links between pages of your own site is one of the most damaging mistakes in tracking. When a visitor clicks an internally tagged link, GA4 starts a brand new session and rewrites the source and medium, so a customer who arrived from a Google ad suddenly looks like they came from your own homepage banner. The original, valuable attribution is gone.
Use UTMs only on links that point to your site from somewhere else: emails, ads, social posts, partner sites. For tracking how people move around inside your site, use GA4 events and the page path, not campaign parameters. If you have inherited a site with internal UTMs, removing them is usually one of the highest-impact tracking fixes available.
GA4 reads utm_source and utm_medium and sorts each visit into a default channel using fixed rules, so the medium you choose decides which channel the traffic appears in. If your medium does not match one of the patterns GA4 looks for, the traffic lands in Unassigned and disappears from your channel reports. This is why an approved medium list matters more than almost anything else.
In practice, a handful of medium values cover most marketing: cpc maps to Paid Search, paid_social to Paid Social, social to Organic Social, email to Email, display to Display, affiliate to Affiliates, and referral to Referral. Source has to make sense alongside the medium too, because GA4 checks both: a paid_social medium needs a recognised social source such as facebook to be classed as Paid Social. When you see a stubborn block of Unassigned traffic, a non-standard utm_medium is the first thing to check.
Use auto-tagging for Google Ads and manual UTMs for everything else. Google Ads appends its own click identifier (the gclid) automatically, and GA4 uses it to import campaign, ad group and keyword detail far richer than UTMs can carry. If you also manually tag your Google Ads final URLs, the two systems compete and you can end up double-counting or losing the gclid data entirely.
The clean rule is simple: let Google products that auto-tag do so, and reserve manual UTMs for channels that have no auto-tagging, such as email, organic social, newsletters, partners and most non-Google ad platforms. Microsoft Advertising has its own auto-tagging (the msclkid) you can use the same way. Keeping the two approaches in separate lanes avoids the most confusing attribution conflicts we see in audits.
Put one source of truth in place and make it the only way links get built. A shared UTM builder, whether a locked spreadsheet with dropdown menus or a dedicated tool, removes the chance for anyone to free-type "FaceBook" at 4pm on a Friday. The dropdowns enforce the approved vocabulary, generate the link, and log it so you have a record of every campaign URL in circulation.
Governance is mostly about ownership. One person or team owns the taxonomy, approves new source or medium values, and documents the standard somewhere everyone can find it. New channels get added to the list deliberately, not invented on the fly. This is unglamorous, but it is the difference between a reporting setup you can trust and one you quietly stop believing. Auditing whether your current tracking holds up is exactly what our free conversion audit checks, and rebuilding a clean measurement foundation is the core of our analytics and tracking work.
Our free conversion audit surfaces the few specific places between the visit and the order where your site is losing buyers, and what to fix first.
Get a free conversion auditYes. GA4 treats UTM values as case-sensitive, so Email and email, or Facebook and facebook, are counted as separate values and split your reports. Standardise on lowercase for every parameter and never mix cases.
They do not directly affect rankings, but tagged URLs can get crawled and indexed as duplicate versions of a page. Make sure every page has a self-referencing canonical tag, and never put UTMs on internal links, and UTMs will not cause SEO problems.
Either works, but pick one and use it everywhere. GA4 reads the characters literally, so "spring_sale" and "spring-sale" are different campaigns. Underscores inside values are the most common convention.
They can. Google Ads auto-tagging (the gclid) already passes rich campaign data to GA4, and manually tagging the same URLs can conflict with it. Leave Google Ads on auto-tagging and use manual UTMs only for channels that are not auto-tagged.
At least the three required ones: source, medium and campaign. Add utm_content when a campaign has more than one creative or link, and utm_term for paid search keywords. There is no benefit to tagging beyond what you will actually report on.
Sources
Related posts