UTM Naming Conventions That Survive a Year, With a Free UTM Builder
A UTM naming convention survives a year when it is more than a style rule. It needs lowercase, hyphenated values, a fixed list of allowed source and medium values, and a named owner who keeps a link log and reviews links before launch. The guides that rank for this topic agree on the formatting and say little about who maintains it, so this page adds the governance rules, a worked example and a spreadsheet builder you can copy.
- Write values in lowercase, join words with hyphens, avoid spaces and special characters, and never tag links inside your own site.
- Pick one model (positional for small teams, key-value for many channels, cryptic only with a lookup table) and fix the allowed source and medium values in writing.
- Formatting rules are what the top guides cover. What keeps a convention alive for a year is governance: an owner, one builder, a link log, a pre-launch review and a monthly audit.
- Kanso's own UTM builder is a planned tool and is not built yet, so this page gives a spreadsheet version you can copy today.
What is a UTM naming convention?
A UTM naming convention is a written rule set that fixes which values each UTM parameter may take and how they are spelled, so that every tagged link is reported under the same names.
UTM stands for Urchin Tracking Module, a name utmbuilder.com traces to Urchin Software Corporation, the company Google acquired to create Google Analytics. A UTM parameter is a tag added to the end of a link so an analytics tool can tell where a click came from.
UTM.io's guide makes the point that the convention is your own choice, not a standard. If you always write paid-social as the medium for paid social campaigns, that habit is part of your convention, and a team that writes social-ads instead is equally valid as long as everyone does the same.
Why do UTM naming conventions fail within a year?
They fail because the people and channels using them change faster than the document describing them. The cause is rarely a bad rule. It is a new person, a new channel or an old link that nobody checked.
The cost of one slip is documented. Improvado notes that a source tagged facebook and another tagged Facebook show up as two sources, which breaks aggregation and wastes time on cleanup. UTM.io adds that mistakes in tags are permanent, and utmbuilder.com says cleaning cannot repair historical records.
Vendor statistics about the scale of the problem should be read with care. utmbuilder.com says 20% of companies get imprecise metrics from poor UTM use and 30% of large organizations invest budget without reliable tracking, while Improvado says roughly 30% of large organizations lack a reliable way to track campaigns, based on its own experience. Neither names a study or a method, so treat them as vendor claims, not benchmarks.
The table below is Kanso's analysis of how a convention decays in practice and which governance rule blocks each route. It is a reading of the guides' advice, not a measured result.
| Decay | What it looks like in reports | Control |
|---|---|---|
| A new person invents a value | The same channel appears under two or three spellings in the source and medium reports | Governance rules 2 and 3 below: one vocabulary, and links built from one builder with drop-down values |
| A new channel starts with no row in the vocabulary | Links for the channel use whatever the first person typed | Governance rule 6: a request process that adds the value before the first link goes out |
| An old link is copied and edited | Last year's campaign name or a retired value reappears | Governance rules 4 and 7: a link log to copy from, and retired values marked as retired |
| The convention changes and old links stay live | Reports mix two structures and filters stop matching | Governance rule 6: every change is dated, and filters are updated in the same change |
Which UTM parameters need a naming convention?
All five do, but three matter on every link: source, medium and campaign. Both utmbuilder.com and UTM.io call those three essential and term and content optional.
| Parameter | What it answers | Status | Example value |
|---|---|---|---|
| Source | Where the traffic comes from | Required | A platform or list name such as facebook |
| Medium | How the visitor arrived | Required | cpc, paid-social, email |
| Campaign | Which promotion or initiative drove the click | Required | summer-sale-2026 |
| Term | The paid search keyword that triggered the ad | Optional | marketing-software |
| Content | Which creative or link placement was clicked | Optional | cta-button-top, text-link-sidebar |
Improvado lists cpc, organic, email, social, display and referral as typical medium values. Those are examples, not a standard, so your vocabulary should decide which of them you actually allow.
Two platform features interact with this. utmbuilder.com says Google Ads auto-tagging works well inside one platform while manual tagging works everywhere, and Improvado says macros in Google Ads and Meta Ads Manager reduce typing errors. The macro syntax is in each platform's own documentation, which this research did not include, so check it there before relying on it.
What are the three UTM naming models?
The three models are cryptic, positional and key-value, and all three guides describe the same trio. They differ in how much meaning a value carries and how much upkeep it needs.
| Model | Example | Strength | Weakness | The guides say it suits |
|---|---|---|---|---|
| Cryptic | A code such as cmp_9021 stands for the campaign | Short URLs, and names that outsiders cannot read | Needs a lookup table, and one wrong code can go unnoticed | Large or security-conscious organizations with strict automation |
| Positional | Fixed order, such as facebook-cpc-summer-sale-cta-top | Readable at a glance, easy to start | A missing or misplaced field shifts everything after it | Small teams with repeatable campaigns |
| Key-value | Each value carries a label, such as la-en!t-shopping!c-retargeting | Flexible, order does not matter, easy to automate | Longer URLs, and the keys need documentation | Mid-size teams with many channels and regions |
UTM.io points out the hidden cost of the positional model: adding a variable later means restructuring every existing campaign name. It recommends a hybrid for most teams with complex multi-channel campaigns, using a positional campaign name as the base and adding key-value pieces when another dimension is needed.
How do you choose between the models?
Choose by four questions about your team, and default to a readable model unless you can maintain a lookup table. The guides state who each model suits but do not publish a single decision rule, so this table is Kanso's synthesis of their "best for" statements.
| Question | Answer | Model to lean toward |
|---|---|---|
| Do three or fewer people build links, and do campaigns repeat the same shape? | Yes | Positional, with the field order written down |
| Do campaigns carry many optional dimensions (region, audience, offer) that differ between them? | Yes | Key-value, or positional for the core fields with key-value extensions |
| Must competitors and partners be unable to read your campaign names from the URL? | Yes | Cryptic, and only with a maintained lookup table |
| Is nobody available to maintain a lookup table or a validation tool? | Yes | Not cryptic: choose a readable model |
For a team of one to five, a positional campaign name with a fixed field order is the least effort to keep. Kanso's suggestion for the first time you need a new field is to add it at the end, so older names remain a valid prefix of newer ones.
What are the core UTM naming rules?
Seven rules do most of the work, and they cover formatting, standard values and one placement rule. They are the ground the three guides share, with the source for each shown in the table.
| Rule | Do | Avoid | Why, and from whom |
|---|---|---|---|
| 1. Lowercase everything | Improvado and utmbuilder.com both say the two spellings are counted as separate sources | ||
| 2. Hyphens between words | summer-sale | summer sale | Improvado says spaces become %20 and clutter the tag; utmbuilder.com says spaces and special characters break links |
| 3. Descriptive but short | 2026-q3-product-launch | pl, or a sentence-length name | Improvado: too vague is unreadable later, too long is unmanageable |
| 4. One medium per channel type | paid-social for every team | social-ads on one team and paid-social on another | utmbuilder.com: standardize the same medium for the same channel types across teams |
| 5. Keep paid and organic apart | A paid-social medium for paid clicks | One medium for both | utmbuilder.com: separation stops organic referrals mixing with paid clicks |
| 6. One campaign name per promotion | The same name on every channel | A different name per channel | UTM.io: use one cross-channel description of what is being promoted |
| 7. No tags on internal links | Event tracking or custom dimensions | A tagged banner link on your own site | Improvado and utmbuilder.com: a tag on an internal link overwrites the original source |
The sources disagree in two places. Improvado tells teams to use hyphens and avoid underscores entirely, while utmbuilder.com and UTM.io describe a scheme with underscores inside a field and hyphens between fields. UTM.io's own campaign example also uses a capitalized region and month, which breaks the lowercase rule the other two guides call non-negotiable.
Kanso's recommendation is to follow lowercase without exception, because case differences create duplicate rows. On delimiters, pick one of the two schemes and write it down, which matters more than which one you pick.
How should you structure the campaign value?
Put the structure in the campaign value: fix the fields, their order and the delimiters, and keep source and medium simple. UTM.io argues the campaign parameter has the best default reporting in analytics tools, ad platforms and CRMs, which makes it the natural place to carry extra detail.
UTM.io's examples show what goes in. For an email campaign it adds region, month and promotion type to the campaign value, and for an affiliate campaign it puts the affiliate ID there instead of in a custom parameter. In its shoe store example, region, brand, shoe type and model sit in the campaign value, so a filter on one field isolates every matching campaign.
Here is a pattern built from that idea, using the two-delimiter scheme and lowercase throughout. The fields are Kanso's illustration, so replace them with the dimensions your reports need.
initiative-region-period-audience
The campaign value product_launch-us-2026_10-founders reads as an initiative called product launch, in the US, in October 2026, aimed at founders. Splitting on the hyphen returns exactly four fields, which only works because no field contains a hyphen of its own.
That is the practical reason to choose the two-delimiter scheme if you plan to filter or split campaign names later. With hyphens everywhere, a value like 2026-q3-product-launch is readable by a person but cannot be split into fields reliably. Pick the scheme that matches how you will analyze the data.
What do source and medium look like for each channel?
Source names the specific platform or list and medium names the kind of delivery, with paid and organic kept in separate mediums. The values below follow examples in the three guides, and your vocabulary should fix one spelling for each.
| Channel | Source | Medium | Content or term |
|---|---|---|---|
| Paid social | The network, such as facebook | paid-social | Creative or placement |
| Paid search | The engine, such as google | cpc | The keyword goes in term |
| The list or provider name | Which link was clicked: header logo, button or footer text | ||
| Organic social | The network | social | The creative variant or link placement |
| Display | The network or publisher | display | The creative variant |
Email is where the guides give the most specific advice. utmbuilder.com says the source should identify your provider or list, and UTM.io's TaskRabbit example argues for the list name over the sending platform, because a company that uses one email platform learns nothing from tagging it. utmbuilder.com adds that content values show whether the header logo, a button or footer text got the click.
utmbuilder.com also notes that lowercase values keep default channel groupings clean. If you rely on your analytics tool to sort traffic into channels, a stray spelling can leave a campaign in the wrong group.
Which governance rules keep a convention alive for a year?
Eight rules keep it alive: an owner, one written vocabulary, one builder, a link log, a review before launch, a request process for changes, retirement of old values and a monthly audit. Four come straight from the guides, one is partly documented and three are Kanso's analysis, labelled in the table.
| Rule | In practice | Basis | Source or note |
|---|---|---|---|
| 1. Name an owner | One person approves changes to the vocabulary and answers questions about it | Analysis | No source assigns this role, but each guide's call for a central rule set implies someone keeps it |
| 2. Keep one written vocabulary | A single document lists every allowed source, medium and campaign pattern | Documented | Improvado: a central governance document everyone can reach. utmbuilder.com: a master record of conventions |
| 3. Build links in one place | A shared builder or sheet with prefilled, approved values | Documented | Improvado, utmbuilder.com and UTM.io all push a shared builder over hand-typed links |
| 4. Log every link | Each link is recorded with its date, creator and purpose | Documented | Improvado: a running log of active and historical tags, to prevent duplicates |
| 5. Review before launch | A second person checks links against the vocabulary before they go live | Documented | Improvado: have someone who knows the convention review links as part of campaign QA |
| 6. Change values through a request | New values are added, dated and announced, never improvised | Partly documented | Improvado says to document changes and evolve the standard. The request steps below are Kanso's suggestion |
| 7. Retire values, do not reuse them | A value that is no longer valid is marked retired and kept in the log | Analysis | Not covered by the three guides |
| 8. Audit against real reports | A monthly check of the reports for values outside the vocabulary | Analysis | The GA4 report path comes from utmbuilder.com; the cadence is Kanso's suggestion |
The hardest rule to hold is the third, because people copy old links or build tags directly inside an ad platform and skip the sheet. No setting prevents it, so the practical defence is the audit in rule 8. Anything in the reports that is not in the vocabulary points back to a link built outside the process.
A change process that takes five minutes
Rule 6 is the one most teams skip, so here is the process in steps. It is Kanso's suggestion and is deliberately short enough that nobody works around it.
- The person who needs a new value sends the proposed spelling and what it will be used for.
- The owner checks it against the vocabulary for an existing value that already covers it.
- If it is new, the owner adds a row with the date, the requester and the purpose, and announces it.
- The builder's drop-down list is updated, and only then is the first link created.
What does a controlled vocabulary look like?
It is a short table of the only allowed source and medium pairs, each with its use. The example below is for a hypothetical four-person software team and is illustrative: the team and the values are invented to show the format, not drawn from a real company.
| Source | Medium | Used for | Content values |
|---|---|---|---|
| paid-social | Sponsored posts and ads | creative name | |
| social | Unpaid posts from the company page | post name | |
| paid-social | Paid campaigns | creative name | |
| cpc | Paid search | not used (keyword goes in term) | |
| weekly-newsletter | The company's email list | link position, such as header-logo or footer-text | |
| partner-directory | referral | A listing on a partner site | not used |
Notice what the table removes. Nobody can choose between LinkedIn, Linkedin and linkedin because only one spelling exists, and a request process decides whether a seventh row is needed.
The arithmetic shows why memory is not a control. The word linkedin has 8 letters and each can be upper or lower case, giving 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 2^8 = 256 possible spellings. A tool that treats case as significant, which Improvado and utmbuilder.com say analytics tools do, could report any of them as a separate source, and the vocabulary allows exactly one.
How do you build a free UTM builder in a spreadsheet?
Build it as one sheet with drop-down lists for the controlled columns, calculated columns for the campaign value and the final link, and a row for every link created. Kanso lists a UTM Builder among its planned free tools, but that page says the tool is not built yet as of 29 October 2026, so this version works in any spreadsheet.
| Column | Type | Rule it enforces | Example |
|---|---|---|---|
| Destination page | Text | A page on your own site; the sheet rejects links that already hold tags | A landing page URL |
| Source | Drop-down | Only values from the vocabulary | |
| Medium | Drop-down | Only values from the vocabulary | paid-social |
| Initiative | Drop-down or short text | Lowercase, underscores inside the value | product_launch |
| Region | Drop-down | Lowercase code | us |
| Period | Text | Year and month, underscore inside | 2026_10 |
| Audience | Drop-down | Lowercase, underscores inside the value | founders |
| Campaign (formula) | Calculated | Initiative, region, period and audience joined by hyphens, in lowercase | product_launch-us-2026_10-founders |
| Content and term | Optional text | Lowercase, hyphens, checked for spaces | header-logo |
| Final link (formula) | Calculated | Destination, a question mark, then each filled parameter as name, equals sign and value, joined by ampersands | Ready to paste |
| Created by, date, status | Text | Filled for every row; status is live or retired | A name, a date, live |
Force lowercase with the spreadsheet's lowercase function and replace spaces with the substitute function, so a pasted value cannot break the rule. Use data validation on the source, medium, region and audience columns so only vocabulary values are accepted.
The final link uses the five standard parameter names, which are the utm prefix followed by source, medium, campaign, term and content. Leave the optional two out of the link when their cells are empty, so no blank tag is added.
There is a fair counterpoint. utmbuilder.com says manual spreadsheets lack validation and scale poorly, and UTM.io says spreadsheets do not enforce conventions, but both sell dedicated tools. A validated sheet closes the first gap and does nothing for the second, since a sheet cannot stop anyone building a link elsewhere.
Move to a dedicated tool when links come from more people than one owner can review or when you need bulk generation for many links. The dedicated tools the guides describe also offer templates and dynamic variables, but this research did not test any of them, so compare their current features on their own sites.
How do you audit and repair a UTM convention?
Audit monthly by reading your analytics reports for values that are not in the vocabulary, then fix each one at its origin. For GA4, utmbuilder.com gives the path as Reports, Acquisition, Traffic acquisition, with the Session source/medium and Session campaign dimensions.
- Open the report for the last full month and list every source/medium pair and campaign value.
- Mark each value that is not in the vocabulary, and each campaign that does not match the pattern.
- Find the link in the log, or note that it has no log row, which means it was built outside the process.
- Fix the live link at its origin and record the correction in the log.
- Tell the person who built it which rule it broke.
Repair has a limit. UTM.io and utmbuilder.com both say bad tags cannot be corrected in data already collected, so the fix changes future clicks only. Grouping messy historical values in your reporting layer is the usual workaround, and utmbuilder.com shows regular expressions being used to group campaign data, though the three guides do not give a full repair procedure.
| Mistake | Impact | Prevention |
|---|---|---|
| Internal link tagging | Overwrites the original source of the session | Use event tracking or custom dimensions |
| Redundant parameters | Clutters reports | Keep source and medium distinct from each other |
| Special characters | Breaks URLs | Stay with letters, numbers and hyphens, plus the one underscore rule you chose |
| No central log | Creates naming conflicts across teams | Use the shared sheet or tool, and the link log |
The questions people bring to this topic match these gaps. A r/GoogleAnalytics thread on keeping track of UTM links asks about the log, and a r/GoogleAnalytics thread on using UTMs in GA4 asks about reading the results. The two halves of this page, the log and the report audit, answer those two questions.
What is documented and what is analysis?
The formatting rules, the three models and the GA4 path are documented by the three vendor guides, while the governance additions, the decision table and the builder design are Kanso's analysis. The lists keep the two apart.
Documented in the sources
- Lowercase, hyphens and no spaces, from Improvado and utmbuilder.com.
- The cryptic, positional and key-value models and who each suits, from all three guides.
- Tags on internal links overwrite the original source, from Improvado and utmbuilder.com.
- A central document, a shared builder, a link log and a pre-launch review, from Improvado.
- Structure in the campaign value and the hybrid model, from UTM.io.
- The GA4 report path for checking source, medium and campaign, from utmbuilder.com.
Kanso's analysis
- The decay table and the claim that governance, not formatting, decides whether a convention lasts a year.
- The owner role, the retirement rule, the monthly audit cadence and the five-minute change process.
- The decision table, which combines the guides' best-for statements.
- The controlled vocabulary, the campaign pattern and the spreadsheet builder, all illustrative.
- The 256-spelling arithmetic, which assumes the case-sensitivity the guides describe.
The evidence has limits. All three guides come from vendors that sell UTM or marketing-data tools, no official analytics documentation was available for this page, and the research contains no measurement of how conventions perform over time. Confirm how your analytics tool treats case and special characters in its own documentation before you rely on any rule here.
UTM naming convention: frequently asked questions
What is a UTM naming convention?
A UTM naming convention is a written rule set that fixes which values each UTM parameter can take and how those values are spelled. It exists so that every link built by every person lands in analytics under the same names. UTM.io describes it as how you combine and structure individual parameters into a single, repeatable code.
What does UTM stand for?
UTM stands for Urchin Tracking Module. Both utmbuilder.com and UTM.io say the name comes from Urchin, the analytics software company that Google acquired and turned into Google Analytics.
Which UTM parameters do I have to use?
Use three on every tracked link: source, medium and campaign. utmbuilder.com and UTM.io both call these the essential three and term and content optional. Term mainly serves paid search keywords, and content separates creative variants or link placements.
Are UTM values case-sensitive?
Yes, so facebook and Facebook are reported as two different sources. Improvado and utmbuilder.com both give this example, and both recommend lowercase for every value to prevent duplicate rows.
Should I use hyphens or underscores in UTM values?
Use hyphens between words, since Improvado and utmbuilder.com both recommend them over underscores and spaces. utmbuilder.com adds an optional scheme with underscores inside a field and hyphens between fields, which makes fields easier to filter. Whichever you choose, write it down and use it everywhere.
Which UTM naming model should my team use?
Small teams with repeatable campaigns suit the positional model, and teams with many channels and regions suit the key-value model. The cryptic model hides names from outsiders but needs a lookup table. UTM.io recommends a hybrid for most complex teams: a positional campaign name with key-value extensions where needed.
How do you keep UTMs consistent as more people and channels get involved?
Keep them consistent by taking the choice of values away from individuals: one written vocabulary, one builder with drop-down values, a link log and a review before launch. Improvado lists those controls among its eight rules. Rules that live only in a document decay, which is why this page treats governance as part of the convention.
How do you keep track of UTM links?
Keep a log with one row per link recording the final URL, its date, its creator, its purpose and whether it is live or retired. Improvado recommends a running log of all active and historical tags to prevent duplication. A shared builder sheet can double as that log.
Should I put UTM parameters on internal links?
No. Improvado and utmbuilder.com both warn that a tag on a link inside your own site overwrites the visitor's original source, so a session that started in organic search can appear to come from your homepage banner. Track internal clicks with events or custom dimensions instead.
Are custom UTM parameters better than a structured campaign name?
Usually not, according to UTM.io, which says extra custom parameters add reporting complexity. It suggests packing sub-fields such as region, month and audience into the campaign value and keeping a custom parameter for the case where you want to report on that single dimension alone.
How do I check my UTM naming in GA4?
Open Reports, then Acquisition, then Traffic acquisition, and read the Session source/medium and Session campaign dimensions. utmbuilder.com gives that path as the way to see how your naming performs. Any value that is not in your vocabulary is a link built outside your process.
Sources
- Ultimate Guide to UTM Naming Conventions & Best Practices, Improvado
- Master UTM Naming Conventions for Better Campaign ROI, utmbuilder.com
- Advanced UTM Naming Convention Guide (Benefits, Uses & Workflow), UTM.io
- How do you guys keep track of UTM links?, Reddit, r/GoogleAnalytics
- How do you effectively use UTM in GA4, Reddit, r/GoogleAnalytics
Note: Facts are attributed to three vendor guides and two public forum threads, all read on 29 October 2026, because no official or primary document was supplied for this topic. The vocabulary example and the governance rules marked as analysis are Kanso's own work and are illustrative, not data from any company. This page contains no test or survey results. Kanso has no affiliation with Improvado, UTM.io or utmbuilder.com.
Toolkit