BusinessMCP

Marketing

UTM Parameters: The Complete Guide & Naming Convention

UTM parameters are the cheapest attribution infrastructure you will ever build — and the easiest to ruin. Here is what each of the five parameters actually does, the naming convention worth bookmarking, and the mistakes (internal links, case drift, source/medium confusion) that quietly corrupt your data.

By the BusinessMCP team11 min readAugust 15, 2026
UTM Parameters: The Complete Guide & Naming Convention — illustrated overview

Key takeaways

  • UTM parameters are query-string tags you add to links you control; they answer where (utm_source), how (utm_medium) and why (utm_campaign) a click happened.
  • Consistency beats cleverness: lowercase everything, pick one delimiter, and keep a shared convention doc — analytics tools treat “Email” and “email” as two different channels.
  • Never put UTM parameters on internal links — they restart attribution mid-session and overwrite the visitor’s real source.
  • utm_source is the platform (google, newsletter), utm_medium is the channel type (cpc, email, paid_social) — mixing them up breaks channel grouping in every tool.
  • UTMs only cover links you control. The rest of the journey needs first-party analytics, and the untrackable rest is the dark funnel.

What are UTM parameters?

UTM parameters are short tags you append to a URL’s query string — `?utm_source=newsletter&utm_medium=email&utm_campaign=launch` — so that when someone clicks a link you control, your analytics knows exactly where that click came from. Without them, a click from your newsletter, a partner’s site and a paid ad can all collapse into vague buckets like “referral” or, worse, “direct.”

The name is a fossil: UTM stands for Urchin Tracking Module, from Urchin, the software Google bought in 2005 and turned into Google Analytics. The parameters outlived the product because every analytics tool — GA4, Plausible, BusinessMCP, all of them — reads the same five (plus a few newer GA4-specific ones documented in Google’s URL-builder reference).

The five classic UTM parameters
ParameterQuestion it answersExample valuesUse it?
utm_sourceWhere did the click come from — which platform or site?google, newsletter, linkedin, partner-blogAlways
utm_mediumWhat kind of channel carried it?cpc, email, paid_social, organic_social, referralAlways
utm_campaignWhich campaign or initiative?spring-launch, black-friday-2026Always
utm_termWhich paid keyword? (search ads)visitor-identification, crm-softwarePaid search only
utm_contentWhich creative or link variant?hero-cta, footer-link, video-ad-bWhen A/B-testing creatives

GA4 also recognizes utm_id (a campaign ID for cost-data joins) and utm_source_platform, and defines two more (utm_creative_format, utm_marketing_tactic) that Google’s own docs note aren’t currently reported. For almost everyone, the working set is the first three — Google’s guidance is that source, medium and campaign should always travel together.

utm_source vs utm_medium: the distinction everyone gets wrong

The most common corruption in UTM data is treating source and medium as interchangeable. The rule that keeps them straight: utm_medium is the category, utm_source is the specific instance. Medium answers “what kind of traffic is this?” — paid clicks (cpc), email, social. Source answers “from which platform, exactly?” — google, facebook, your newsletter tool.

This matters because channel reports group by medium first. Every analytics tool — including GA4’s default channel groups — classifies traffic into channels using rules that read the medium: `cpc` lands in Paid Search, `email` in Email, `paid_social` in Paid Social. Put “facebook” in the medium field and your paid social spend falls out of every channel rollup you’ll ever build.

The UTM naming convention (bookmark this)

UTM values are free text, which is their superpower and their curse: nothing stops half your team writing `Email`, the other half `e-mail`, and a contractor `E-Mail_Newsletter`. Analytics tools treat those as three different channels — values are case-sensitive and match exactly. The fix is not discipline; it’s a written convention everyone links from.

  1. 1Lowercase everything, always. It’s the one rule that prevents the most damage, because case drift is invisible until the report splits.
  2. 2Pick one delimiter and stick to it. We use hyphens inside values (spring-launch); underscores are fine too — just never both, and never spaces (they become %20 and read horribly in reports).
  3. 3Use a fixed vocabulary for source and medium. These two fields should be picked from a short approved list, not invented per campaign. Only utm_campaign and utm_content are free-form.
  4. 4Name campaigns so they sort: purpose plus date, like webinar-attribution-2026-09. Future-you filters by prefix; the year stops name collisions.
  5. 5Don’t encode what another parameter already holds. utm_campaign=facebook-paid-spring duplicates source and medium into the campaign name and makes cross-channel campaign rollups impossible.
  6. 6Build links with a spreadsheet or builder, not by hand. A shared sheet with dropdown-validated source/medium columns is the cheapest data-quality tool in marketing.
