UTM Parameters Explained: Source, Medium, Campaign and GA4
The five UTM parameters, what each one is for, how to combine them without breaking a report, and how Google Analytics 4 turns them into channels.
What a UTM parameter is
A UTM parameter is a label you add to the end of a link so your analytics can tell where a visit came from. UTM stands for Urchin Tracking Module, after the company Google bought to build Analytics; the name has stuck even though nothing about it is specific to Google anymore. The parameters are just extra pieces on the end of a URL, after a question mark, and every serious analytics tool reads them.
They exist because a browser tells your analytics almost nothing about where a click came from. It can usually see the previous site, and not much else. It cannot tell your Tuesday newsletter from your Thursday one, or the link in a post from the link in your bio, because both arrive looking identical. UTM parameters fix that by putting the answer in the link itself: you decide what a link is called before you send it, and the analytics tool reads those labels when the page loads.
There are five of them. Three you set on almost every link, and two you use occasionally. The rest of this guide is what each one is for, how to combine them correctly, and how Google Analytics 4 turns them into the channels you see in your reports.
The five UTM parameters
Three are used by convention on nearly every tagged link. Two are optional and usually left empty.
| Parameter | Required | What it answers | Example value |
|---|---|---|---|
| utm_source | Yes | The specific place the click came from | google, newsletter, linkedin, partner-name |
| utm_medium | Yes | The kind of traffic it is | cpc, email, social, referral, affiliate |
| utm_campaign | Yes | The campaign the link belongs to | spring-sale-2026, q3-webinar |
| utm_content | No | Which link it was, when a campaign has several | header-button, footer-link, variant-b |
| utm_term | No | The paid search keyword | running-shoes (usually set by the ad platform) |
Only utm_source, utm_medium and utm_campaign are needed for a link to be useful. utm_content and utm_term earn their place in specific situations, covered below.
Source vs medium: the one distinction that matters
Source and medium are the pair people get backwards, and getting them backwards is what quietly breaks a report. The rule is simple once you see it: medium is the category, source is the specific thing inside that category.
Medium answers "what kind of traffic is this?" and should come from a short list your whole team agrees on: email, cpc, social, referral, affiliate. Source answers "which one?" and can be anything, because there are genuinely lots of places traffic comes from: google, bing, newsletter, linkedin, a partner's name.
So a link in your email newsletter is medium=email, source=newsletter. A Google search ad is medium=cpc, source=google. If you find yourself putting the same word in both, one of them is wrong.
Correctly constructed example URLs
The parameters go after the page address, separated from it by a ? and from each other by &. The order does not matter to the analytics tool. Spaces are not legal in a URL, so a value with a space is either hyphenated or encoded as %20. Here are three that are built correctly.
https://example.com/spring?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale-2026
https://example.com/shoes?utm_source=google&utm_medium=cpc&utm_campaign=running-shoes&utm_term=trail-running-shoes
https://example.com/offer?utm_source=linkedin&utm_medium=social&utm_campaign=q3-webinar&utm_content=header-cta https://example.com/offer?utm_source=linkedin&utm_medium=social&utm_campaign=q3-webinar&utm_content=footer-cta
You do not have to assemble these by hand. The free UTM builder encodes the values, keeps any parameters already on the destination, and leaves the two optional fields empty unless you fill them.
How GA4 reads utm_medium into a channel
GA4 groups traffic into default channels, and utm_medium is the main input. Some mediums decide the channel on their own; the paid channels also need a recognized source. These are Google's current default rules, simplified.
| If utm_medium is | GA4 default channel | Condition |
|---|---|---|
| The medium alone is enough. e-mail, e_mail and e mail also match. | ||
| organic | Organic Search | The medium alone is enough (or a recognized search source). |
| social | Organic Social | Also social-network, social-media, sm. The medium alone is enough. |
| referral | Referral | Also app and link. |
| affiliate | Affiliates | The exact word affiliate. |
| display, banner, cpm | Display | Also expandable and interstitial. |
| cpc, ppc, paid... | Paid Search / Social / Video | Only if the source is a recognized site of that type. The medium matches a paid pattern (contains cp, or ppc, retargeting, paid...), and the channel is decided by whether the source is a known search engine, social network or video site. |
| audio | Audio | The exact word audio. |
| sms | SMS | Source or medium of sms. |
The important nuance: cpc does not by itself mean Paid Search. utm_medium=cpc with utm_source=google is Paid Search; the same cpc with utm_source=newsletter is not, because a newsletter is not a recognized search engine. If a paid medium has an unrecognized source, GA4 may not place it in a paid channel at all. Also note that when Google Ads auto-tagging (the gclid) is on, GA4 attributes the click from the gclid and can ignore your utm values, so you rarely tag Google Ads links by hand.
When utm_content and utm_term are actually useful
Most links do not need either. Reach for them only when they answer a question you will really ask.
1. utm_content: same campaign, several links
Use it when one campaign sends more than one link and you want to tell them apart. The same offer in the header and the footer of an email, or two creative variants of an ad. Without it, both land under one campaign with no way to see which pulled the click.
2. utm_term: paid search keywords
It was built for the keyword behind a paid search click. If you run search ads with auto-tagging, the platform fills this in for you, so you almost never set it by hand. Tagging it manually only makes sense for keyword-level links you are building yourself.
3. When in doubt, leave them empty
An empty optional parameter is cleaner than one filled with a value you will never look at. You can always add utm_content later; you cannot easily un-split a report that was fragmented by a value nobody needed.
Common mistakes, and what they do to a report
None of these throw an error. They just quietly make the numbers wrong.
| Mistake | What happens |
|---|---|
| Inconsistent case: Email, email, EMAIL | Analytics treats them as three separate mediums, so one channel is split across three rows and none of them shows the real total. |
| Source and medium swapped | Traffic lands in the wrong channel. medium=newsletter, source=email reverses the categories and your channel grouping stops making sense. |
| Tagging internal links | A link between two pages of your own site starts a new session and credits the visit to your own campaign, overwriting how the visitor actually arrived. Only tag links that come from somewhere else. |
| A different spelling every time | paid-social one week, paidsocial the next, paid_social the week after. Each spelling is a new medium, and the channel quietly fragments. |
| Spaces and capitals in campaign names | Spring Sale 2026 and spring-sale-2026 are two campaigns to the analytics tool. Pick one form and keep to it. |
Every one of these is a naming problem rather than a technical one, which is why a convention matters more than a tool.
Consistency is the whole game
Nothing enforces UTM values. The analytics tool records exactly what is in the link, character for character, and a single stray capital or a second spelling of the same medium splits a campaign across rows that should have been one. That is the real work: not building a link, but building every link the same way as the last one.
For a convention you can adopt today, with a copyable template and the rules that keep a report readable as a team grows, see the UTM naming conventions guide.
Frequently asked questions
Build a UTM link, correctly, in a few seconds.
The free builder encodes the values, keeps the parameters already on your destination, and can lowercase and hyphenate so casing never splits a report.
Keep going
Design the naming rules, then build and manage the links.