The best practice for UTM parameters is short: always set utm_source, utm_medium and utm_campaign, write every value in lowercase from one shared sheet, never tag links between pages of your own site, and read the results in GA4 under Acquisition > Traffic acquisition. Most broken reports come from inconsistent spelling, not from missing tools.
This guide is for small teams who post on social media, send newsletters and cold email, and share links in communities, and want to know which of those actually brings visitors and buyers.
The parameters, and which ones you need
Google's GA4 help page lists nine UTM parameters and says "you should always use utm_source, utm_medium, and utm_campaign" (Google Analytics Help: URL builders). For a small team, five cover nearly everything:
| Parameter | What Google says it is | Example value |
|---|---|---|
utm_source | "Referrer, for example: google, newsletter4, billboard" | linkedin, reddit, newsletter |
utm_medium | "Marketing medium, for example: cpc, banner, email" | social, email, paid_social |
utm_campaign | "Product, slogan, promo code, for example: spring_sale" | 2026-11_launch |
utm_content | "Use to differentiate creatives" | video_a, footer_link |
utm_term | "Paid keyword" | crm_for_agencies |
The other four are utm_id (a campaign ID, mainly for importing cost data), utm_source_platform, utm_creative_format and utm_marketing_tactic. Google notes that the last two "isn't currently reported in Google Analytics properties", so skip them. If you leave out the required ones, the same page warns that missing parameters show up as "(not set)" in reports.
A tagged link looks like this:
https://example.com/pricing?utm_source=linkedin&utm_medium=social&utm_campaign=2026-11_launch&utm_content=carousel
Google's help page links to its own Campaign URL Builder, which fills in the parameters for you. A spreadsheet formula does the same job and keeps everything in one place.
A naming convention a small team can keep
GA4 treats Google and google as different values: "Parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google" (Google Analytics Help). Google's best-practice table on the same page says to "use lowercase as a standard practice" and to "use only one unique utm_source for each distinct platform".
Rules that hold up when three different people are tagging links:
- Lowercase everything. No exceptions, including campaign names.
- No spaces. Use underscores or hyphens, and pick one. Spaces turn into
%20and get mistyped. - One value per platform.
linkedin, neverLinkedIn,linked_inorli. - Short, fixed list of mediums. Ours:
social,paid_social,email,community,referral,cpc. - Campaign names start with the month.
2026-11_black_fridaysorts by date and makes old campaigns easy to filter out. - Use `utm_content` for the variant, not new campaign names:
image_aandimage_binside one campaign. - Every link comes from the sheet. If it is not in the sheet, it does not get posted.
A shared sheet needs only these columns:
| Date | Channel | Source | Medium | Campaign | Content | Final URL | Owner |
|---|---|---|---|---|---|---|---|
| 2026-11-03 | LinkedIn post | social | 2026-11_launch | carousel | (built by formula) | Sam | |
| 2026-11-04 | Newsletter | newsletter | 2026-11_launch | header_button | (built by formula) | Ana |
Pick mediums that match GA4's channel rules
GA4 sorts traffic into default channels using source and medium. Some of the rules, from Google's default channel group page:
- Email: source or medium is
email,e-mail,e_mailore mail. - Organic Social: source matches Google's list of social sites, or medium is one of
social,social-network,social-media,sm,social network,social media. - Paid Social: source matches the social-site list and medium contains
cp, isppcorretargeting, or starts withpaid. - Referral: medium is
referral,apporlink.
If your medium matches none of the rules, the session lands in Unassigned. That is why community in our list above is a trade-off: it is easy to filter by, but GA4 will not put it in a default channel. If you would rather see community posts inside Organic Social, use utm_medium=social and put the community in the source, for example utm_source=reddit.
Google says channel definitions are not case sensitive and cannot be edited, but your source, medium and campaign values are case sensitive, so lowercase still matters.
Never tag internal links
Do not put UTM parameters on links from one page of your site to another: menus, banners, "read next" boxes, buttons on your blog. It feels like a handy way to track which banner gets clicked. It damages your data.
Why:
- Your own banner becomes a traffic source. A visitor arrives from a Google search and clicks a tagged banner. GA4 does not start a new session when the source changes mid-session, and PMG still recommends avoiding UTM links for internal links (PMG: how UTM tracking works in GA4). Analytics Mania explains the damage: if that visitor's next session is direct, it can inherit the internal UTM values instead of the real source, which "distorts accuracy in your reports" (Analytics Mania: UTM parameters in GA4).
- Google's own staff say so. Daniel Waisberg of Google said tagging internal links "will considerably decrease your data quality" (Search Engine Roundtable).
- It confuses search too. In the same report, John Mueller said "it can confuse Google if you are tagging your internal links with tracking parameters", because every tagged link is another URL for the same page.
To measure internal clicks, use GA4 events (a click event with a parameter for the link name) instead. UTM parameters are for traffic that comes from outside your site.
How to tag each channel
| Channel | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Organic social post | linkedin, x, facebook | social | 2026-11_launch | carousel, video |
| Paid social ad | reddit, facebook | paid_social | 2026-11_launch | ad or creative name |
| Community post | reddit, facebook_groups, slack | social or community | 2026-11_launch | group name |
| Newsletter | newsletter | email | 2026-11_issue_14 | header_button, footer_link |
| Cold email | outbound | email | 2026-11_agencies_uk | step1, step2 |
| Google Business Profile | google_business | referral | gbp_website_button | post_name |
Notes per channel:
- Social posts. Tag the link in the post, not the link in your bio, or tag the bio link separately with
utm_content=bio. - Communities. Check the group's rules before posting any link; many groups limit or ban links. Our guide on posting in Reddit and Facebook groups without getting banned covers this.
- Newsletters. Use one campaign per issue and
utm_contentper link position, so you can see whether readers click the header or the footer. - Cold email. Keep links few and short. A single plain link with UTM parameters is enough to show which sequence step brought visits. Also see our cold email deliverability checklist before adding links to cold email at all.
- Google Business Profile. The website button is the one most people click; tag it once and leave it.
Tracking a Reddit ad campaign in GA4
A common question is how to properly monitor Reddit advertising campaigns in GA4. The short answer: tag every ad's destination URL with utm_source=reddit, utm_medium=paid_social, a campaign name that matches the campaign in Reddit Ads Manager, and utm_content set to the ad name. Then check in Traffic acquisition that those sessions land in the Paid Social channel. If they show up as Unassigned or under a different channel, the source or medium does not match Google's rules; fix the tag rather than the report.
Expect Reddit Ads Manager and GA4 to disagree. The ad platform counts clicks, GA4 counts sessions, and not every click becomes a recorded session.
Where to read UTM data in GA4
Google's help page gives the path (Google Analytics Help):
- Go to Reports > Acquisition > Traffic acquisition.
- Change the primary dimension to Session source / medium, Session medium, Session source or Session campaign.
- To see
utm_contentorutm_term, add a secondary dimension from the manual traffic source group; Google says "UTM parameters always populate manual traffic source dimensions" (Google Analytics Help: how traffic source dimensions are updated).
The same page notes that UTM parameters are removed from the "Page path + query string" and "Landing page + query string" dimensions and appear in "Page location" instead. If you build an exploration by landing page and the UTMs are missing, that is why.
A monthly check takes ten minutes: sort Traffic acquisition by key events or conversions, look for "(not set)" and Unassigned rows, and fix the tags that caused them in the sheet.
Summary
| Do | Don't |
|---|---|
| Always set source, medium and campaign | Leave campaign empty |
| Lowercase, one spelling per platform | Mix Facebook, facebook, fb |
| Keep a shared sheet as the only source of links | Build links by hand each time |
| Match mediums to GA4 channel rules | Invent a new medium per campaign |
| Use events for internal clicks | Tag links inside your own site |
Outvori publishes your social posts and articles, writes community drafts, and sends cold email from warmed mailboxes, so all of those channels can be tagged with one convention. See social, cold email and pricing, or scan your website free to see the brand profile everything starts from.
Frequently asked questions
Which UTM parameters are required?
Google says you should always use utm_source, utm_medium and utm_campaign. The others are optional, and missing parameters show up as "(not set)" in GA4 reports.
Are UTM parameters case sensitive?
Yes. Google says utm_source=google is different from utm_source=Google, so pick lowercase and stick to it across the team.
Should I use UTM parameters on internal links?
No. They can credit your own links instead of the real source in later visits and make reports less accurate; Google's Daniel Waisberg said it "will considerably decrease your data quality." Track internal clicks with GA4 events instead.
Where do I see UTM campaigns in GA4?
Go to Reports, then Acquisition, then Traffic acquisition, and set the dimension to Session campaign or Session source / medium.
Do UTM parameters affect SEO?
They do not help rankings. On external links they are harmless, but on internal links they create extra URLs for the same page, and Google's John Mueller has said that can confuse Google.

