UTM parameters explained: how to tag links for GA4
A UTM tag is a label stuck on the end of a link, so your analytics can say which email, post or ad sent a visit. Three of them do nearly all the work: source, medium and campaign. Getting the medium wrong is the most common reason traffic ends up in the wrong report.
What a tagged link looks like
The tags go after a question mark, joined by ampersands:
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=autumn-sale
The visitor lands on the same page as ever. Your analytics reads the three tags and files the visit under source newsletter, medium email, campaign autumn-sale.
The parameters, one by one
Google's page lists these for Analytics 4:
utm_sourceWhere the visit came fromutm_mediumThe kind of channelutm_campaignProduct, slogan or promo codeutm_idA campaign IDutm_termThe paid keywordutm_contentTells different ads or links apartutm_source_platformThe platform sending the traffic
Google also lists utm_creative_format and utm_marketing_tactic, but says Analytics does not currently report them, so they are not worth adding yet. Its advice is to always use source, medium and campaign, and if you set any tag at all, to set the rest of the relevant ones too.
A simple way to remember it: source is who, medium is how, campaign is why. A newsletter (source) sent by email (medium) for the autumn sale (campaign).
The medium decides the channel
Analytics sorts visits into channels such as Email, Paid Search or Organic Social, and for tagged links it decides mostly from the medium. Google's channel definitions are not case-sensitive and include these values:
email,e-mailEmailcpc,ppc, or starting withpaidPaid channelssocial,social-media,smOrganic Socialreferral,link,appReferralaffiliateAffiliatesdisplay,banner,cpmDisplayorganicOrganic SearchsmsSMS
The paid channels need the source to match as well. A medium of cpc with a source of google counts as Paid Search, and with a social network as the source it counts as Paid Social.
Invent your own medium, such as email-newsletter, and none of those rules match. Google says a visit falls into Unassigned when no rule matches. Its page does not spell out the missing-medium case, but by its own rules a visit with no recognisable medium ends up there, unless a rule based on the source matches it first.
Why capital letters split your reports
The channel rules ignore case, but the values you type are stored as written. Google's page is explicit that utm_source=google and utm_source=Google are different, and that SpringSale and Spring_Sale count as two campaigns. One campaign then shows up as several rows and you add them up by hand.
The fix is a convention and keeping to it. A good one: all lowercase, hyphens instead of spaces, no accents, the same words every time. Write it down once, for example:
- Newsletter link
newsletter/email/autumn-sale - Instagram bio link
instagram/social/autumn-sale - Paid search ad
google/cpc/autumn-sale - Partner's blog
partner-name/referral/autumn-sale
Mistakes to avoid
- Leaving a tag out. Google says missing parameters show as "(not set)" in reports, which is a visit you cannot attribute.
- Making up the medium. Use the values in the table above so the visit lands in the channel you expect.
- Tagging links between your own pages. A tag describes where a visitor came from, and someone already on your site did not come from anywhere new. This is common practice rather than something Google's page states, but it is how internal tags tend to muddy reports.
- Putting personal data in a tag. The whole link is visible in the address bar and in browser history. Never put a name or an email address in it.
- Renaming a campaign halfway through. The old and new names become two campaigns, and the report shows two half results.
- Leaving one channel untagged. If the newsletter is tagged and the social posts are not, the untagged visits land in other channels and the comparison is not fair.
Build your tagged links
The UTM Campaign Builder does the tidying for you: it lower-cases every value, turns spaces into hyphens, keeps any query string already on the link, leaves empty tags out and warns you when source, medium or campaign is blank. It also draws a QR code for the tagged link, which is handy for print, so scans arrive as their own source.
These are planning notes, not a guarantee of how your own Analytics property will report. The authority is Google's own help: custom campaign URLs and the default channel group.

