UTM Parameters: A Naming Convention That Keeps Analytics Clean
Which UTM parameters to use, why utm_medium decides your GA4 channel, a naming convention you can copy, and how to find and fix messy campaign data.
On this page
A UTM naming convention is a short set of rules for how your team writes campaign tracking tags, so the same source always appears under the same name in your analytics. The essentials: always set utm_source, utm_medium and utm_campaign; write every value in lowercase with hyphens instead of spaces; choose utm_medium from a fixed list that matches Google Analytics' channel rules (such as email, social, cpc, referral); and record every tagged link in one shared sheet. Never tag links between pages on your own site.
This guide explains each UTM parameter, why medium matters most in Google Analytics 4 (GA4), a complete naming convention you can copy, how to build and share tagged links, where UTMs cause problems, and how to find and fix messy campaign data.
The UTM parameters
UTM parameters are added to the end of a link. When someone follows the link, analytics tools read them to record where the visit came from.
Table: UTM parameters read by Google Analytics 4
| Parameter | What it records | Example | Required? |
|---|---|---|---|
utm_source |
The specific referrer: site, newsletter, platform | newsletter, facebook, partner-site |
Yes |
utm_medium |
The type of channel | email, social, cpc |
Yes |
utm_campaign |
The campaign, promotion or theme | autumn-sale-2026 |
Yes |
utm_content |
Which link or creative was clicked | header-button, video-ad-b |
Recommended when one message has several links |
utm_term |
The paid keyword | wordpress-hosting |
Mainly for paid search |
utm_id |
A campaign ID, used when importing campaign cost or other data | c-2026-041 |
Optional |
GA4 also documents utm_source_platform, utm_creative_format and utm_marketing_tactic, but Google notes that the last two are not currently reported in GA properties. Most small and medium sites never need them.
Google's documentation is explicit that parameter values are case-sensitive: utm_source=google and utm_source=Google are recorded as different sources. It also warns that missing UTM parameters show up as (not set) in reports.

