Skip to content
Whooshly Blog · UTM

UTM Naming Convention 2026: GA4 Source and Medium Rules

The UTM values GA4 maps to each default channel, the tags that land in Unassigned or the wrong channel, and a lowercase naming convention your team can copy, QR codes included.

Updated Sep 2026·9 min read

Our UTM naming convention for GA4 comes down to four rules: use lowercase, join words with hyphens, pick utm_medium from values Google's default channel rules already recognize, and name campaigns yyyy-mm-name. GA4 uses your source, medium and campaign values to decide which channel each visit belongs to. A capital letter splits one campaign across report rows, and an invented medium like qr sends it to Unassigned, unless you add a custom channel group, as we recommend below.

The rules below come from Google's help pages and the ad platforms' own docs, checked September 2026. Where a point is our reading of how the rules apply, rather than something Google states, we say so.

Which UTM parameters does GA4 support?

GA4 reads nine UTM parameters, and Google's URL builder page sorts them by how much you need them:

ParameterWhat it's for (Google's examples)Google's status
utm_sourceThe referrer: google, newsletter4, billboardAlways use
utm_mediumThe marketing medium: cpc, banner, emailAlways use
utm_campaignProduct, slogan or promo code: spring_saleAlways use
utm_idCampaign IDRecommended
utm_source_platformPlatform sending the traffic: Search Ads 360Recommended
utm_termPaid keywordOptional
utm_contentWhich creative: toplinkOptional
utm_creative_formatdisplay, native, video, searchNot reported
utm_marketing_tacticremarketing, prospectingNot reported

Google says the last two "are not currently reported in Google Analytics properties" (traffic-source dimensions), so don't build your convention around them. Any parameter you leave out shows as "(not set)". And once you set one UTM parameter, Google "strongly recommend[s]" setting all the relevant ones, especially source, medium, campaign, id and source platform.

How does GA4 turn utm_source and utm_medium into channels?

GA4 puts every session into a default channel group using rules on source, medium and campaign name. Google says these definitions "aren't case sensitive and can't be edited." Most rules hinge on the medium, plus a list of known sites that Google classes as social, video, search or shopping.

This is the UTM source and medium list that matters. The rules are summarized from Google's page; the last column is the medium we'd use.

