UTM Parameters Explained: What They Are and How to Use Them
By Shihab Mia August 4, 2026 8 min read
Quick answer
UTM parameters are small tags you add to the end of a URL so analytics tools like Google Analytics can tell exactly which link someone clicked to reach your site. There are 5 standard tags: utm_source (where the click came from, like "newsletter"), utm_medium (the channel, like "email"), utm_campaign (the campaign name, like "august-sale"), and two optional ones, utm_term and utm_content, for finer detail. Build them with a UTM builder instead of typing them by hand, since a single typo silently breaks tracking.
What a UTM parameter actually is
A UTM parameter is just a piece of text appended to a URL's query string, the part after the question mark. On its own, a URL like https://example.com/landing tells your web server which page to load, but it tells your analytics tool nothing about how the visitor got there. UTM tags fix that. Each tag is a simple key=value pair, and when you have more than one, they are joined with an ampersand (&). When you append ?utm_source=newsletter&utm_medium=email&utm_campaign=august-sale to that same URL, you get https://example.com/landing?utm_source=newsletter&utm_medium=email&utm_campaign=august-sale. The page loads exactly the same for the visitor, but Google Analytics (and most other analytics platforms) reads those tags and logs the visit as coming from the "newsletter" source, the "email" medium, and the "august-sale" campaign.
UTM stands for Urchin Tracking Module, named after Urchin, the web analytics company Google acquired in 2005 that became the foundation of Google Analytics. The format stuck because it is simple, plain-text, and works with any analytics tool that can read a URL, not just Google's.
The 5 standard UTM parameters
Every UTM tag follows the same pattern: utm_[parameter]=[value]. Multiple tags are joined with an ampersand (&). Here is what each one does.
The 5 standard UTM parameters
| Parameter | Purpose | Required? | Example value |
|---|---|---|---|
| utm_source | Identifies the specific platform or publisher sending the traffic | Yes | newsletter, google, facebook |
| utm_medium | Identifies the general marketing channel or method | Yes | email, cpc, social, referral |
| utm_campaign | Identifies the specific campaign, promotion, or initiative | Yes | august-sale, product-launch-2026 |
| utm_term | Historically used to track the paid search keyword that triggered an ad | Optional | running-shoes-mens |
| utm_content | Differentiates similar links or creative variants pointing to the same page | Optional | header-cta, footer-cta, variant-a |
utm_source: where the click came from
Source answers "which specific place sent this visitor." Think of it as the publisher or platform: google, facebook, newsletter, partner-blog. Keep it specific but consistent. If you use newsletter in one campaign and email-newsletter in the next, Analytics treats them as two different sources and your reporting fragments for no reason.
utm_medium: how the traffic arrived
Medium is the broader bucket the source belongs to: email, cpc (cost-per-click, i.e. paid ads), social, referral, affiliate. Google Analytics uses source and medium together to group traffic into channels, so getting the medium right matters for the default channel reports, not just custom ones.
utm_campaign: which initiative this belongs to
Campaign names the specific push: august-sale, black-friday-2026, webinar-signup. This is what lets you compare one campaign's performance against another, and it is often what people check first when tying traffic back to marketing spend or a conversion rate goal.
utm_term and utm_content: the optional detail tags
utm_term was built for paid search, to record which keyword triggered a given ad. It is used far less today since most ad platforms sync keyword data automatically, but it is still useful if you manually build search ad URLs. utm_content is more broadly useful now: it lets you tell apart two links that otherwise share the same source, medium, and campaign, such as the "Shop Now" button versus a text link in the same email, or version A versus version B when you are A/B testing two calls-to-action.
A worked example
Say you are running an August sale and sending it through three channels. Here is how the same landing page URL would be tagged differently for each.
Same landing page, three tagged channels
| Channel | Full tagged URL |
|---|---|
| Email newsletter | https://example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=august-sale |
| Facebook ad | https://example.com/sale?utm_source=facebook&utm_medium=cpc&utm_campaign=august-sale |
| Partner blog post | https://example.com/sale?utm_source=partner-blog&utm_medium=referral&utm_campaign=august-sale |
Notice utm_campaign stays identical across all three rows. That is intentional: it lets you filter your analytics tool by "august-sale" and see every channel's contribution side by side, then break it down further by source and medium.
How UTM parameters show up in Google Analytics 4
Once a tagged link is clicked, GA4 stores the values in the Session source, Session medium, and Session campaign dimensions, which you can see in the Traffic acquisition report under Reports > Acquisition, or pull into a custom exploration alongside utm_term and utm_content. GA4 generally credits a session to the most recent qualifying click before that session started, an approach commonly called last non-direct click, though the precise attribution model applied to conversions can be adjusted in a property's settings and varies by configuration. This is exactly why untagged links quietly wreck reporting: without utm_source and utm_medium, GA4 has to infer a channel from the referring domain, and traffic often lands in a generic bucket like (direct) or Unassigned instead of showing up under the campaign you actually ran. Because the tags live in the URL itself, no extra setup inside GA4 is required beyond making sure the destination page is already being tracked.
Naming rules that keep your data clean
UTM values are case-sensitive in most analytics tools, which is the single most common way campaign data gets fragmented. Newsletter, newsletter, and NEWSLETTER will typically show up as three separate rows in your report even though a human reads them as the same thing. A few habits prevent almost all of this:
- Always use lowercase for every parameter value.
- Use hyphens instead of spaces (
august-sale, notaugust sale), since a raw space in a URL becomes an encoded character that is easy to misread later. - Agree on a fixed vocabulary for medium (e.g. always
email,cpc,social,referral, never a mix of synonyms) and write it down somewhere the whole team can see. - Keep campaign names descriptive but short, and consider a consistent pattern like
[campaign]-[year]or[month]-[initiative]so they sort logically in reports. - Build links with a UTM builder rather than typing them by hand, so you cannot accidentally add a stray capital letter or space.
UTM parameters vs. click IDs like gclid and fbclid
UTM parameters are not the only tracking values that can show up in a URL. Google Ads and Meta Ads automatically append their own identifiers, such as gclid (Google click identifier) and fbclid (Facebook click identifier), when auto-tagging is turned on. The difference is purpose: a click ID is a long, opaque token the ad platform uses internally to match a click back to a specific ad, keyword, and conversion for its own bidding and reporting. A UTM parameter is a short, human-readable label you choose yourself, meant to be read by your analytics tool, not the ad platform. The two are not mutually exclusive: a Google Ads link can carry both a gclid for Google's own conversion tracking and utm_source, utm_medium, and utm_campaign for cross-channel reporting in GA4 or another analytics tool, since each value serves a different system.
Common mistakes
Most UTM problems are not conceptual, they are small formatting slips that quietly corrupt weeks of reporting before anyone notices.
- Inconsistent casing across campaigns. This is the top cause of split, duplicate rows in Analytics. Pick a casing convention (lowercase) and enforce it everywhere.
- Tagging internal links. Never put UTM parameters on links between pages of your own site. Doing so overwrites the visitor's original source with your internal link's tag, destroying the attribution you were trying to protect.
- Forgetting utm_medium. Without a medium, many tools cannot slot the traffic into a clean channel group, so it often lands in a generic or unassigned bucket.
- Reusing the same utm_content for different creative. If two different email buttons both say
cta, you lose the ability to tell which one actually drove clicks or influenced your click-through rate. - Manually typing long URLs. A single missing ampersand or misplaced equals sign silently breaks tracking with no visible error, since the link still works, it just is not tagged correctly.
- Not testing the finished link. Paste the tagged URL into a browser before sending it out to confirm it loads the right page and that no parameter got cut off, duplicated, or double-encoded.
Good to know
UTM tags are visible in the address bar, which means they are not a private or hidden tracking method, and savvy visitors can see exactly which campaign, source, and medium sent them your way. That transparency is generally fine for marketing links, but it is one reason UTM tags are not appropriate for anything sensitive. Also worth knowing: UTM parameters only track the click that lands on your site. They do not, by themselves, track what a visitor does afterward, that is where your analytics platform's own event tracking and goals take over, often informing metrics like engagement rate further down the funnel.
When to use UTM parameters (and when not to)
Use UTM tags on any link you control that lives outside your own website: email campaigns, paid social ads, influencer or partner posts, QR codes on printed materials, links in a podcast description, or any place you want to measure the return of a specific marketing effort. Skip them on internal navigation, on links in your own footer or blog posts pointing to other pages on your site, and generally on organic social profile bio links unless you are deliberately splitting traffic from multiple bio-link placements. As a general rule of thumb that varies by team, it helps to standardize your UTM approach at the start of a campaign rather than retrofitting it after links are already live, since historical clicks cannot be retagged after the fact.
๐ Try the free tool UTM Builder Free UTM builder. Add utm_source, utm_medium and utm_campaign tags to any link in seconds, then copy a clean tracking URL for Google Analytics. No sign-up.The mechanics of UTM tagging are simple once the 5 parameters are clear, but consistency is what actually makes the data useful. Settle on a naming convention before your next campaign goes live, build every link with a tool instead of by hand, and you will have clean, comparable campaign data sitting in your analytics tool from day one.
Frequently asked questions
What does UTM stand for?
UTM stands for Urchin Tracking Module, named after Urchin, the analytics company Google acquired in 2005 that became the basis of Google Analytics. Despite the name, UTM tags work with any analytics platform that can read a URL's query string, not just Google's tools.
Are UTM parameters required, or just utm_source, utm_medium, and utm_campaign?
Only utm_source, utm_medium, and utm_campaign are considered the core, generally required tags. utm_term and utm_content are optional and used for extra detail, like tracking a paid search keyword or telling apart two similar links in an A/B test.
Do UTM parameters affect SEO or which page loads?
No. UTM parameters do not change which page loads or how it renders, and search engines are built to recognize them as tracking tags rather than separate pages, so a properly configured site will not create duplicate-content issues from them.
Should UTM values be uppercase or lowercase?
Lowercase, consistently. Most analytics tools treat UTM values as case-sensitive, so "Newsletter" and "newsletter" can appear as two separate rows in your reports even though they mean the same thing. Standardizing on lowercase is the simplest way to avoid fragmented data.
Can I add UTM parameters to links on my own website?
You generally should not tag internal links, links between pages on your own site. Doing so overwrites the visitor's original referral source with the internal link's tag, which corrupts your attribution data instead of protecting it.
What is the easiest way to build a UTM-tagged link?
Use a dedicated UTM builder rather than typing parameters by hand. A builder prevents small formatting errors, like missing ampersands or inconsistent casing, that silently break tracking even though the link still works fine for visitors.