Why utm_medium matters most in GA4
GA4 groups traffic into default channels, such as Email, Organic Social and Paid Search, mostly based on the medium (and sometimes the source). If your medium does not match one of GA4's rules, the traffic lands in Unassigned, where it is effectively lost from channel reports. Channel rules are not case-sensitive, but they can only be edited by creating a custom channel group.
Table: Medium values that match GA4 default channel rules
| Channel | Recommended utm_medium | What GA4's rule looks for |
|---|---|---|
email |
Source or medium of email, e-mail, e_mail or "e mail" | |
| Organic Social | social |
A known social source, or medium such as social, social-network, social-media or sm |
| Paid Social | paid-social |
A known social source with a medium matching cp…, ppc, retargeting or paid… |
| Paid Search | cpc |
A known search source with a medium matching cp…, ppc, retargeting or paid… |
| Display | display |
Medium of display, banner, expandable, interstitial or cpm |
| Referral | referral |
Medium of referral, app or link |
| Affiliates | affiliate |
Medium of exactly "affiliate" |
A common mistake shows why this matters: tagging a newsletter with utm_medium=newsletter. It does not match the Email rule (unless the source is email), so the traffic goes to Unassigned. Put "newsletter" in utm_source and keep utm_medium=email.
Paid social and paid search channels also depend on GA4 recognising the source as a social site or search engine. Use the platform's plain name (facebook, linkedin, bing) as the source so those rules can match.
A naming convention you can copy
Formatting rules
- Lowercase everything. It removes the most common cause of split data.
- Use hyphens between words, never spaces. Spaces become
%20or+in links and are easy to get wrong. - Use only letters, numbers and hyphens. Avoid
&,?,#,/and accented letters, which need URL encoding and break easily. - Never include personal information. Google's Analytics policies say URLs and parameters must be free of personally identifiable information, and specifically warn against putting it in UTM parameters. That means no email addresses or names in
utm_contentorutm_term.
Value rules
Table: Illustrative UTM naming convention
| Parameter | Rule | Allowed values (examples) |
|---|---|---|
| utm_medium | Fixed list only; no new values without agreement | email, social, paid-social, cpc, display, referral, affiliate, qr |
| utm_source | Platform or publication name from a maintained list | newsletter, facebook, linkedin, instagram, partner-acme, flyer |
| utm_campaign | Topic + month or season + year | product-launch-oct-2026, spring-sale-2026, webinar-seo-nov-2026 |
| utm_content | Placement or variant | header-button, footer-link, image, video-ad-b |
| utm_term | Keyword or audience, if useful | wordpress-hosting, retargeting-30d |
Note that qr is not one of GA4's default channel values, so QR-code traffic would appear as Unassigned unless you create a custom channel group. If you prefer it to land in an existing channel, use referral as the medium and qr-flyer or similar as the source. Decide once and document it.
Keep a tracking sheet
Record every tagged link in a shared spreadsheet with these columns: date, owner, destination URL, source, medium, campaign, content, full tagged URL and where it was used. The sheet is your dictionary of allowed values and your audit trail when numbers look odd.
<h2
Building tagged links
The UTM Builder takes the destination URL and the six campaign fields (source, medium and campaign required; term, content and ID optional), can force values to lowercase and replace spaces with hyphens or underscores, and outputs the full link. A finished link looks like this:
https://example.com/pricing/?utm_source=newsletter&utm_medium=email&utm_campaign=autumn-offer-2026&utm_content=header-button
If the destination already has a query string, the UTM parameters are joined with & rather than a second ?. If a value must contain special characters, encode it properly; the URL Encoder / Decoder shows exactly what a value becomes.
Worked examples
The following examples are illustrative.
Table: Example tags for common campaigns
| Situation | source | medium | campaign | content |
|---|---|---|---|---|
| Monthly newsletter, main button | newsletter | newsletter-oct-2026 | main-button | |
| Organic LinkedIn post | social | case-study-acme-2026 | post-image | |
| Paid Facebook ad, video variant B | paid-social | spring-sale-2026 | video-b | |
| Guest article on a partner site | partner-acme | referral | guest-post-2026 | author-bio |
| Printed flyer QR code | flyer-spring | referral | spring-open-day-2026 | qr-code |
Where not to use UTM parameters
Internal links
Never add UTMs to links from one page of your site to another, including banners, menus and pop-ups. A UTM-tagged link tells your analytics that a new campaign brought the visitor, so a visitor who arrived from Google search and then clicked your tagged banner can have later activity, including conversions, credited to your own banner instead of to search. Track internal clicks with events instead.
Links you want search engines to index
Tagged URLs are different addresses from the clean page. If tagged links are shared widely, search engines may discover them. Make sure every page has a self-referencing canonical tag pointing to the clean URL; the Canonical Tag Checker shows what a page declares. Most WordPress SEO plugins output canonical tags automatically.
Google Ads with auto-tagging
Google Ads auto-tagging adds its own click identifier and passes campaign data to linked Google Analytics properties. Adding manual UTMs on top can conflict with it. Use manual UTMs for other platforms and leave Google Ads to auto-tagging unless you have a specific reason.
Short links and redirects
Long tagged links look untidy in social posts and printed materials. You can shorten them with a link shortener or with a short address on your own domain that redirects to the tagged URL. Either way, test that the redirect keeps the query string intact.
Server configuration matters here. In our testing, an Apache Redirect rule passed the query string through to the target automatically, but an Nginx return 301 rule dropped it unless the target included $is_args$args. Our guide to 301 redirects in WordPress covers both, and the Redirect Checker shows exactly where a short link ends up, including its parameters.
Checking your campaign data in GA4
- Open Reports → Acquisition → Traffic acquisition.
- Change the primary dimension to Session source / medium, or Session campaign to compare campaigns.
- Look for the problems listed below.
- Fix the links at their source and update your tracking sheet.
Problems to look for:
- the same source written several ways (
Facebook,facebook,fb); - traffic in the Unassigned channel;
(not set)campaigns;- your own domain appearing as a referral source.
Note that UTM values do not appear in GA4's page path dimensions; Google says they are omitted from page path and landing page query-string dimensions and appear in the page location dimension instead.
Existing data cannot be corrected retrospectively in standard reports. Fix the links going forward, and use comparisons or explorations that group the variants if you need to report on the past.
Connecting campaigns to results
Consistent tags make it possible to compare channels fairly. Once traffic is attributed correctly, measure what it produces: conversion rate and cost per conversion with the Conversion Rate Calculator, and the other campaign maths with the full set of marketing calculators.
Common mistakes
- Using
newsletteras the medium, sending email traffic to Unassigned. - Mixed capitalisation, splitting one source into several rows.
- Tagging internal links, which overwrites the real source of the visit.
- Inventing new mediums per campaign instead of using the agreed list.
- Putting personal data in UTMs, such as subscriber email addresses.
- Short links or redirects that strip the query string.
- No record of tags, so nobody knows what a value means six months later.
Troubleshooting
Table: UTM problems: symptoms, likely causes and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Campaign traffic in Unassigned | Medium does not match a default channel rule | Use a standard medium, or create a custom channel group |
| Same source appears several times | Different capitalisation or spelling | Standardise on lowercase values from your list |
Campaign shows as (not set) |
Missing utm_campaign, or parameters lost in a redirect |
Check the link; test redirects with a redirect checker |
| Organic search visits credited to a banner | UTMs on internal links | Remove internal UTMs; track internal clicks with events |
| Tagged URLs appear in search results | Missing or incorrect canonical tags | Add a self-referencing canonical to the clean URL |
Values contain %20 or odd characters |
Spaces or special characters in values | Use hyphens and plain lowercase letters |
Frequently asked questions
Which UTM parameters are required?
Use utm_source, utm_medium and utm_campaign on every tagged link. Add utm_content when one email, post or ad contains several links, and utm_term mainly for paid keywords.
Are UTM parameters case-sensitive?
Yes. Google's documentation says parameter values are case-sensitive, so Facebook and facebook are separate sources. GA4's default channel rules ignore case, but your source and campaign reports will still be split. Using lowercase everywhere avoids the problem.
Should I use hyphens or underscores?
Either works if you are consistent. Hyphens are common and match the style of URL slugs. Pick one, write it into your convention and never mix them.
Why is my email traffic showing as Unassigned?
Usually because the medium is not email. GA4's Email channel looks for email in the source or medium. Values such as newsletter or mailchimp in the medium do not match, so put those in the source instead.
Can I use UTMs on internal links?
No. A UTM on an internal link presents your own page as a new campaign source, so later activity in the visit can be attributed to it instead of the visitor's real source. Use event tracking to measure clicks on internal banners and buttons.
Do UTM parameters affect SEO?
They do not help rankings. Tagged URLs can create duplicate addresses if search engines find them, which is why the clean page should have a self-referencing canonical tag. Do not use UTMs on links you want search engines to follow and index.
Should I add UTMs to Google Ads links?
Generally not, if auto-tagging is on and Google Ads is linked to GA4. Auto-tagging passes richer data automatically, and manual tags can conflict. Use UTMs for other ad platforms.
How should I tag QR codes and print campaigns?
Use a source that identifies the item (for example flyer-spring or poster-station), a medium your channel grouping recognises, and a campaign name. Shorten the link with a redirect on your own domain that keeps the query string, so the QR code stays simple.
Can I fix UTM mistakes in past data?
Not in standard reports. Collected values remain as they were. Correct the links going forward, and use explorations or custom channel groups to combine variants when you report on past periods.
What is utm_id used for?
It identifies a campaign by ID so you can join GA4 data with campaign information imported from elsewhere, such as costs from ad platforms that do not integrate directly. If you do not import campaign data, you can usually leave it out.
Next step
Write down your allowed mediums and sources, create the shared tracking sheet, and build your next campaign links with the UTM Builder. Then check Traffic acquisition a week later for Unassigned traffic or duplicate sources.
Related free tools for this topic
UTM Builder: Campaign URL Generator
Add utm_source, utm_medium, utm_campaign and other tags to any link, keep naming consistent, and copy a clean tracking…
Percentage Calculator
Three calculators in one: X% of Y, X is what percent of Y, and percentage change from one…
Discount Calculator
Find the sale price and the amount saved from an original price and a percentage discount.
Profit Margin & Markup Calculator
Enter cost and selling price to get profit, margin percentage and markup percentage side by side.
Conversion Rate Calculator
Calculate conversion rate from conversions and visitors, plus cost per conversion if you enter your spend.
CPM Calculator
Calculate cost per thousand impressions (CPM) from cost and impressions.
Related resources
SaaS hero with dashboard preview
Two-column hero: headline, supporting text, two buttons and a trust line beside a visual panel. Stacks to one…
Centred SaaS hero with product window
Centred hero with a large headline, supporting text and two buttons, with optional highlights and a product window…
Dark studio hero with service highlights
Centred hero with a large headline, supporting text and two buttons, with optional highlights and a product window…
More guides
Conversion Rate: The Formula and How to Improve It
How to calculate conversion rate with the right denominator, read it in GA4 and Google Ads, tell real changes from noise, and…
How to Calculate ROAS and What a Good ROAS Depends On
The ROAS formula, how to work out your break-even and target ROAS from your margin, and the reporting traps that make return…
Click-Through Rate: How to Calculate It and Read It in Search Console
CTR is clicks divided by impressions, but what counts as each varies by channel. Learn the formula, how to read CTR in…
Comments