New ChatGPT vs Google Search Volume: What OpenAI’s 20% Claim Really Means

Analytics & Data

UTM Tracking for SEO and AI Referrals: A Clean Naming System

How I build a UTM naming system that matches GA4's channels, keeps AI referrals and internal clicks out of the wrong reports, and stays the same across your whole team.

UTM Tracking for SEO and AI Referrals: A Clean Naming System

Quick Answer

A clean UTM system always sets utm_source, utm_medium and utm_campaign. It writes every value in lowercase with no spaces, and it only uses medium values GA4 knows, such as email, social, paid_social, referral and affiliate. Never tag internal links. Leave AI assistant referrals untagged so GA4's AI Assistant channel can sort them. Keep one shared dictionary with one owner.

Key Takeaways

  • Always set utm_source, utm_medium and utm_campaign. Add utm_id if you import campaign or cost data into GA4.
  • GA4 treats UTM values as case sensitive, so lowercase everything and pick one word separator.
  • utm_medium decides the default channel. Values like newsletter, partner or qr land in Unassigned.
  • Never add UTMs to internal links. They move credit for key events to your own banners.
  • Keep the ai-assistant medium for GA4 only, and keep tagged URLs off public pages that AI assistants might cite.
  • One owner, one dictionary, a link template and a monthly audit keep the system clean.
In this article
  1. What UTM Parameters Do
  2. The UTM Parameters GA4 Supports
  3. UTM Naming Conventions That Keep Reports Clean
  4. How GA4 Turns UTMs Into Channels
  5. A Sample UTM Taxonomy
  6. Never UTM-tag Internal Links
  7. How to Tag Each Channel
  8. Common UTM Mistakes to Check For
  9. A UTM Governance Checklist
  10. Conclusion: Keep Your UTM Tracking Guide Up to Date
  11. Frequently asked questions

Does your GA4 report show “Facebook”, “facebook” and “fb” as three different sources? Is one newsletter campaign split across five rows? The problem isn’t GA4. It’s your UTM tags. In this UTM tracking guide, I’ll give you a naming system you can set up in an afternoon. It covers which parameters to use, how to write the values, a ready-made list of names, and the rules that stop AI referrals and internal links from messing up your data.

The short version: always set source, medium and campaign. Write every value in lowercase. Use medium values GA4 already knows. Never tag your own internal links. And let AI assistant visits arrive without tags, so GA4 can sort them itself.

What UTM Parameters Do

UTM parameters are small labels added to the end of a URL. When someone clicks a tagged link, GA4 reads the labels and records where the visit came from. Without them, it has to guess from the referrer (the page the visitor came from).

A tagged link looks like this:

https://example.com/autumn-sale/?utm_source=mailchimp&utm_medium=email&utm_campaign=202609_autumn-sale_uk

The question mark separates the page address from the parameters. Each parameter and its value are joined to the next pair with an ampersand (&). The order of the parameters doesn’t matter.

Tags matter most where GA4 can’t work out the source by itself. Email apps, PDFs, messaging apps, QR codes and many mobile apps send no referrer. Without tags, those visits land in Direct. Tags also let you split campaigns that come from the same place, such as two newsletters sent from the same email tool.

The UTM Parameters GA4 Supports

Most guides list five parameters. GA4 actually documents nine. Google groups them by how strongly it recommends them on its help page about URL builders.

Always Set These Three

  • utm_source: where the click came from, such as a platform, a publication or an email tool. Examples: linkedin, mailchimp, partner-site.
  • utm_medium: the type of channel, such as email, social or cpc. This one decides which default channel a visit lands in, so it needs the most care.
  • utm_campaign: the specific campaign, promotion or content push.

If any of these is missing, GA4 shows “(not set)” for that field. The session often falls into the Unassigned channel too.

  • utm_id: a campaign ID. It becomes important if you upload cost or campaign data into GA4, because the import matches on this ID.
  • utm_source_platform: the buying or management platform that sent the traffic, such as Search Ads 360 or Display & Video 360. Most small teams won’t need it for organic or email work.

Optional

  • utm_content: tells apart links that point to the same page in one campaign. An example is a header button and a footer link in the same email.
  • utm_term: meant for paid search keywords. Leave it empty for anything else.
  • utm_creative_format and utm_marketing_tactic: describe the creative type (display, video, native) and the targeting (prospecting, remarketing). Google notes these two are not currently reported in GA4 properties. So there’s little point adding them today.

For a normal marketing team, the useful set is small. I use source, medium and campaign on every link. I add content where there are several links in one place, and utm_id if campaign data gets imported.

UTM Naming Conventions That Keep Reports Clean

