Using UTM Tags to Analyze Traffic Sources
We usually look at traffic data in Google Analytics. It can do some rough channel-level analysis, but not fine-grained enough. The most typical pain point: if cold email, newsletter, and holiday email campaigns all link straight to the site’s native URL, they all get counted as “(direct) / (none)” in GA, with no way to separate them.
UTM tags exist to solve exactly this. Add a few query parameters to the end of a link, and GA will automatically split traffic along the dimensions you define.
A Minimal Complete Link
https://yourwebsite.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=bfcm_2026
The order of the parameters doesn’t matter—GA only reads the key. Values are case-sensitive—Email and email are two different records in GA, so always agree on all-lowercase or all-uppercase and keep it consistent across the team.
The Five Parameters
UTM has five parameters in total—three required, two optional:
| Parameter | Required | Meaning | Example |
|---|---|---|---|
utm_source | Yes | Traffic source (specific platform) | google, twitter, newsletter |
utm_medium | Yes | Traffic medium (channel type) | cpc, social, email, referral |
utm_campaign | Yes | Campaign name | bfcm_2026, launch_v2, q4_promo |
utm_term | No | Paid search keyword | crm+for+startups |
utm_content | No | Different creatives within the same campaign | header_button, footer_link, var_a |
Think of them as a hierarchy from broad to narrow: campaign → medium → source → content/term. campaign is the big activity name, medium is the channel type, source is the platform, and content/term is the breakdown within a single source.
Standard Values for utm_medium
The medium field is the easiest one to get wrong, because GA4 uses it for its Default Channel Grouping. If you fill it in carelessly, GA will dump the traffic into “Unassigned” and your dashboard is ruined. The standard medium values GA4 recognizes:
organic— organic searchcpc/ppc/paidsearch— paid searchdisplay— display adssocial/paid_social— social (organic / paid)email— emailaffiliate— affiliate marketingreferral— backlinks / partner sitesvideo/paid_video— video (organic / paid)audio— podcast / audiosms/push— SMS / push
Non-standard values aren’t off-limits (GA will accept whatever you give it), but be careful: channel grouping may break.
Real-World Cases: 12 Scenarios
All the examples below assume the landing page is https://yourwebsite.com/pricing.
Newsletter Primary Link
?utm_source=newsletter&utm_medium=email&utm_campaign=2026_05_weekly
Use date + frequency for campaign, which makes it easy to compare conversions across each newsletter issue. If a single newsletter has multiple entry points, add utm_content to distinguish them:
?utm_source=newsletter&utm_medium=email&utm_campaign=2026_05_weekly&utm_content=header_cta
?utm_source=newsletter&utm_medium=email&utm_campaign=2026_05_weekly&utm_content=footer_link
This lets you see directly which has the higher click rate, the header CTA or the footer link.
Cold Email Outreach
?utm_source=cold_outreach&utm_medium=email&utm_campaign=q2_smb_lead
Note that source is cold_outreach rather than newsletter, because these are two completely different conversion logics—cold users have no prior context, so their conversion rate is naturally lower, and mixing them in would drag down your newsletter metrics.
Break down by send batch with utm_content:
&utm_content=batch_03_personalized
Black Friday / Holiday Email
?utm_source=newsletter&utm_medium=email&utm_campaign=bfcm_2026
?utm_source=newsletter&utm_medium=email&utm_campaign=cyber_monday_2026
?utm_source=newsletter&utm_medium=email&utm_campaign=xmas_2026
Give each promotional moment its own campaign, so when reviewing you can pull up the sales comparison for each holiday directly.
Twitter / X Posts
Organic tweets:
?utm_source=twitter&utm_medium=social&utm_campaign=launch_v2
Paid promotion (X Ads):
?utm_source=twitter&utm_medium=paid_social&utm_campaign=launch_v2&utm_content=video_30s
Note that one medium is social and the other is paid_social—this is the key classification for GA4 channel grouping, and once you mix them you can’t tell paid promotion apart from organic growth.
Google Search Ads
?utm_source=google&utm_medium=cpc&utm_campaign=brand_keywords&utm_term=yourbrand&utm_content=ad_copy_a
If you use Google Ads’ automatic GCLID, you don’t have to add utm manually—GA4 will link it automatically. But manual utm takes priority over auto-tagging, so go either fully automatic or fully manual; don’t mix them, or attribution will be double-counted.
Reddit / Hacker News / Indie Hackers Posts
?utm_source=reddit&utm_medium=social&utm_campaign=community_launch&utm_content=r_saas
?utm_source=hackernews&utm_medium=social&utm_campaign=community_launch&utm_content=show_hn
?utm_source=indiehackers&utm_medium=social&utm_campaign=community_launch
utm_content distinguishes the specific subforum or post type, so you can see how the same content performs differently across communities.
Podcast Sponsorship / Ad Spend
?utm_source=acquired_pod&utm_medium=audio&utm_campaign=2026_q2_sponsorship&utm_content=mid_roll
Podcast conversions are usually tracked more accurately via promo code than UTM (listeners can’t remember a full URL), but if there’s a show-notes link, you should still tag it with UTM.
YouTube Video Description Links
?utm_source=youtube&utm_medium=video&utm_campaign=tutorial_series&utm_content=ep03_description
YouTube’s embedded cards and video descriptions should be tagged separately, because they’re two completely different click scenarios:
&utm_content=ep03_endscreen_card
Affiliate / Partner Links
?utm_source=partner_johndoe&utm_medium=affiliate&utm_campaign=referral_program
Give each affiliate its own dedicated source, so you can see directly in GA how much volume each partner drives. If you use a dedicated affiliate platform (such as Rewardful or PartnerStack), they usually inject their own ref parameter, and UTM is a supplement.
Print Materials / QR Codes
?utm_source=conf_2026&utm_medium=offline&utm_campaign=booth_signage
?utm_source=business_card&utm_medium=offline&utm_campaign=evergreen
For offline scenarios, always use medium=offline (GA has no standard “offline” medium, but as long as it’s consistent within the team that’s fine), and tag the source with the specific material. QR codes must be tagged with UTM, otherwise they come in as (direct).
Short Links / Bio Links
Aggregator pages like Linktree, Beacons, X bio, etc.:
?utm_source=linktree&utm_medium=referral&utm_campaign=bio_evergreen
?utm_source=x_bio&utm_medium=social&utm_campaign=bio_evergreen
Use the same campaign for each bio entry point, so you can conveniently add up the total of your “passive traffic.”
AI Tool Referrals (the new scenario for 2025–2026)
ChatGPT, Perplexity, Claude, and other AI assistants are starting to drive a lot of volume to websites, but the referrer header often gets lost or aggregated into a single “chatgpt.com” entry. If you’ve put a link directly in an OpenAI GPT, a Custom Action, or an Anthropic Skill description, it’s worth proactively tagging it with UTM:
?utm_source=chatgpt&utm_medium=ai_referral&utm_campaign=custom_gpt_v1
?utm_source=perplexity&utm_medium=ai_referral&utm_campaign=knowledge_base
ai_referral is not a standard GA4 medium, so it will land in “Unassigned,” but the upside is that it cleanly isolates LLM-sourced traffic—a fast-growing channel that’s worth tracking separately.
Naming Conventions (Standardize Across the Team)
The biggest pitfall with UTM isn’t technical, it’s naming chaos. Email / email / EMAIL are three different records in GA, and your dashboard turns into a mess.
I recommend setting up a sheet (Notion or Google Sheet both work) that lists:
- The
mediumvalues allowed company-wide (limited to the GA4 standard list) - All
campaignnames currently running (with a unified naming rule, e.g.<event>_<year>or<product>_<phase>) - Register each new link in the sheet before generating it
Strongly recommended hard rules:
- All lowercase—to avoid duplicate records caused by case differences
- Use underscores
_for spaces—not-, to avoid confusion with certain source names - Use the platform name for
source, not the URL—twitter, nottwitter.com - Include the year in
campaign—launch_v2_2026is more readable thanlaunch_v2 - Align
mediumstrictly with the GA4 standard—unless you deliberately want to bypass channel grouping
For a link-generation tool, the old standby is Google’s own: https://ga-dev-tools.google/campaign-url-builder/
If the team is large or there are many links, I recommend tools with an approval workflow like Terminus or Uplifter, so newcomers can’t just make up terms.
Common Mistakes
- Tagging the homepage / internal links with UTM—never do this. GA will treat in-site clicks as new sessions and scramble all your attribution. UTM should only be used on external inbound links.
- Inconsistent source/medium within the same campaign—e.g. a single newsletter has 5 links, 3 with medium=email and 2 with medium=Email, and the GA report splits them into two entries.
- Using a non-standard medium and still expecting channel grouping to work—GA4 classifies strictly by preset rules, and any medium you make up will land in “Unassigned.”
- Exposing UTM to SEO—sharing a link with UTM to Twitter / Reddit can get it indexed, and search engines will treat the URL with UTM as a separate page, hurting SEO. You can add a
<link rel="canonical">in the<head>pointing to the clean URL. - Losing UTM on cross-domain redirects—if your funnel spans domains (landing → checkout on different domains), configure cross-domain tracking in GA4, otherwise UTM is dropped on the redirect and attribution is broken.
Where to Look in GA4
After you’ve tagged with UTM:
- Reports → Acquisition → Traffic acquisition: view channel conversions by
Session source / medium - Reports → Acquisition → User acquisition: view new-user sources by “first-touch channel”
- Explore → Free form: custom three-way cross-analysis of source / medium / campaign
- Admin → Data display → Channel groups: you can customize channel grouping based on UTM, putting a custom medium like
ai_referralinto its own group

In One Sentence
UTM itself is a small technique you can learn in 5 minutes, but the real value lies in the discipline of naming conventions. Set up a small sheet, have the whole team fill it in accordingly, and only then will the dashboard actually be useful when you look back three months later. Otherwise the data looks plentiful but you can’t actually analyze anything out of it.
References
- Google Analytics Help. Custom Campaigns — Reference for the URL builders. support.google.com/analytics/answer/11242870?hl=en
- Google. Campaign URL Builder. GA Demos & Tools. ga-dev-tools.google/campaign-url-builder/
- Google Analytics Help. Default channel group definitions in GA4. support.google.com/analytics/answer/9756891?hl=en
- Terminus. Terminus — Enterprise UTM Link Management. terminusapp.com/
- Uplifter. Uplifter — Marketing URL Governance Platform. uplifter.ai/