Campaign tracking

UTM parameters: the complete guide, with a naming scheme that holds up

What each UTM parameter does, the naming rules GA4 actually applies, a scheme for source, medium and campaign, and the mistakes that break your reports.

On this page

UTM parameters are tags you add to the end of a link so your analytics knows where a visit came from. They are the most reliable source signal you control: a referrer can be dropped by an app or a browser, but tags written into the link arrive with the visit.

This guide covers what each parameter does, a naming scheme that keeps reports clean, and the mistakes that quietly ruin them.

https://shop.example.com/spring?utm_source=instagramWho sent it&utm_medium=socialWhat kind of channel&utm_campaign=spring_saleWhich push&utm_content=bio_linkWhich link or creative
The parts of a tagged link. Source, medium and campaign are the three every link should carry.

The parameters

ParameterAnswersExample
utm_sourceWho sent the visitinstagram, google, newsletter
utm_mediumWhat kind of channelsocial, cpc, email, sms, qr
utm_campaignWhich push or offerspring-sale, webinar-oct
utm_contentWhich link, creative or placementbio, story, video-a
utm_termWhich keyword or audiencerunning-shoes, lookalike-1
utm_idA campaign id, for joining cost datacmp-1042

Google says to always use utm_source, utm_medium and utm_campaign, and GA4 also reads utm_id, utm_source_platform, utm_creative_format and utm_marketing_tactic (Google). Google notes the last two are not currently reported in GA4. Any parameter you leave out shows as (not set).

The names come from Urchin, the analytics company Google bought in 2005 that became Google Analytics. Every major analytics tool reads them now, including Sporetag, Plausible, Matomo and Shopify.

Source and medium do different jobs

The most common mistake is putting the same idea in both.

  • Source is the specific site, app or list: facebook, instagram, google, bing, newsletter, partner-name.
  • Medium is the kind of channel: social, paid-social, cpc, email, sms, qr, print, referral.

utm_source=facebook&utm_medium=facebook tells you nothing the source did not. utm_source=facebook&utm_medium=paid-social tells you it was a paid Facebook ad, not a post.

The medium decides the channel in GA4

GA4 sorts each visit into a channel, such as Paid Social or Email, by rules on source and medium (Google). Your medium values have to match those rules, or visits fall into "Unassigned":

  • Email matches a source or medium of email, e-mail, e_mail or e mail.
  • Organic Social matches a known social source, or a medium of social, social-network, social-media, sm, social network or social media.
  • Paid Social needs a known social source and a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$: cpc, ppc, paid-social and paid_social all work.
  • Referral matches a medium of referral, app or link.

So utm_medium=newsletter does not land in Email, and utm_medium=ig does not land in Social. Pick the values the rules expect. Channel rules are not case sensitive, but parameter values are, which is the next point.

Case matters

GA4 treats utm_source=Google and utm_source=google as two different sources (Google). One teammate typing Facebook and another typing facebook splits the same channel into two rows. Pick one rule and enforce it. The simplest:

  • lowercase everything,
  • hyphens between words, no spaces,
  • no dates in utm_source or utm_medium, only in utm_campaign if you need them.

A naming scheme you can copy

Where the link goesutm_sourceutm_mediumutm_content
Instagram bioinstagramsocialbio
Instagram storyinstagramsocialstory
TikTok biotiktoksocialbio
Meta adsfacebookpaid-socialthe ad name
Google Adsgooglecpcthe ad
Email newsletternewsletteremailthe link or button
SMSsmssmsthe message
QR code on printqrqrwhere it was printed

utm_campaign carries the push itself: spring-sale, black-friday-2026, webinar-oct. Keep a shared list of campaign names, so the same campaign has one spelling everywhere.

These are the presets in Sporetag's UTM builder and link form, so links made there follow the scheme automatically.

Let ad platforms fill in the names

Typing ad names into tags by hand drifts out of date the moment someone renames an ad. Ad platforms can fill them in for you with dynamic values in the URL parameters field:

  • Meta: utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}
  • Google Ads: auto-tagging adds gclid on its own, and ValueTrack values such as {campaignid} and {keyword} work in a tracking template.
  • TikTok: __CAMPAIGN_NAME__, __AID_NAME__ and __CID_NAME__.

Check each platform's current help page before relying on these: the names change from time to time. The click ids guide covers gclid, fbclid and the others.

Six mistakes that break reports

  1. Tagging internal links. A UTM tag on a link from your own home page to your shop replaces the real source of that visit. In GA4, later key events are credited to your own tag instead of the ad or post that brought the visitor. In Sporetag, a tagged link always starts a visit with its tag. Never tag links between your own pages.
  2. Mixed case. Email and email become two rows that never add up.
  3. Medium values GA4 does not recognize. newsletter, ig, fb-ads and paid fall outside the channel rules or land in the wrong channel.
  4. Redirects that drop the query string. Test each landing page: open it with ?utm_source=test and check the tag is still in the address bar after every redirect.
  5. Personal data in tags. Never put an email address or a name in a UTM value. It ends up in analytics reports and in the history of everyone who shares the link.
  6. Long, ugly links in public places. People trim them, and a trimmed link loses its tags. Use a short link for bios, print, SMS and anything spoken aloud.

A short link such as go.yourbrand.com/spring keeps the tags out of sight. It counts the click itself, then forwards to the full tagged address. That gives you two records: the click, even if the visit is never counted, and the tagged visit on your site. It is the most reliable way to track a bio link, a QR code or a text message. See how to track an Instagram link in bio.

Common questions

Are UTM parameters bad for SEO?

No, as long as you only use them on links from other places to your site. Your pages should carry a canonical tag pointing to the address without the tags, so search engines index one version.

Are UTM parameters case sensitive?

Yes. In GA4, Google and google are separate values. GA4's channel rules ignore case, but your source, medium and campaign reports do not.

Not for GA4 if auto-tagging is on, since GA4 reads the gclid. Many teams add them anyway, so other tools that cannot read Google's click data still see the campaign.

What is the difference between utm_content and utm_term?

utm_term was made for the paid keyword. utm_content tells apart links or creatives in the same campaign. Many teams use utm_term for the ad set or audience on social ads, which is fine if everyone does it the same way.

Can UTM parameters track conversions?

They tell analytics where a visit came from. The conversion is counted by your analytics or store, and credited to that source by its attribution rule.

Sources

Spotted something wrong or out of date? Email hello@sporetag.com and we will fix it.