GA4 treats parameter values as case sensitive. That means utm_source=LinkedIn and utm_source=linkedin create two separate rows. No amount of filtering later makes that pleasant. These rules prevent most of the mess.

  1. Lowercase everything. Parameter names and values. No exceptions, even for brand names and countries.
  2. No spaces. Spaces turn into %20 or + and become hard to read and filter. Use a separator instead.
  3. Pick one separator for words and stick to it. A simple scheme: hyphens between words (autumn-sale) and underscores between parts (202609_autumn-sale_uk). Whatever you choose, write it down.
  4. One value per platform. Decide if Facebook is facebook or fb, and never use the other. Give each sub-platform its own value too, so Instagram isn’t hiding under Facebook.
  5. One value per channel type. Email is always email. Not sometimes newsletter or e-mail.
  6. Readable words over codes. A colleague should understand spring-webinar without a lookup sheet. Codes such as cmp-0412 belong in utm_id, not in the campaign name.
  7. Start campaign names with the date. Putting the year and month first (202609_) keeps names sorted. It also stops “autumn-sale” from 2025 merging with “autumn-sale” from 2026.
  8. Keep values short. Three or four parts in a campaign name is plenty. If a detail won’t change a decision, it doesn’t belong in the URL.

If I could only enforce one of these rules, it would be lowercase. In my experience, it fixes more broken reports than all the others put together.

How GA4 Turns UTMs Into Channels

GA4’s default channel group sorts each session into a channel using fixed rules. These rules mostly look at source and medium. The rules aren’t case sensitive, but your reports still are, so lowercase still matters. Google publishes the full list on its default channel group page. These are the ones that matter for manual tagging:

  • Email: source or medium is email (or e-mail, e_mail, e mail).
  • Organic Social: source is a known social site, or medium is social, social-network, social-media, sm or similar.
  • Paid Social: source is a known social site and medium matches paid patterns such as cpc, ppc, retargeting or anything starting with paid, for example paid_social.
  • Affiliates: medium is affiliate.
  • Referral: medium is referral, app or link.
  • Display: medium is display, banner, cpm or similar.
  • SMS and Audio: medium is sms or audio.
  • Organic Search: source is a known search engine, or medium is exactly organic.

Anything that matches no rule goes to Unassigned. That’s the real cost of a creative medium value. utm_medium=newsletter, utm_medium=partner and utm_medium=qr all look sensible. All of them land in Unassigned in the default reports.

UTM values also win over the referrer. If you tag a link, GA4 uses your tags, not the site the click came from. That’s helpful when your tags are right and harmful when they’re wrong. It’s the root of the internal-link and AI-referral problems below.

The AI Assistant Channel

In May 2026, Google added an AI Assistant channel to the default channel group. When a visit’s referrer matches a known AI assistant, GA4 sets the medium to ai-assistant and the campaign to (ai-assistant). It then files the session under AI Assistant. Google named ChatGPT, Gemini and Claude among the known assistants, but it hasn’t published the full list. Older data isn’t reclassified.

For your naming system, this means two things:

  • Treat ai-assistant as a reserved medium. Don’t use it for your own campaigns. If you do, you’ll mix real AI referrals with whatever you tagged.
  • Don’t overwrite AI referrals with your own tags. Because UTMs beat the referrer, a tagged URL that an assistant cites will be credited to your old campaign, not to AI Assistant.

Smaller assistants that aren’t on Google’s list still show up as Referral. A custom channel group, as I explain in my guide to tracking ChatGPT, Perplexity and Gemini visits in GA4, still catches those. I’d also check where sessions with utm_source=chatgpt.com and no medium end up in your own property.

A Sample UTM Taxonomy

A taxonomy is just an agreed list of names. Here is a starting list you can copy into a shared sheet. Every medium value here maps to a default GA4 channel except QR, which I cover below.

Use case utm_source utm_medium utm_campaign utm_content GA4 channel
Weekly newsletter weekly-newsletter email 202609_issue-36 header-cta Email
Product launch email mailchimp email 202609_pro-plan-launch_uk hero-button Email
Organic LinkedIn post linkedin social 202609_utm-guide company-page Organic Social
Paid Instagram ad instagram paid_social 202609_autumn-sale_uk video-15s Paid Social
Partner blog mention partner-name referral 202609_co-marketing author-bio Referral
Commission affiliate affiliate-name affiliate always-on banner-300x250 Affiliates
SMS reminder twilio sms 202609_webinar-reminder SMS
Trade show flyer QR expo-london-flyer qr 202609_expo-london back-page Unassigned unless you add a custom channel

Notice that the medium column uses a small, fixed set of words. The source and campaign columns carry the detail. That split is the heart of a clean system. Medium decides the channel, so I keep it boring on purpose.

This is the mistake I see most often, even on sites that tag everything else well. Someone adds ?utm_source=homepage&utm_medium=banner to a promo banner to see how many people click it.

