Marketing Ops with Sam
Blog

Marketing Operations

The UTM naming rule that stops your GA4 report lying 🏷️

LinkedIn, linkedin and Linkedin are three rows in your report. Here's a UTM naming convention that fixes it, plus a free tool that enforces it.

Toy label maker character stamping tidy tags onto a row of little link characters, illustrating a UTM naming convention

Quick answer: a UTM naming convention is a short set of rules for utm_source, utm_medium and utm_campaign so every link follows the same pattern. Use lowercase only, hyphens instead of spaces, and a fixed list of mediums that match GA4’s channel rules. Enforce it when the link is built, not when you open the report and find the mess.

Imagine a team running one LinkedIn campaign. Three people tag their links. One writes LinkedIn, one writes linkedin, one writes Linkedin. At the end of the month the report has three rows for what the team thinks of as one channel, and nobody is sure which number to quote.

Nothing is broken. The report is just reading what it was given.

A toy label maker stamping matching tags onto three look-alike link characters, showing a UTM naming convention merging duplicates Three spellings, three rows. One rule, one row.

The idea 💡

Don’t clean up UTM tags in the report. Make it impossible to create a bad one.

Why it works 🧠

Google’s own documentation is blunt about the first problem. In its GA4 guidance on campaign URLs, Google says parameter values are case sensitive, so utm_source=google and utm_source=Google count as different values, and recommends lowercase as standard practice. It also says to always use utm_source, utm_medium and utm_campaign.

The second problem is channel grouping. GA4 sorts traffic into channels with default rules. For example, Email matches when the source or the medium is email (or a few close variants). Organic Social matches mediums such as social or social-media. Paid Social needs a social source plus a medium that matches cp-style or paid patterns, such as cpc, ppc or anything starting with paid. Traffic that matches no rule lands in Unassigned.

So a medium of newsletter or linkedin-post feels descriptive, but it doesn’t match any of those rules. The click is real and the channel report doesn’t know where to put it.

How to do it ✍️

  1. Pick a short, fixed list of mediums that line up with GA4’s rules: email, social, paid-social, cpc, organic, referral, affiliate, display, sms, qr, partner. Keep it short. Every extra value is another row.
  2. Make utm_source the specific place. linkedin, newsletter, google. Lowercase, hyphens only.
  3. Name campaigns as year-month-name. For example 2026-10-launch. It sorts itself and tells you the date at a glance.
  4. Use utm_content for the variant (carousel-a, video-short) and utm_term only for paid keywords.
  5. Never put UTMs on your own internal links. They start a new session and overwrite where the visitor really came from.
  6. Build links from one place. A shared sheet, a form, or a script. Not by hand in each person’s head.

Automate it ⚙️

Rules people have to remember get broken. Rules a tool enforces don’t.

I wrote a small free tool for this: utm-toolkit. It builds a link to the convention above, lowercasing and hyphenating what you give it, and refuses to print a link that still breaks a rule.

npx github:MarketingOpswithSam/utm-toolkit build \
  --url https://example.com/offer \
  --source linkedin --medium social --campaign 2026-10-launch

It also audits links someone else made:

npx github:MarketingOpswithSam/utm-toolkit check "https://example.com/?utm_source=LinkedIn&utm_medium=Social%20Media"

To make it part of the process, wire the check command into an n8n automation: when a new row lands in your campaign sheet, run the check, and if it fails, message the owner with the problem. If you’d like a version that fixes the sheet for you, that’s the sort of build my AI agents work covers.

It fits alongside a lead scoring model, because scoring on a bad source field is scoring on noise.

Quick wins to try 🧪

  • 📋 Export last quarter’s sources and mediums. Count the spelling variants. The number will surprise you.
  • 🔤 Lowercase everything from today. The cheapest fix on this list.
  • 🚫 Delete newsletter as a medium. Use email as the medium and newsletter as the source.
  • 📅 Add the date to every campaign name.
  • 🧾 Keep one tab of approved values and lock it.
  • 🔗 Audit your five most-shared links for stray capitals and spaces.

How to measure it 📊

  • Unassigned share: the percentage of sessions in GA4’s Unassigned channel. It should fall.
  • Distinct source and medium values: how many unique values you have per month. Fewer is better.
  • Time to a trustworthy campaign report: minutes spent cleaning before you can quote a number.

Frequently Asked Questions

Are UTM parameters case sensitive in GA4?

Yes. Google’s documentation says parameter values are case sensitive, so Email and email are different values and appear as separate rows. Use lowercase as a standard.

What is a good UTM naming convention?

Use lowercase letters, numbers and hyphens, a fixed list of mediums that match GA4’s channel rules, and campaign names in a year-month-name pattern. Keep the list of mediums short.

Which UTM parameters are required?

Google says to always use utm_source, utm_medium and utm_campaign. Add utm_content to tell variants apart and utm_term for paid keywords.

Why is my traffic in the Unassigned channel in GA4?

GA4 sorts traffic using default channel rules based on source and medium. If your medium doesn’t match any rule, the traffic is reported as Unassigned. Fix it by using mediums such as email, social or cpc.

Tidy tags, trustworthy numbers.

Sam

If you want this built for you, book a call.

Want this built in your stack?

20 minutes. I’ll point to at least one real leak in your funnel, or tell you straight that there isn’t one.

Book a call

Get the next post in your inbox.

One short email when there’s something worth sharing.

Make AI photos that don’t look like AI.

Get the free playbook: 5 rules and 15 copy-ready prompts for photos of yourself, product shots and posters.

Free, in your inbox in a minute. You’ll also get my Friday AI idea.