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.

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-sensitiveEmail 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:

ParameterRequiredMeaningExample
utm_sourceYesTraffic source (specific platform)google, twitter, newsletter
utm_mediumYesTraffic medium (channel type)cpc, social, email, referral
utm_campaignYesCampaign namebfcm_2026, launch_v2, q4_promo
utm_termNoPaid search keywordcrm+for+startups
utm_contentNoDifferent creatives within the same campaignheader_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 search
  • cpc / ppc / paidsearch — paid search
  • display — display ads
  • social / paid_social — social (organic / paid)
  • email — email
  • affiliate — affiliate marketing
  • referral — backlinks / partner sites
  • video / paid_video — video (organic / paid)
  • audio — podcast / audio
  • sms / 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.

?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.

?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
?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.

?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).

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 medium values allowed company-wide (limited to the GA4 standard list)
  • All campaign names 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:

  1. All lowercase—to avoid duplicate records caused by case differences
  2. Use underscores _ for spaces—not -, to avoid confusion with certain source names
  3. Use the platform name for source, not the URLtwitter, not twitter.com
  4. Include the year in campaignlaunch_v2_2026 is more readable than launch_v2
  5. Align medium strictly 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

  1. 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.
  2. 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.
  3. 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.”
  4. 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.
  5. 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_referral into its own group
demo
Viewing the conversion performance of each traffic channel via UTM tags in Google Analytics

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