Here’s what happens. A visitor who arrived from Google, an email or an AI assistant suddenly picks up a new campaign in the middle of the visit. Any key event they complete after that can be credited to your own homepage banner. The channel that actually brought them gets nothing. Your Organic Search and Email numbers shrink. “Display” or Unassigned grows with traffic you never paid for.

To measure internal promotions instead:

  • Track banner and button clicks as events, with parameters such as the promo name and position.
  • For online shops, use GA4’s promotion events (view_promotion and select_promotion). They are built for exactly this.
  • Then mark the actions that follow as key events. My guide to GA4 key events covers choosing and testing them.

The same rule applies to links between your own domains if they share one GA4 property. Use cross-domain measurement, not UTMs.

How to Tag Each Channel

Newsletters and Email

Use utm_medium=email for every send. Put the list or newsletter name in source, the issue or send in campaign, and the link position in content. Then you can compare issues, compare newsletters, and see if the top button beats the footer link.

Most email platforms can add UTMs for you. Check what they add before you add your own. Two sets of tags on one link cause duplicate parameters and values you can’t predict. Either let the tool do it with your naming rules, or turn its tagging off.

Organic and Paid Social

Organic posts get utm_medium=social. Paid posts get utm_medium=paid_social or cpc. Mixing them is the fastest way to make paid social look free.

Social platforms often strip referrers, especially in their mobile apps. So tagging organic posts recovers visits that would otherwise show as Direct. Most ad platforms also support dynamic URL parameters that fill in campaign and ad names for you. Use them where they exist. Just make sure the names inside the ad platform follow the same lowercase rule.

Leave Google Ads to auto-tagging. It passes richer data to GA4 than manual tags can. Adding your own UTMs on top usually creates conflicts, not insight. I don’t add manual tags to Google Ads at all.

Partners, Guest Posts and Affiliates

For partner links you supply, use utm_medium=referral with the partner’s name as source. If the partner is paid on commission, use affiliate instead. That way, commission traffic doesn’t inflate your Referral numbers.

Only tag links where you control the placement. For organic mentions and earned links, let the referrer do the work. A tagged link in a widely shared article can be copied around the web for years with your campaign name still on it.

QR Codes and Print

QR codes send no referrer, so an untagged code is pure Direct traffic. Tag every code with the physical placement in source (expo-london-flyer, shop-window, packaging-insert) and a fixed medium.

GA4 has no default channel for QR or print, so you have two choices. You can use utm_medium=qr and add a “QR and print” channel in a custom channel group, so it doesn’t sit in Unassigned. Or, if you don’t want a custom group, accept Unassigned and filter by medium when you report.

Two practical tips. Point the QR code at a short redirect you control, so you can change the destination after printing. Then scan the printed code on two phones before the print run, and check that the parameters survive the redirect.

AI Referrals and ChatGPT Ads

You can’t tag the links an AI assistant creates, and you shouldn’t try. Let AI referrals arrive with their own referrer and let the AI Assistant channel do its job.

What you can do is keep tagged URLs out of places assistants are likely to cite:

  • Don’t publish UTM-tagged URLs on your own site, in press releases or in public documentation.
  • Make sure tagged URLs carry a canonical tag (a line of code that tells search engines which version of a page is the main one) pointing to the clean version. That way, search engines and crawlers index the untagged page.
  • Don’t let caching or “clean URL” rules strip parameters before GA4’s tag fires. ChatGPT adds utm_source=chatgpt.com to many links, and stripping it turns those visits into Direct.

Paid placements are different. If you run ads in ChatGPT, tag them with a paid medium such as cpc and a source such as chatgpt. That keeps paid clicks out of the AI Assistant channel, which should only show organic AI referrals.

Common UTM Mistakes to Check For

  • UTMs after a fragment. In page/#pricing?utm_source=x the parameters sit inside the fragment (the part after #), and GA4 won’t read them. The query string must come before the #.
  • Redirects that drop parameters. Old URLs, missing trailing slashes and HTTP-to-HTTPS hops can all strip query strings. Tag the final destination URL.
  • Personal data in UTMs. Never put email addresses, names or customer IDs in a parameter. Google Analytics policies ban sending personally identifiable information.
  • Reusing campaign names. Using “newsletter” as the campaign name for every send makes every issue look the same.
  • Tagging your Google Business Profile link without a clear reason. Many local businesses tag their profile’s website link to separate map clicks from other search visits. That works. But those visits then leave Organic Search for whatever channel your medium points to. Make the choice on purpose and write it in your dictionary.

A UTM Governance Checklist

