If three people on your team tag links, you probably already have "facebook," "Facebook" and "fb" sitting in Google Analytics as three different sources. The fix is a short, written UTM naming convention for marketing teams: a list of allowed values for each parameter, a few formatting rules, and one place where everyone builds links. This guide gives you a convention you can copy today, built around the rules Google Analytics 4 actually uses to sort traffic.
If you need a refresher on what each tag does first, read our plain-English guide to UTM parameters. Everything below assumes you know the five tags and want your team to use them the same way.
What does a UTM naming convention for marketing teams need to settle?
A convention is not a philosophy document. It is a one-page answer to five questions, so nobody has to guess when they build a link at 6 p.m. before a launch:
- Formatting: case, separators, and which characters are banned.
- utm_medium: a short, closed list. People pick from it. They do not invent new values.
- utm_source: one exact spelling for every platform, newsletter and partner.
- utm_campaign: a pattern, so names sort and group well in reports.
- utm_content and utm_term: when to use them and what goes in them.
Add one owner who approves new values, and you are done. The rest of this post fills in each answer.
Five formatting rules to agree on first
These rules cause the most damage when they are missing, and they take two minutes to agree on.
- Lowercase everything. Google's own help page says parameter values are case sensitive, and gives utm_source=google and utm_source=Google as its example of two different values. One capital letter creates a second row in your reports.
- Use dashes between words. Write black-friday, not black friday. A space gets encoded as %20 or a plus sign, and it is easy to mistype.
- Use underscores only to separate parts of a campaign name. For example, 2026-11_black-friday_customers. Dashes join words; underscores split sections. Pick this and never mix it up.
- No special characters. Skip &, #, ?, /, quotes and emoji. Several of these have meaning inside a URL and will cut your tag short.
- Always fill in source, medium and campaign. Google recommends using all three every time. If you leave one out, reports show (not set) for it.
Pick medium values GA4 already understands
This is where most homemade conventions go wrong. GA4 reads utm_medium (and sometimes utm_source) and drops each visit into a channel such as Email or Organic Social. The rules are fixed, and you cannot edit them. If your values do not match any of them, the visit lands in Unassigned, which is useless for reporting.
Google publishes the full list on its default channel group page. Here are the values worth putting in your convention, and the channel each one produces for links you tag by hand:
| Use this utm_medium | GA4 channel | Use it for |
|---|---|---|
| Newsletters, drip sequences, sales emails | ||
| social | Organic Social | Unpaid posts, bios, comments |
| paid-social | Paid Social (when the source is a known social site) | Facebook, Instagram, LinkedIn, TikTok ads |
| cpc | Paid Search (when the source is a known search engine) | Bing or Google search ads you tag manually |
| display | Display | Banner ads |
| affiliate | Affiliates | Affiliate and partner links that pay commission |
| referral | Referral | Guest posts, directories, unpaid partner mentions |
| sms | SMS | Text message campaigns |
| audio | Audio | Podcast ads and sponsorships |
Two details from Google's rules are worth knowing. First, the paid channels match any medium that starts with "paid," so paid-social works, but only when the source is on Google's list of social sites. A made-up source like "partnerapp" with paid-social ends up as Paid Other. Second, the channel rules themselves ignore case, but your reports do not. That is why lowercase still matters even when the channel looks right.
Not sure where the line between source and medium falls? Our post on the difference between utm_source and utm_medium covers it with examples.
Which source names should your team use?
Source answers "where exactly did this click come from?" The rule is simple: one platform, one spelling, forever. Write the full list into your convention so nobody has to remember it.
- Social: facebook, instagram, linkedin, tiktok, youtube, pinterest, x, threads
- Email: the name of the list, such as weekly-newsletter or onboarding-series
- Partners: the partner's domain without ".com," such as acmeblog
- Offline: the physical item, such as flyer, postcard or booth-banner
Use the real platform name for social sources instead of shorthand like "fb" or "ig." GA4 checks the source against its list of known social sites, and the full name is the safest way to be recognized. Shorthand also confuses new teammates.
How should you name campaigns?
Campaign names are where teams get creative, and creativity is the problem. Use a fixed pattern with the same parts in the same order:
year-month_topic_audience
Examples: 2026-11_black-friday_customers, 2026-12_webinar-pricing_trial-users, 2027-01_new-year-promo_all.
Putting the date first means campaigns sort in time order in any report or spreadsheet. The topic tells you what it was. The audience lets you compare the same offer sent to different groups.
There is a trade-off. A pattern with several parts only works if everyone follows the exact order. If your team is two people sending one newsletter a week, a plain name like black-friday-2026 is fine. Add parts only when you will actually filter by them.
What goes in utm_content and utm_term?
These two are optional, and many small teams never need them. Use them on purpose, not by habit.
- utm_content tells apart links that share the same source, medium and campaign. Good values describe the link or creative: header-button vs footer-link, or video-30s vs carousel-a.
- utm_term was made for paid search keywords. Outside search ads, most teams leave it empty. If you do repurpose it, write down what it means so it stays consistent.
A worked example: one launch, four channels
Say a small skincare brand launches a holiday gift set and promotes it four ways. The landing page is https://example.com/gift-set. Here is how each link looks under the convention above:
- Newsletter, main button: https://example.com/gift-set?utm_source=weekly-newsletter&utm_medium=email&utm_campaign=2026-11_gift-set-launch_customers&utm_content=hero-button
- Instagram bio: https://example.com/gift-set?utm_source=instagram&utm_medium=social&utm_campaign=2026-11_gift-set-launch_all
- Facebook ad: https://example.com/gift-set?utm_source=facebook&utm_medium=paid-social&utm_campaign=2026-11_gift-set-launch_all&utm_content=video-15s
- In-store flyer with a QR code: https://example.com/gift-set?utm_source=flyer&utm_medium=print&utm_campaign=2026-11_gift-set-launch_local
In GA4, the first three land in Email, Organic Social and Paid Social. The campaign name follows the same pattern across all of them, so you can filter on "gift-set-launch" to see the whole launch, then break it down by channel.
The flyer is the honest exception. "print" is not one of GA4's default medium values, so those visits show up as Unassigned in the channel report. You will still see them by source and campaign. If offline traffic matters to you, create a custom channel group in GA4 (Admin, then Channel groups) with a rule that maps medium "print" to a channel you name "Offline." That is cleaner than forcing the flyer into "referral," which would mix it with real referral traffic. For more on tracking printed codes, see how to track QR code scans.
Where should the convention live?
A convention nobody can find gets ignored within a month. Keep it in one shared spreadsheet with two tabs.
Tab 1, Allowed values: one column each for medium, source and campaign pattern, plus a column for who owns each channel. Only the owner adds new rows.
Tab 2, Link log: one row per link with the date, the person who made it, the destination, the five UTM values, the final tagged URL and the short link. Add a column for the date a link was retired. Six months later, when someone asks what "2026-11_gift-set-launch_local" was, the answer is right there.
If your spreadsheet tool supports dropdowns, use them for medium and source. Picking from a list beats typing from memory.
Mistakes that quietly break your reports
Some of these come straight from how GA4's default rules are written, and they surprise even experienced marketers.
- Putting "mobile" in the medium. GA4 treats any medium containing "mobile" or "notification," or ending in "push," as Mobile Push Notifications. A value like mobile-banner gets filed there, not under Display.
- Putting "video" in the medium. Any medium containing "video" matches Organic Video, even for a paid video ad. For paid video, use a medium that starts with "paid" with the platform as the source.
- Using "shop" in campaign names. GA4 checks campaign names for "shop" and "shopping" when deciding on the Shopping channels. A name like spring-shop-launch can get pulled there. Use "store" or "sale" instead.
- Tagging internal links. Never add UTMs to links from one page of your own site to another. A click on them starts a new attributed visit and replaces where the person really came from.
- Trusting auto-generated tags blindly. Some email and social tools add their own UTMs. Check them against your convention, then turn them off or edit them to match.
- Renaming mid-campaign. Changing a value halfway through splits one campaign into two rows. If you must change it, log the date in your sheet.
Long tagged links: shorten them, but keep the tags
A fully tagged URL can run well past 150 characters. That looks messy in a text message, on a flyer, or in a caption where the link is visible. A short link solves this: the visitor clicks a tidy link, gets redirected to the full tagged URL, and GA4 still reads every parameter.
The workflow with Freeurl is short. Build the tagged URL in the free UTM builder, using the values from your convention sheet. Then paste the result into the Freeurl URL shortener to get a short link, or put it on your own branded domain if you have one set up (here is how to create a branded short link). Paste the short link back into your link log.
Be clear about what each tool does. Freeurl's builder assembles the URL for you, but it does not know your team's rules. Your sheet is still what keeps "Facebook" and "facebook" from both showing up. Also expect the numbers to differ a little: Freeurl's click analytics count clicks on the short link, while GA4 counts sessions that loaded your page with tracking allowed. Ad blockers, consent banners and people who close the tab early mean GA4 will usually show fewer visits than clicks. Use the short link's clicks to see reach, and GA4 to see what happened after the visit.
A starter convention you can paste into your doc
- All values lowercase. Dashes between words. Underscores only between campaign name parts.
- Always set utm_source, utm_medium and utm_campaign.
- Allowed mediums: email, social, paid-social, cpc, display, affiliate, referral, sms, audio, print.
- Sources: full platform names (facebook, instagram, linkedin), list names for email, item names for offline.
- Campaign pattern: year-month_topic_audience.
- utm_content: describes the link or creative. utm_term: paid search keywords only.
- No UTMs on internal links. New values need the channel owner's approval.
Print it, pin it in your team chat, and point every new hire to it in their first week. The convention only works if it is easier to follow than to ignore.
Frequently asked questions
Are UTM parameters case sensitive?
Yes. Google Analytics treats utm_source=Facebook and utm_source=facebook as two different values, so they show up as separate rows in your reports. Use lowercase for every value.
Why is my UTM traffic showing as Unassigned in GA4?
Usually because the utm_medium value does not match any of GA4's default channel rules, for example 'newsletter-blast' instead of 'email'. Switch to a recognized medium such as email, social, cpc, display, affiliate, referral or sms, or create a custom channel group for your own values.
Should I use dashes or underscores in UTM values?
Either works technically, but pick one rule and stick to it. A common approach is dashes between words and underscores only to separate parts of a campaign name, such as 2026-11_black-friday_customers. Never use spaces.
Do short links remove UTM parameters?
No. A short link redirects to the full destination URL, including every UTM parameter, so Google Analytics still records the source, medium and campaign.