A working source/medium vocabulary (adapt, then freeze)
Where the link livesutm_sourceutm_medium
Google Adsgooglecpc
Meta ads (Facebook/Instagram)facebook / instagrampaid_social
LinkedIn adslinkedinpaid_social
Organic social postslinkedin / x / facebookorganic_social
Your newsletternewsletteremail
Cold or lifecycle emailoutreach / lifecycleemail
Partner or affiliate placementspartner-namereferral
Podcast show notespodcast-namepodcast
Offline (QR codes, print)event-name / printoffline

Here’s a convention doc you can copy into your team wiki verbatim and edit:

# UTM convention — <company>

Rules
1. lowercase only. hyphens inside values. no spaces.
2. utm_source + utm_medium come from the approved lists below. do not invent new ones
   without adding them here first.
3. utm_campaign = <purpose>-<detail>-<yyyy-mm>, e.g. webinar-attribution-2026-09
4. utm_content only when testing creatives: hero-cta, footer-link, variant-b
5. never add utm parameters to internal links (links between our own pages).

Approved utm_medium: cpc | paid_social | organic_social | email | referral | podcast | offline
Approved utm_source: google | facebook | instagram | linkedin | x | newsletter | outreach | <partner-name>

Example
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=launch-2026-09&utm_content=hero-cta

Common UTM mistakes (and what they cost you)

Mistake one: UTMs on internal links. Tagging a link from your homepage to your pricing page restarts attribution mid-visit — most tools treat new campaign parameters as a new traffic source, so the visitor who arrived from a Google ad is suddenly credited to “homepage-banner.” UTMs belong only on external links pointing at your site. Internally, use plain paths and let the tool track navigation.

Mistake two: case and vocabulary drift. `Email`, `email` and `E-mail` become three rows; so do `linkedin` and `LinkedIn`. This is why the convention doc above exists, and why serious teams generate links from a validated sheet instead of typing them.

Mistake three: tagging inbound channels you don’t control. You can’t UTM-tag a Google organic result or someone else’s tweet of your link. Those are classified from the referrer, and when the referrer is missing you get dark traffic — we cover that whole mess in our dark funnel guide.

How UTMs feed channel reports and attribution

A UTM click follows the same pipeline in any decent analytics stack:

Visitor clicks a tagged link
Landing page URL carries the utm_* parameters
The tracker captures them on the first pageview of the session
The session is classified into a channel (medium-first rules)
Reports and attribution credit that channel and campaign

The parameters only need to be present on the landing URL — they’re captured once per session, not on every page.

Two implementation details are worth knowing. First, first-touch persistence: BusinessMCP stores the first campaign parameters a visitor ever arrived with, so when they come back next week via a bookmark and buy, the revenue still credits the campaign that actually started the relationship — the mechanics are in our revenue attribution guide. Second, dark-social recovery: when a click arrives with a utm_source but no referrer (common from mobile apps), we derive the referrer host from the utm_source, so that traffic surfaces by name instead of vanishing into Direct.

One prerequisite for any of this: your analytics has to actually record the session. Ad blockers and tracking prevention silently drop a meaningful share of third-party analytics traffic — tagged or not — which is why this whole system works best on first-party, cookieless analytics. And for how UTMs fit into the bigger credit-assignment picture, start with our attribution models guide.

Frequently asked questions

What is utm_source?

utm_source identifies the specific platform or site a click came from — google, facebook, newsletter, a partner’s name. It pairs with utm_medium, which describes the channel type (cpc, email, paid_social). Google’s guidance is to always send utm_source, utm_medium and utm_campaign together on any link you tag.

Are UTM parameters case-sensitive?

Yes. Analytics tools match values exactly, so “Email”, “email” and “EMAIL” show up as three separate rows and can even classify into different channels. The standard fix is a written convention: lowercase everything, one delimiter, and a fixed vocabulary for source and medium.

Should I use UTM parameters on internal links?

No — never. Campaign parameters on a link between your own pages restart attribution mid-session, overwriting the visitor’s real source with something like “homepage-banner.” UTMs belong only on external links that point at your site: ads, emails, social posts, partner placements.

Do UTM parameters affect SEO?

Not meaningfully, as long as you use them on inbound marketing links rather than internal navigation. Search engines can treat parameterized URLs as duplicates of the clean URL; a canonical tag on the page (which most platforms set by default) resolves that. The bigger risk is analytics corruption, not rankings.

How many UTM parameters does GA4 support?

GA4 documents eight utm_* parameters: the classic five (source, medium, campaign, term, content) plus utm_id and utm_source_platform, and it defines utm_creative_format and utm_marketing_tactic but notes they aren’t currently reported. In practice, source, medium and campaign do nearly all the work for most teams.

BM

BusinessMCP Team

Every guide is written from running BusinessMCP on its own platform — the match rates, reply rates, and deliverability lessons are from our own data, not recycled blog folklore. About BusinessMCP

Turn your business into one AI-ready MCP server

Connect your tools, install one tracking script, and expose your unified data to any AI agent through a single secure endpoint.

Get started free