A naming system only works if people follow it. Most UTM chaos comes from three people building links three different ways. I use this checklist to keep it under control:

  1. Name one owner. One person approves new source and medium values. Anyone can create links, but only the owner adds new words to the list.
  2. Keep a single dictionary. A shared sheet listing every allowed medium, every allowed source and the campaign name format, with an example for each.
  3. Build links from a template, not by hand. A sheet with drop-downs for source and medium, and a formula that lowercases and joins the values, removes most typos. Google’s Campaign URL Builder is fine for one-off links.
  4. Log every tagged link. Record the full URL, the campaign, the utm_id, the owner, the launch date and where it was placed. For QR codes, note the physical item.
  5. Test before launch. Click each link. Then check GA4’s Realtime report to confirm source, medium and campaign show up exactly as planned.
  6. Audit monthly. In Traffic acquisition, look at Session source/medium for uppercase values, unknown mediums, “(not set)” and growth in Unassigned. Fix the cause of the problem, not just the report.
  7. Review the list every quarter. Remove values nobody uses. Add new platforms properly instead of letting people make things up.

Of these, the template is the step I’d never skip. People make typos when they type links by hand, and GA4 keeps every typo as a new row.

GA4 can’t rewrite past data, so fixes only apply from the day you make them. Mark that day with a GA4 annotation so the change in your reports makes sense later. If you report in Looker Studio, a lookup table or CASE formula can merge old variants such as “Facebook” and “facebook” for past comparisons. My guide to building a free SEO dashboard in Looker Studio shows where those calculated fields fit.

Conclusion: Keep Your UTM Tracking Guide Up to Date

A good UTM tracking guide is short. It has a fixed list of mediums that match GA4’s channels, lowercase values, campaign names that start with the date, no tags on internal links, and AI referrals left untagged so the AI Assistant channel stays accurate. The hard part is keeping everyone on it. That’s what the dictionary, the template and the monthly audit are for.

Here’s where I’d start. Export last month’s source/medium list from GA4 and mark every value that breaks your new rules. That list becomes your first dictionary. Once your tags are clean, connect them to results by setting up the right key events in GA4, and keep this UTM tracking guide open next to your link template.

Frequently Asked Questions

How do I name UTM parameters consistently?

Write every value in lowercase. Replace spaces with hyphens or underscores. Keep a shared list of approved sources and mediums. Start campaign names with the year and month, such as 202609_autumn-sale, so they sort well and don't clash with past campaigns. I always build links from a template with drop-downs instead of typing them by hand.

Are UTM parameters case sensitive in GA4?

Yes, the values are. GA4 reports utm_source=Facebook and utm_source=facebook as two separate sources, even though the default channel rules themselves ignore case. Lowercasing everything is the simplest fix.

Should I use UTM tags on internal links?

No. A UTM on an internal link gives the visitor a new campaign in the middle of a visit. Later key events can then be credited to your own banner instead of the channel that brought them. Track internal clicks with GA4 events, or with the view_promotion and select_promotion events for online shops.

Why is my UTM-tagged traffic showing as Unassigned in GA4?

Usually the utm_medium value doesn't match any default channel rule, for example newsletter, partner or qr. Or the medium is missing. Switch to known values such as email, social, referral or affiliate. Or create a custom channel group that defines a channel for your own medium.

What is the difference between utm_source and utm_medium?

Source is the specific place the click came from, such as linkedin, mailchimp or a partner's name. Medium is the type of channel, such as email, social or cpc. GA4 relies on medium most to decide the channel, so keep the medium list short and fixed.

Do I need UTMs for traffic from ChatGPT and other AI assistants?

No. You can't tag the links an assistant creates, and GA4's AI Assistant channel sorts known assistants from the referrer by itself. Just make sure your site doesn't strip query strings, and keep tagged URLs off public pages that assistants might cite. Paid ChatGPT ads are different and should carry a paid medium.

How do I track QR codes in Google Analytics?

Point each QR code at a URL tagged with the physical placement as source, a fixed medium such as qr, and the campaign name. GA4 has no default channel for QR, so add a custom channel so these visits don't sit in Unassigned. Test the printed code on a phone before the full print run.

Can I fix old UTM mistakes in GA4?

Not in GA4 itself, because it doesn't rewrite data it has already processed. You can merge old variants in reporting tools such as Looker Studio with a calculated field. Then fix the naming from now on.

Get the Next Guide in Your Inbox

Google updates, AI search changes and practical SEO guides. We email you when a new article is published, nothing else.

One email when we publish something new. No spam, unsubscribe in one click. Privacy

Written by Lovepreet Singh Digital Marketing Manager @ Softtrix
  • 12+ years in SEO
  • 331 articles
  • Punjab, India

Lovepreet Singh has been working in SEO for the last 12 years. He started as an SEO analyst, checking rankings and fixing on-page issues, and today he is Digital Marketing Manager at Softtrix Tech Solutions, looking after search and growth for client websites, from online stores to local service businesses.

  • AI Search & AEO
  • Technical SEO
  • Local SEO
  • Google Business Profile

Keep Reading