ChannelGoogle's rule for tagged trafficMedium to use
Paid ShoppingSource on the shopping list or campaign name matches the shop pattern, and medium matches the paid patternOnly on purpose
Paid SearchSource on the search list, medium matches the paid patterncpc
Paid SocialSource on the social list, medium matches the paid patternpaid-social
Paid VideoSource on the video list, medium matches the paid patterncpc
DisplayMedium is display, banner, expandable, interstitial or cpmdisplay
Paid OtherMedium matches the paid pattern (in practice, when no Paid Search, Shopping, Social or Video rule caught it first; Google doesn't publish the order)Only on purpose
Organic SocialSource on the social list, or medium is social, social-network, social-media, sm, social network or social mediasocial
Organic SearchSource on the search list, or medium is exactly organicLeave to GA4
AI AssistantMedium is exactly ai-assistant, which GA4 sets itself when the referrer is on its list of AI assistantsLeave to GA4
Organic VideoSource on the video list, or medium contains videoOnly on purpose
EmailSource or medium is email, e-mail, e_mail or e mailemail
AffiliatesMedium is affiliateaffiliate
ReferralMedium is referral, app or linkreferral
SMSSource or medium is exactly smssms
AudioMedium is exactly audioaudio
Mobile PushMedium ends with push or contains mobile or notification, or source is firebasepush
Organic ShoppingSource on the shopping list, or campaign name matches the shop patternOnly on purpose
Cross-networkCampaign name contains cross-networkOnly on purpose
UnassignedNo other rule matchesFix with a custom group

The "paid pattern" is the regex ^(.*cp.*|ppc|retargeting|paid.*)$. So cpc, ppc, retargeting and anything starting with paid count as paid. So does any medium containing the letters cp.

The "shop pattern" is the campaign-name regex ^(.*(([^a-df-z]|^)shop|shopping).*)$. It matches a campaign name containing shopping, or shop at the start of a word (shop-local, shopify) or right after an "e" (eshop).

The site list is short. Social includes fb, facebook, ig, instagram, linkedin, lnkd.in, tiktok, twitter, t.co, pinterest, reddit, whatsapp and messenger. Video is youtube. Search is google and bing. When we read the file in September 2026, x, x.com, threads, bluesky and chatgpt.com were missing. The file is undated, so check it again before relying on this. ChatGPT visits have their own route now: Google's AI Assistant channel covers referrals from assistants like ChatGPT, Gemini and Copilot.

One gap: Google doesn't say what order the rules run in. cpm fits both Display and the paid pattern, so use display for banner ads and skip the question.

Why should UTM values be lowercase?

GA4 treats UTM values as case sensitive in reports. Google's own example: "utm_source=google is different from utm_source=Google" (URL builders), and it recommends lowercase. TikTok's UTM best practices say the same.

Channel matching is different, because the channel rules aren't case sensitive. Our reading of the two statements together: utm_source=Facebook still lands in Organic Social, but your Source report shows Facebook and facebook as separate rows. The channel totals look right while the campaign detail quietly splits. Lowercase everything and the problem never starts.

What lands in Unassigned, and how do you fix it?

Google defines Unassigned as the value "Analytics uses when there are no other channel rules that match the event data" (default channel group). For tagged links, that usually means a medium no rule recognizes, like qr, print, flyer or newsletter, paired with a source that isn't on Google's list.

Sometimes the fix is a better value. utm_source=newsletter&utm_medium=email lands in Email. utm_medium=newsletter lands in Unassigned unless the source is on Google's list (our reading).

When you want a channel Google doesn't have, create a custom channel group. Standard properties get 2 custom groups (360 properties get 5), each with up to 50 channels. Rules are first-match: "Traffic is included in the first channel whose definition it matches given the current order of channels in the group." Custom groups apply retroactively, and you can set one as your primary channel group.

Which UTM values put traffic in the wrong channel?

These traps come from checking common tagging habits against Google's rules. Google doesn't state any of them; each is our reading of the rules above.

  • utm_source=x with a paid medium lands in Paid Other. X isn't on the social list. Google's Source platform dimension does map x with a paid medium to X Ads, so the two classifiers disagree. Organic posts are fine: utm_medium=social alone puts them in Organic Social.
  • LinkedIn's paid ad sample lands in Organic Social. LinkedIn's dynamic UTM docs use utm_medium=social for paid ads. Use utm_medium=paid-social with utm_source=linkedin to match Google's Paid Social rule.
  • utm_medium=qr or print lands in Unassigned, unless the source is on Google's list or the campaign name triggers Shopping or Cross-network.
  • Some words in a medium change the channel. mobile-qr becomes Mobile Push, as does anything ending in push. qr-video becomes Organic Video. A medium containing cp, such as cpa, counts as paid.
  • Some words in a campaign name change the channel. A campaign name containing shopping, or shop at the start of a word (2026-11-shop-local, shopify) or right after an "e" (eshop), can land in Organic Shopping, or in Paid Shopping with a paid medium. A name containing cross-network lands in Cross-network.

Should you use auto-tagging or manual UTMs for Google Ads and Microsoft Ads?

For Google Ads, keep auto-tagging on. Google says that when manual and auto-tagging are used together, "Google analytics uses the auto-tagged values." The same page adds a catch: "if any UTM parameter is present on the URL, Google Analytics will derive all cross-channel traffic source dimension values from UTM parameters, exclusively." It also says you can add utm_content and utm_term alongside the gclid.

Our reading: let auto-tagging supply source, medium and campaign on Google Ads, and don't add those three by hand. If you do add utm_content or utm_term, check your cross-channel reports afterwards.

Microsoft Advertising auto-tagging writes real UTMs into the URL: utm_source=bing, utm_medium=cpc, the campaign in utm_campaign, the ad group in utm_content and the keyword in utm_term. By the rules above, that lands in Paid Search. You choose whether auto-tagging replaces existing tags or only adds missing ones, and Microsoft warns that manual UTMs plus auto-tagging can produce duplicates. Pick one method per account.

What do LinkedIn, TikTok and Meta fill in automatically?

LinkedIn supports the dynamic values ACCOUNT_ID, ACCOUNT_NAME, CAMPAIGN_ID and CAMPAIGN_NAME, set at account or campaign level (LinkedIn help). The old CAMPAIGN_GROUP_* and CREATIVE_* names became AD_SET_* and AD_* from October 2025, and new or edited ad sets must use the new names. Set the medium yourself, as paid-social.

TikTok's UTM macros include __CAMPAIGN_NAME__, __CAMPAIGN_ID__, __AID_NAME__, __ADID_V2_NAME__ and __PLACEMENT__. Its auto-attach option fills "campaign source (TikTok), medium ('Paid'), ID, and name" (TikTok). We couldn't confirm the exact casing it writes into the URL. By the rules, tiktok plus paid should reach Paid Social in any case, but capitals would add rows to your Source report. Check a live ad URL.

We couldn't verify Meta's dynamic parameters on Meta's own help page, which didn't load for our check. Secondary sources such as Jon Loomer list {{campaign.name}}, {{adset.name}}, {{ad.name}}, {{placement}} and {{site_source_name}}, and say the last one returns fb, ig, msg or an. If that's right, msg and an aren't on GA4's social list, so paid clicks carrying them would land in Paid Other. Confirm in Ads Manager before relying on it.

One point applies to every platform: a name macro inserts the name you typed in the ad platform. Call a campaign "Fall Sale – Retargeting" and that's what reaches GA4. Renaming a campaign later may not change what the macro sends. Name campaigns inside each platform using your convention.

We found no current GA4 help page that says "never." The rule is common practitioner advice, from sites like Loves Data. Google's campaigns and traffic sources page explains the mechanics: when a new campaign value arrives mid-session, GA4 attaches it to those events, but it is "not associated with the existing session."

Our reading: tag a homepage banner and the session keeps the ad that brought it, while events after the click, including a purchase, carry your internal tag. Your campaign reports can then credit the banner. To measure internal promotions, use Google's recommended events view_promotion and select_promotion.

How should you tag QR codes and print?

Google has no official guidance on QR codes. Its only offline example is utm_source=billboard (URL builders). Analytics Mania suggests mediums like print, billboard, outdoor or packaging with the placement as the source, says the traffic will "probably" be Unassigned, and recommends a custom channel group. Practitioners also say an untagged QR code probably shows as Direct, because a scan usually arrives without a referrer.

The setup we recommend:

  • utm_medium=qr on every printed code, so scans are one value you can filter.
  • utm_source set to the placement: menu, flyer, packaging, billboard.
  • utm_campaign in your normal format, with utm_content for versions or locations (table-tent-a).
  • A custom channel group with a channel called QR, rule "medium exactly matches qr", moved to the top.

The GA4 consequence: in the default channel group, these scans stay in Unassigned. In your custom group they show as QR, past data included, because custom groups apply retroactively. If you'd rather report all print as one channel, use utm_medium=print and match that instead. Either way, avoid mobile-qr and qr-video, and don't put utm_source=instagram on a poster, or the scans count as Organic Social.

A dynamic QR code lets you fix a tag after printing, because the tagged URL sits behind a redirect. A static code prints the tags into the pattern for good.

A UTM naming convention you can copy

Here's the whole convention in one block. Paste it wherever your team keeps its playbook.

``` UTM naming convention (GA4)

Format lowercase only; hyphens between words; no spaces one spelling per source: facebook, never Facebook or fb

utm_source where: google, bing, facebook, instagram, linkedin, tiktok, newsletter, menu, flyer utm_medium how, from this list only: cpc | paid-social | display | social | email affiliate | referral | sms | qr utm_campaign yyyy-mm-name, e.g. 2026-10-fall-menu utm_content creative or placement, e.g. carousel-b, table-tent-a utm_term paid keyword (search only) utm_id your campaign ID, if you track one

Never tag internal links hand-tag Google Ads (auto-tagging on) add a medium that isn't on the list put shop, shopping or cross-network in a campaign name by accident ```

Give the list one owner, and check the Unassigned channel once a month. A new row there usually means someone typed a value that isn't on the list.

Whooshly's UTM builder can save templates (up to 1,000 on Core), so everyone on a Core or Business team starts from the same source, medium and campaign values, and a tagged URL can go straight to a short link or QR code. A shared spreadsheet or any other builder can do the job too. What counts is that every link follows the same list, every time.

Frequently asked questions

What is a UTM naming convention?

It's a written set of rules for the values in your UTM parameters: casing, separators, the mediums you allow and a campaign name format. Following it keeps one campaign in one report row and puts each visit in the right GA4 channel.

Are UTM parameters case sensitive in GA4?

Yes, in reports. Google says utm_source=google is different from utm_source=Google and recommends lowercase. GA4's default channel rules aren't case sensitive, so mixed casing still reaches the right channel while splitting your source and medium rows.

What utm_medium should I use for paid social ads?

Use a medium that matches GA4's paid pattern, such as paid-social or cpc, with a source on Google's social list like facebook, instagram, linkedin or tiktok. That combination is GA4's Paid Social rule. By our reading of the rules, utm_medium=social on a paid ad lands in Organic Social.

Why is my UTM traffic showing as Unassigned in GA4?

No default channel rule matched it, usually because the medium is a value Google doesn't recognize, such as qr, print or newsletter. Switch to a value on Google's lists, or create a custom channel group with a rule for it.

What UTM medium should I use for QR codes?

Google has no QR guidance and GA4 has no QR channel, so utm_medium=qr lands in Unassigned in the default group unless the source is on Google's list. Avoid mediums like mobile-qr or qr-video, which GA4 files under Mobile Push and Organic Video. We use utm_medium=qr with the placement as the source, plus a custom channel group that matches medium qr.

Should I add UTM parameters to Google Ads links?

Not for source, medium and campaign if auto-tagging is on. Google says that if any UTM parameter is present on the URL, GA4 derives all cross-channel traffic source values from the UTMs exclusively. Its help page does allow utm_content and utm_term alongside the gclid. If you do, check your cross-channel reports afterwards.

Can I use UTM parameters on internal links?

Google's GA4 docs don't forbid it. A new campaign value mid-session attaches to the events that follow, so conversions can be credited to your own banner. For internal promotions, Google recommends the view_promotion and select_promotion events.

Keep Whooshly in your Google results

If our link and QR guides are useful, add Whooshly as a Preferred Source in Google.

Add as a preferred source on Google

Tap. Whoosh. You're there.

Buy Whooshly once and own your campaign links for good.

Quincy R. · Whooshly AI assistantAsk Quincy

Answers about products, pricing, and setup.

Tag the campaign correctly.

Ask about UTM fields, naming, templates, GA4, or sharing a clean URL.

Don't share passwords or private data. Privacy