The three parameters that actually matter
UTM tagging has five parameters, but three of them carry the weight. utm_source, utm_medium, and utm_campaign are the trio Google Analytics needs before it will attribute a visit to a campaign at all. The other two — utm_term and utm_content — are optional refinements we’ll cover at the end.
The confusion almost always comes from the first two. Source and medium sound similar, they’re often set together, and people regularly swap them by accident. Getting them right is the difference between reports that answer your questions and reports that just create new ones. If you want the full background on where these parameters came from and how they flow into GA4, see UTM Parameters: The Complete Guide. This article is the focused, side-by-side comparison.
Source vs medium vs campaign at a glance
| Parameter | Answers the question | Granularity | Example values |
|---|---|---|---|
utm_source | Where did this click come from? | Specific origin | newsletter, facebook, google, partner_blog |
utm_medium | What type of channel is it? | Broad category | email, social, cpc, affiliate |
utm_campaign | Which initiative is it part of? | Marketing effort | summer_sale, black_friday_2026, launch_v2 |
The mental model that keeps them straight:
- Source is a proper noun — the name of one specific place. Facebook. Your Tuesday newsletter. A particular partner’s blog.
- Medium is a category — the kind of channel that source belongs to. Many sources share one medium. Both your Tuesday newsletter and your welcome email are
email. - Campaign is the reason — the promotion the link is part of, which cuts across every source and medium it runs on.
Read top to bottom, a tagged link tells a sentence: “This visitor came from facebook (source), via social (medium), as part of the summer_sale (campaign).” When you can read your link as that sentence and it makes sense, your tags are right. The UTM Link Builder lays the fields out in exactly this order so the sentence reads correctly by construction.
Real examples by channel
The clearest way to internalise the distinction is to see the same three fields filled out across different channels.
utm_source=newsletter
utm_medium=email
utm_campaign=summer_sale
The source is which email programme sent it (newsletter), the medium is the channel type (email), and the campaign is the promotion. If you also send a separate welcome series, that would be utm_source=welcome_series with the same utm_medium=email — two sources, one medium.
Social
utm_source=facebook
utm_medium=social
utm_campaign=summer_sale
Here facebook is the platform and social is the medium. Post the same campaign to LinkedIn and only the source changes to linkedin. This is the pattern that lets you ask “how is the summer sale doing across all social?” and also “which platform specifically?”
Paid
utm_source=google
utm_medium=cpc
utm_campaign=summer_sale
For paid search the medium is cpc (cost-per-click). The source google distinguishes Google Ads from, say, bing. Keep cpc reserved strictly for paid search clicks — mixing it with paid social muddies your channel reports.
Affiliate
utm_source=partner_blog
utm_medium=affiliate
utm_campaign=summer_sale
The medium affiliate groups all partner-driven traffic, while the source names the specific partner. This lets you measure the affiliate channel as a whole and rank individual partners within it.
Notice that across all four examples, utm_campaign stayed identical. That consistency is what lets GA4 show the summer sale’s total performance and then break it down by medium and source. Build these once with the UTM Link Builder, keep the campaign value spelled the same way every time, and the breakdowns line up automatically.
term vs content: the optional two
utm_term and utm_content answer narrower questions and are never required.
-
utm_termrecords a paid-search keyword, e.g.utm_term=running_shoes. It tells you which search term you bid on drove the click. Most ad platforms now populate keyword data automatically, so manualutm_termis mostly used in custom or non-Google paid setups. -
utm_contentdistinguishes two links that are otherwise identical — the classic use is A/B testing. If one email contains both a header button and a footer link to the same landing page, tag themutm_content=header_buttonandutm_content=footer_link. Same source, same medium, same campaign — only the content differs, so you learn which placement gets clicked.
The simplest rule: reach for utm_term only for paid keywords, and utm_content only when you need to tell two near-identical links apart.
How to avoid double-counting
Double-counting is when your reports inflate traffic because the same visit gets attributed more than once, or one channel splits into several rows. Three habits prevent it:
Never tag internal links. UTM parameters are for links arriving from outside your site. Tag a link between two of your own pages and GA4 resets the session, re-attributing the visitor and inflating your counts. Keep UTM tags on inbound links only.
Keep casing and spelling consistent. Facebook and facebook are two different sources to your analytics tool, and a single mistyped campaign name splits one promotion into two rows. Standardise on lowercase and a written naming convention. The UTM Link Builder can lowercase values for you so casing drift never reaches your reports.
Don’t let one channel use two mediums. If paid social is sometimes cpc and sometimes paid_social, GA4 can’t roll it into a single channel group. Pick one value per channel and stick to it.
Get source, medium, and campaign right and spelled consistently, and the rest of your analytics falls into place. For the complete picture — including the Urchin origin, GA4 reporting, and a team workflow — continue with UTM Parameters: The Complete Guide.