UTM naming conventions: a simple system your team will follow
By Thig Editorial Team · Published · Updated · 5 min read
Table of contents
UTM naming conventions are a short set of rules for how your team writes campaign tags: every value lowercase, sources and mediums chosen from a fixed list, campaign names built from a dated pattern, and every tagged link logged in one shared sheet. Following them keeps analytics reports clean instead of split across a dozen spellings.
This guide gives you a convention you can adopt today, with examples and a template. You can build tagged links that follow it with our free UTM builder, which includes naming presets and remembers your recent links.
What UTM parameters are and why naming breaks
UTM parameters are tags added to the end of a URL. When someone clicks the link, your analytics tool reads the tags and records where the visit came from. Google's Analytics help page on campaign URLs lists the parameters and says to always use utm_source, utm_medium, and utm_campaign.
The five you will use most:
| Parameter | Answers | Example value |
|---|---|---|
| utm_source | Who sent the visit? | |
| utm_medium | What type of channel? | social |
| utm_campaign | Which campaign? | 2026-11_product-launch |
| utm_content | Which link or creative? | founder-post-v2 |
| utm_term | Which paid keyword? | invoice-software |
The trouble starts with people. One teammate writes LinkedIn, another writes linkedin.com, a third writes li. Google Analytics treats values as case sensitive, so these become three separate rows. Multiply that by every channel and campaign, and the report stops answering simple questions like "how many signups did the newsletter bring?"
A naming convention fixes this before it happens.
Rule 1: Lowercase everything
Make every value lowercase, always. Google's own help page notes that parameter values are case sensitive and recommends a consistent, lowercase standard.
- Good:
utm_source=linkedin - Bad:
utm_source=LinkedIn
This single rule removes most of the mess. Good link builders, including ours, lowercase values for you.
Rule 2: Use a fixed list of sources and mediums
Do not let people invent sources and mediums on the fly. Agree on a list and add to it deliberately.
Mediums matter extra because Google Analytics uses them in its default channel grouping. If your medium does not match an expected value, traffic can land in "Unassigned" instead of "Paid Social" or "Email". Google publishes the rules in its default channel group definitions. Stick to common values like the ones below.
| Channel | utm_source examples | utm_medium |
|---|---|---|
| Organic social posts | linkedin, x, reddit, facebook | social |
| Paid social ads | linkedin, meta, x | paid-social |
| Search ads | google, bing | cpc |
| Email newsletter | newsletter-name, mailchimp | |
| Partner or affiliate | partner-name | affiliate |
| Community or forum | hackernews, discord, slack-community | referral or social |
Write the final list in your shared sheet. When someone needs a new source, they add it there first.
Rule 3: Build campaign names from a pattern
Campaign names are where creativity causes the most damage. Use a fixed pattern so names sort well and are easy to read months later.
A pattern that works for most teams:
yyyy-mm_campaign-name
Examples:
2026-11_product-launch2026-10_black-friday2026-q4_webinar-series
Putting the date first means campaigns sort in order in reports. Keeping the name short and hyphenated makes it readable.
Larger teams sometimes add more parts, such as region or audience:
yyyy-mm_campaign-name_region_audience
For example 2026-11_product-launch_eu_founders. Only add parts you will actually filter by. Every extra part is another chance for a typo.
Rule 4: Use utm_content to tell links apart
When one campaign has several links in the same place, utm_content tells them apart. This is how you learn which button, ad, or post worked.
Examples:
- A newsletter with two links:
utm_content=header-buttonandutm_content=footer-link - Two versions of an ad:
utm_content=video-v1andutm_content=carousel-v2 - Several LinkedIn posts in one launch:
utm_content=post-1-demoandutm_content=post-2-story
Keep content values short and descriptive. Someone reading a report in six months should understand them without asking.
Rule 5: Never tag internal links
UTM tags belong only on links that bring people to your site from somewhere else. Do not put them on links from your homepage to your pricing page, or in your site navigation.
Tagging internal links tells your analytics tool that a new campaign started mid-visit. That overwrites the real source, so a visitor who arrived from a Google search suddenly looks like they came from "homepage-banner". If you want to track internal clicks, use event tracking instead.
Rule 6: Log every link in one shared sheet
A convention only works if people can see it. Keep one spreadsheet with two tabs.
Tab 1: the rules. Allowed sources, allowed mediums, the campaign pattern, and examples.
Tab 2: the log. Every tagged link your team creates.
| Date | Owner role | Campaign | Source | Medium | Content | Full URL |
|---|---|---|---|---|---|---|
| 2026-11-03 | Founder | 2026-11_product-launch | social | post-1-demo | https://example.com/?utm_... | |
| 2026-11-03 | Marketer | 2026-11_product-launch | newsletter-weekly | header-button | https://example.com/?utm_... |
The log helps you avoid creating duplicate links, and it gives you a record when you need to explain a spike in traffic.
A complete example
Imagine a hypothetical invoicing app, Ledgerly, launching a new reminders feature in November. The team plans a LinkedIn post, a newsletter, and a Hacker News Show HN post.
Following the convention:
- LinkedIn post:
?utm_source=linkedin&utm_medium=social&utm_campaign=2026-11_reminders-launch&utm_content=founder-post - Newsletter header button:
?utm_source=ledgerly-weekly&utm_medium=email&utm_campaign=2026-11_reminders-launch&utm_content=header-button - Show HN: often best left untagged, since the community dislikes tracking-heavy links and Hacker News already shows up as a referral source.
A month later, filtering by 2026-11_reminders-launch shows each channel's visits and signups side by side, with no duplicate rows.
Common mistakes and quick fixes
| Mistake | What happens | Fix |
|---|---|---|
Mixed case (Email vs email) | Split rows in reports | Lowercase everything |
| Spaces in values | Values show %20 or + | Use hyphens |
Custom mediums (linkedin-post) | Traffic lands in Unassigned | Use standard mediums like social |
| Tagging internal links | Original source overwritten | Remove tags from on-site links |
| No log | Duplicate and forgotten links | Keep a shared sheet |
| Long, unreadable campaign names | Hard to filter and read | Use the yyyy-mm_name pattern |
Make the convention stick
Rules on a page do not change behaviour by themselves. A few habits help:
- Use a builder with presets. Our UTM builder lets you save your source and medium lists so teammates pick from them instead of typing. It stores recent links in your browser, not on a server.
- Shorten long links for social posts after tagging, but keep the full URL in the log.
- Review once a month. Look at the source and medium report for any new, unexpected values and fix the link that created them.
Clean UTM data also makes content decisions easier. If you are planning which channels to invest in, our guide to a SaaS content strategy for small teams shows how to use this data in a monthly review.
How Thig helps
Thig reads your traffic and conversions from Google Analytics and Search Console once you connect them, so clean UTM data feeds straight into its weekly plan. The SEO agent and X agent use those results to suggest what to do more of, and you approve every change before it ships.
Frequently asked questions
Are UTM parameters case sensitive?
Yes. Google Analytics treats 'linkedin' and 'LinkedIn' as two different sources, which splits your data. Use lowercase for every value.
Which UTM parameters are required?
Google recommends always setting utm_source, utm_medium, and utm_campaign. utm_content and utm_term are optional and useful for telling apart ads, links, or keywords within one campaign.
Should I use underscores or hyphens in UTM values?
Either works as long as you pick one and use it everywhere. A common choice is hyphens between words and underscores between parts of a structured campaign name. Avoid spaces, which turn into %20 or plus signs.
Should I put UTM tags on internal links?
No. UTM tags on links between pages of your own site start a new session attribution and overwrite the original source. Use them only on links that point to your site from outside.
What is the difference between utm_source and utm_medium?
Source is where the click came from, such as linkedin, google, or a newsletter name. Medium is the type of channel, such as social, cpc, or email. Source answers 'who sent it' and medium answers 'how'.
