Why UTM naming conventions matter
UTM values are case sensitive. Google Analytics reads utm_source=Meta and utm_source=meta as two sources, and SpringSale and Spring_Sale as two campaigns (Google Analytics Help). Nothing is broken, the clicks are all there. They are just split across rows, so totals look low and someone has to merge them by hand every month.
The second cost is channels. GA4 groups traffic into channels such as Email, Paid Social or Referral by reading your medium and source. A medium it doesn't recognise ends up in Unassigned, and that traffic drops out of every channel report.
One person building links rarely has this problem. It starts when three people, two agencies and a scheduling tool all write their own version of “newsletter”.
The five UTM parameters and what goes in each
| Parameter | Answers | Example |
|---|---|---|
utm_source | Who sent the visit? The site, platform or list. | linkedin, newsletter |
utm_medium | What kind of channel? Drives GA4 channel grouping. | email, paid_social |
utm_campaign | Which campaign or promotion? | 2026_04_spring_sale |
utm_term | Which paid keyword? Optional. | utm_builder |
utm_content | Which ad, link or creative? Optional. | hero_button, video_a |
Google recommends setting source, medium and campaign on every link. Term and content are optional, and many teams block term entirely outside paid search.
UTM naming convention rules that hold up
- Lowercase everything. It is Google's own recommendation and it removes the most common duplicate.
- One separator. Underscore or hyphen, never both, never spaces.
spring_saleandspring-saleare different campaigns. - No special characters.
#,&,?and%have a meaning in URLs. A#in a value cuts off everything after it. - A fixed list of mediums. Keep a short list and stick to it (table below). Medium is where new spellings hurt most because it decides the channel.
- One name per platform. Decide whether Facebook is
facebookorfband write it down. Google suggests a distinct source for each sub-platform, so Instagram gets its own value. - Campaign names built from parts in a set order. For example
date_name_market:2026_04_spring_sale_de. Dates first sort campaigns in time order in reports. - Short and readable. Set a length limit. If a value needs a legend to read, it is too long.
- Never on internal links. UTMs on links inside your own site start a new session and overwrite the real source.
utm_medium values GA4 understands
These come from GA4's default channel group rules. GA4 matches channel rules without regard to case, but your reports still show each spelling as its own value.
| Use this medium | GA4 channel |
|---|---|
email | |
social | Organic Social |
paid_social (with a social source) | Paid Social |
cpc (with a search source) | Paid Search |
display | Display |
referral | Referral |
affiliate | Affiliates |
sms | SMS |
audio | Audio |
Anything paid should start with paid or contain cp (cpc, cpm). GA4 then picks Paid Social, Paid Search or Paid Video from the source. A medium like newsletter_blast matches nothing and becomes Unassigned.
A UTM naming convention template you can copy
utm_source platform or list, lowercase: linkedin, google, newsletter
utm_medium one value from the list above: paid_social, cpc, email
utm_campaign yyyy_mm_name[_market]: 2026_04_spring_sale_de
utm_term paid keyword, optional: utm_builder
utm_content creative or placement: video_a, hero_button
Rules: lowercase, underscores only, no # & ? % or spaces,
campaign max 40 characters, utm_term only on paid search.Two links built with it:
https://example.com/pricing?utm_source=linkedin&utm_medium=paid_social&utm_campaign=2026_04_spring_sale_de&utm_content=video_a
https://example.com/blog/launch?utm_source=newsletter&utm_medium=email&utm_campaign=2026_04_spring_sale&utm_content=hero_buttonCommon UTM naming mistakes
- Mixed case:
Email,emailandEMAILin one month of data. - Medium used as source:
utm_source=emailwithutm_medium=newsletterswaps the two and breaks channel grouping. - Campaign names with no pattern:
spring,Spring Saleandsale-aprfor the same promotion. - UTMs on internal banners or menus, which rewrite the visitor's original source mid-visit.
- A convention that lives only in a spreadsheet. It is right on the day it is written and drifts after that.
How to enforce a naming convention in UTM Link
A document tells people the rules. A rule in the UTM builder makes the rules the only option. In UTM Link you write the convention once as a rule and attach it to the whole workspace, a team or a single project. When several rules apply, the most specific one wins: project, then team, then workspace.
A rule can:
- Mark each parameter as required, blocked or hidden.
- Lowercase every value as people type it.
- Reject values that contain prohibited characters.
- Set a maximum length per parameter.
- Show your own instructions next to a field, such as “Use the date first: yyyy_mm_name”.
The builder checks every link against the rule before it saves. A link that breaks the rule is not created, and the person building it sees exactly which value to fix. The tester at the top of this page runs the same check on sample data.
Saved parameter values and presets cover the other half. Instead of typing paid_social, people pick it from a list, so the spelling is the same every time. Links can also go out as short links on your own domain or as QR codes, and they still carry the same clean values.
Rolling it out to your team
- Export your last 90 days of source / medium / campaign values from GA4 and list the duplicates. That list is your argument for the change.
- Agree the template above, or your own version, in one short meeting.
- Create a workspace rule in UTM Link with lowercase on and prohibited characters set, then add project rules where a channel needs more.
- Save your mediums and sources as parameter values so nobody types them by hand.
- Bring old links in with CSV import, so the new rule and the old links live in one place.
Read the docs on projects and team roles to set up who can build links where.