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 creativeThe parameters
| Parameter | Answers | Example |
|---|---|---|
utm_source | Who sent the visit | instagram, google, newsletter |
utm_medium | What kind of channel | social, cpc, email, sms, qr |
utm_campaign | Which push or offer | spring-sale, webinar-oct |
utm_content | Which link, creative or placement | bio, story, video-a |
utm_term | Which keyword or audience | running-shoes, lookalike-1 |
utm_id | A campaign id, for joining cost data | cmp-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_mailore mail. - Organic Social matches a known social source, or a medium of
social,social-network,social-media,sm,social networkorsocial media. - Paid Social needs a known social source and a medium matching
^(.*cp.*|ppc|retargeting|paid.*)$:cpc,ppc,paid-socialandpaid_socialall work. - Referral matches a medium of
referral,apporlink.
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_sourceorutm_medium, only inutm_campaignif you need them.
A naming scheme you can copy
| Where the link goes | utm_source | utm_medium | utm_content |
|---|---|---|---|
| Instagram bio | instagram | social | bio |
| Instagram story | instagram | social | story |
| TikTok bio | tiktok | social | bio |
| Meta ads | facebook | paid-social | the ad name |
| Google Ads | google | cpc | the ad |
| Email newsletter | newsletter | email | the link or button |
| SMS | sms | sms | the message |
| QR code on print | qr | qr | where 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
gclidon 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
- 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.
- Mixed case.
Emailandemailbecome two rows that never add up. - Medium values GA4 does not recognize.
newsletter,ig,fb-adsandpaidfall outside the channel rules or land in the wrong channel. - Redirects that drop the query string. Test each landing page: open it with
?utm_source=testand check the tag is still in the address bar after every redirect. - 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.
- 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.
Short links and UTM tags work together
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.
Do I need UTM tags on Google Ads links?
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
- Google Analytics Help: URL builders: collect campaign data with custom URLs, Default channel group. Checked October 2026.
- Ad platform dynamic values were checked against each platform's help pages in October 2026.
Spotted something wrong or out of date? Email hello@sporetag.com and we will fix it.