How to write a UTM naming convention
Spell it once.Count it once.
A UTM naming convention is a short list of rules for writing utm_source, utm_medium and utm_campaign, so every link for the same thing lands in the same report row. Six rules do most of the work: lowercase only, one separator and no spaces, one medium per channel, one name for each place, one name for each campaign, and no personal data. Google Analytics keeps values as typed, so Newsletter and newsletter become two rows. The builder below checks each link against the rules and keeps your list.
By the Builderify team
An example, made up for this page
What is a UTM naming convention?
Six rules, each with a reason.
It is the rules you write down for the values in utm_source, utm_medium and utm_campaign, so two people tagging the same promotion type the same words. None of the rules is exotic: Google’s help page for its URL builder asks for most of them. The table gives each rule, what to write and where it comes from.
| Rule | What to write | Why |
|---|---|---|
| Lowercase only | newsletter, never Newsletter |
Google Analytics keeps values as typed, so utm_source=google and utm_source=Google are two values. Builderify’s User Journey also stores a source exactly as typed.
Read in Google Analytics Help |
| One separator, no spaces | spring-sale-2026: hyphens or underscores, not both |
Google’s own example is that SpringSale and Spring_Sale are two values. A space has to be sent as %20, and an & or a # inside a value breaks the tag.
Read in Google Analytics Help Shopify |
| One medium per channel | email, social, cpc and the rest of the list in chapter 03 |
Google says to use one utm_medium for each channel, and it files each visit under a channel by its medium and source. |
| One name for each place | Pick one spelling, such as facebook, and never fb, Facebook or facebook.com beside it |
Google says to use one utm_source for each platform (its own example is fb for Facebook), and Shopify points out that Google Analytics counts facebook, fb and facebook.com as separate sources.
Read in Google Analytics Help Shopify |
| One name for each campaign | The same utm_campaign on every link of one promotion |
Google says to use one name that matches the campaign, so a single marketing effort does not split into several rows.
Read in Google Analytics Help |
| No personal data | No email addresses, names or phone numbers in any tag |
Google’s policies don’t allow personal data in Google Analytics, and its guidance names all five utm parameters.
Read in Google Analytics Help |
Write the rules and your list of values on one page and share it with whoever builds links. The next chapters take the tags and the medium list in turn, chapter 04 checks a link against all six, and chapter 05 lists the ways reports split anyway.
Which utm_medium values does Google Analytics recognize?
Eleven that cover most links.
Pick the medium from a short fixed list, because Google Analytics files each visit under a channel by its medium and source. A medium that matches no rule ends up as Unassigned. The table gives eleven values, what each is for and the channel it lands in, from Google’s default channel group.
| utm_medium | Use it for | Google Analytics channel | Google’s rule |
|---|---|---|---|
email |
Newsletters, campaign emails, email signatures | Medium is email, e-mail, e_mail or e mail | |
social |
Unpaid posts, profile links, groups | Organic Social | Medium is social, social-network, social-media, sm, social network or social media, or the source is a social site |
paid-social |
Ads on social sites | Paid Social | A paid medium (ppc, retargeting, one that starts with paid, or one that contains cp) with a social source |
cpc |
Pay-per-click search ads | Paid Search | A paid medium, as above, with a search source such as google or bing |
display |
Banner and other display ads | Display | Medium is display, banner, expandable, interstitial or cpm |
affiliate |
Partners paid per sale or lead | Affiliates | Medium is affiliate |
referral |
A link on another site: a directory, a guest post, a partner page | Referral | Medium is referral, app or link |
sms |
Links in text messages | SMS | Medium or source is sms |
audio |
Podcast ads and reads | Audio | Medium is audio |
video |
Links in unpaid videos | Organic Video | Medium contains video, or the source is a video site |
push |
Push notifications | Mobile Push Notifications | Medium ends with push, or contains mobile or notification |
The source picks the paid channel too
Google chooses Paid Search, Paid Social, Paid Video or Paid Shopping from the source as well as the medium. A paid medium with a source Google doesn’t know lands in Paid Other. So set the source to the platform: facebook with a paid medium, not a paid medium alone.
Read in Default channel group
No medium fits?
Print, QR codes and flyers have no medium in Google’s list. Choose the closest value, or invent one such as print, and expect Unassigned in the default channel group unless you set up a custom one. Write the choice in your list so everyone uses the same word.
Channel rules ignore case. Reports don’t.
Google’s channel rules are not case sensitive, but its parameter values are. Email and email reach the same channel and still show as two rows in a source and medium report. The case rule in chapter 01 still applies.
How do I build UTM links that follow the rules?
Type it. The rules check it.
Fill in the page and the three main tags, and the builder checks each one against the six rules, says what is wrong and fixes it in one click. Save the links you use and their sources, mediums and campaigns become the list the checks use, with a CSV to share. It runs in your browser: nothing you type is sent anywhere, and the list stays in this browser.
3 things to fix. Press Fix all, or change the fields yourself. The link below uses your text as typed.
3 things to fix
Press Fix all, or change the fields yourself. The link below uses your text as typed.
Page addressOK
A full address.
SourceFix
Newsletter→newsletter. Has capitals.MediumFix
e-mail→email. One name for each channel.CampaignFix
Spring Sale 2026→spring-sale-2026. Has capitals and spaces.Content and termOptional
Optional. Leave them empty unless two links in one place need telling apart, or you tag a paid keyword.
Personal dataOK
No email address in any tag.
Your link, as typed
https://fernhillplants.example/spring-sale?utm_source=Newsletter&utm_medium=e-mail&utm_campaign=Spring%20Sale%202026
Your saved links (0)
No links saved yet. Save a good one and its source, medium and campaign become the list your next link is checked against. The list stays in this browser, so download the CSV to keep or share it.
What it checks
Lowercase, no spaces, one separator, a medium from the list, a source and a campaign spelled the way your saved links spell them, and no email address in any tag. A tip is worth a look but isn’t wrong, such as a medium that is not on your list.
What it builds
Your text as typed, encoded, in the order source, medium, campaign, term, content, before any # on the address. Tags already on the address are replaced. Press Fix all to apply the fixes, or edit the fields yourself.
What it keeps
Saved links live in this browser only. Clear your browsing data and they are gone, so download the CSV, which opens in any spreadsheet. A spreadsheet of links is also the easiest way to share the list with whoever else builds them.
Need to shorten the result as well? The Bitly guide has a plain builder that does only that, and Short Links can add the tags for you.
Why does one campaign show up twice?
Eight causes, in the order we’d check.
Almost always because two links spell the same thing differently. Reports group by the exact text in each tag, so every variant gets its own row. Work down the list: the first three need no tool, only a rule.
Fixing the spelling doesn’t merge old rows: they keep the spelling they were recorded with. Note the date you started the rule, and read the rows before and after it together.
-
01
Capitals
You see
Newsletterandnewsletteron separate rowsFixWrite every value in lowercase from now on. Old rows keep their old spelling, so add them up by hand or read both.
Google Analytics keeps values as typed, so utm_source=google and utm_source=Google are different values. Builderify’s User Journey does the same.
Read in Google Analytics Help
-
02
Two names for one place
You see
facebook,fbandfacebook.comin one reportFixChoose one spelling for each place, write it in your list and build every link from the list.
Each spelling is its own value. Google asks for one utm_source for each platform, and Shopify names these three as an example.
Read in Google Analytics Help Shopify
-
03
A separator that changes
You see
spring-sale,spring_saleandSpringSaleside by sideFixUse one separator in every tag. The builder’s separator switch rewrites the other one for you.
Google’s example of two values that look alike is SpringSale and Spring_Sale.
Read in Google Analytics Help
-
04
A medium Google doesn’t know
You seeVisits under Unassigned in the default channel group
FixTake the medium from the list in chapter 03. If a link has no good match, choose the closest one and write the choice in your list.
Google Analytics files a visit under Unassigned when no channel rule matches its source and medium.
Read in Default channel group
-
05
Tags that are missing
You see
(not set)in a source, medium or campaign columnFixPut source, medium and campaign on every tagged link. The builder marks the missing one.
Google strongly recommends setting every relevant tag when you set one, and a tag you leave out is reported as (not set).
Read in Google Analytics Help
-
06
A space, & or # inside a value
You seeA campaign cut short, or a tag that never arrives
FixUse letters, digits and one separator. The builder rewrites the rest, and puts the tags before the # on a page address.
A parameter ends at the next &, and a # starts the fragment, which the browser never sends to the server. A space is sent as %20.
Read in MDN Web Docs Shopify
-
07
Tag names in capitals
You seeNo source in User Journey for a link that has tags
FixWrite the names exactly as utm_source, utm_medium, utm_campaign, utm_term and utm_content. The builder always does.
User Journey reads tag names in lowercase only, so UTM_Source=newsletter counts as no tag at all.
-
08
Personal data in a tag
You seeAn email address in a campaign column
FixNever use a merge field in a tag. Name the group instead, such as welcome-series.
Google’s policies don’t allow personal data in Google Analytics, and its guidance names all five utm parameters. A merge field in an email tool can drop a subscriber’s address straight into a link.
Read in Google Analytics Help
How does Builderify read my UTM tags?
Exactly as you write them.
User Journey reads the five tags from the page a visit starts on, and keeps each value as you wrote it. User Journey records visits itself, through the Builderify script tag. It doesn’t read your Google Analytics data. So Newsletter and newsletter are two rows in its Campaigns table, and the six rules matter here as much as they do in Google Analytics.
To act on what the tags tell you, read how to track which campaign brings leads and where your website traffic comes from. A visitor who joins a lead list through a popup or form keeps the source of their first visit on their profile. For what else a site can and can’t know about one visitor, read can you see who visits your website.
Short Links
The link editor has a Tracking parameters section with a box for each of the five tags. They are added to every destination of the link, so the short address you share stays clean. Put the tags there or at the end of the Destination URL, not in both: Short Links does not check for a repeat.
User Journey
Each tag is trimmed and cut at 150 characters. A visit’s source is its utm_source as written (up to 100 characters), ahead of an ad click ID such as gclid and ahead of the referring site. Tag names are read in lowercase only, so UTM_Source counts as no tag.
Paid or not
Insights lists campaigns by source, medium and campaign, and flags one as paid when its visits carry an ad click ID or a medium of cpc, ppc, paid, paid-social, display, ads, cpm or retargeting. Google Analytics would also treat paid-search as paid and Builderify would not, so tag search ads cpc.
Start on the free plan: 250 credits a month and no monthly fee. User Journey is charged at 0.1 credit for each tracked journey, and the pricing page has the whole rate card. Add Short Links when you want the tags added for you.
Start freeUTM naming, answered.
A UTM naming convention is a short set of rules for how you write utm_source, utm_medium and utm_campaign, so every link for the same thing lands in the same report row. The usual rules are lowercase only, one separator and no spaces, one medium per channel, one name for each place and campaign, and no personal data. Google Analytics keeps values as typed, so without rules one campaign can split into several rows.
Yes. Google Analytics treats utm_source=google and utm_source=Google as different values, and Google's own advice is to use lowercase as the standard. Builderify's User Journey also stores a source exactly as typed, so Newsletter and newsletter are two rows. The tag names must be lowercase too: User Journey does not read UTM_Source.
Either works, as long as you use only one. Google's own examples use both, such as summer-sale and spring_sale, and it notes that SpringSale and Spring_Sale are different values. Pick one separator, avoid spaces, and let the builder on this page rewrite the other one for you.
One value for each channel, taken from a short list such as email, social, paid-social, cpc, display, affiliate, referral, sms and audio. Google Analytics files each visit under a channel by its medium and source, and a visit that matches no channel rule is shown as Unassigned. Write the list down so everyone who builds links uses the same words.
No. Google says to always use utm_source, utm_medium and utm_campaign, and the other two add detail only when you need it. Use utm_content to tell apart two links in the same place that go to the same page, such as a banner and a footer link in one email, and utm_term only to name the keyword on paid search ads.
The source is the place that carries the link, such as newsletter, facebook or a partner's name. The medium is the kind of place, such as email, social or cpc. If the same value could go with many different sources, it is a medium.
No. Tags belong on the links people click to reach your site. Builderify's User Journey takes a visit's tags from the page the visit starts on, so a tagged link between two of your own pages adds nothing to it. Track what people do on your own pages with a goal instead.
The Short Links editor has a box for each of the five tags and adds them to every destination of a link. The builder on this page is separate: it runs in your browser, checks your values against the six rules and keeps your saved links in this browser only. Nothing you type there is sent to Builderify.
Sources
Google’s help pages, Shopify’s article and MDN were read on 1 November 2026. The channel rules in chapter 03 are paraphrased from Google’s default channel group page, and Google can change them. The Builderify details come from the product itself on that date. Fernhill Plants, its links and the numbers in the report at the top are made up.
Stop losing the visitors
you already paid for.
More leads from the traffic you already have, and follow-up that sends itself. Free to start. No card, no monthly fee.