Short text tags appended to a URL — utm_source, utm_medium, utm_campaign and two optional ones — that tell analytics tools where a click came from.
Last verified · 2026-11-02 · by Moe Ameen
UTM parameters are short text codes added to the end of a URL so an analytics tool can attribute a click to a specific source, channel, and campaign. They live in the query string — everything after the "?" — and they don't change the page the visitor sees; they simply ride along and get read by Google Analytics or an equivalent platform, which groups the incoming traffic by the labels you set. The whole point is to turn an otherwise anonymous flood of visits into an answerable question: which post, which platform, which email, which ad actually sent this person.
There are five parameters. Three form the working core that marketers use together on virtually every link: **utm_source** names the specific platform, site, or partner the click came from (e.g. `instagram`, `newsletter`, `partnerblog`); **utm_medium** names the channel category (e.g. `social`, `email`, `cpc`); and **utm_campaign** names the initiative the link belongs to (e.g. `spring_launch`). Two are optional and add finer detail: **utm_term** records a paid-search keyword or audience segment, and **utm_content** distinguishes between variants of the same link — the two buttons in one email, or two creatives in an A/B test. A fully tagged link looks like `example.com/page?utm_source=instagram&utm_medium=social&utm_campaign=spring_launch`.
Technically, none of the parameters are mandatory — an analytics tool will accept a URL with any combination, or none. But source and medium are what the tool reads to classify the traffic channel, so a link missing them lands in a vague or misattributed bucket. "Required" in most guides really means "the convention you should always follow," not a hard technical rule. The parameters are also case-sensitive, which is the single most consequential mechanical fact about them: `Instagram` and `instagram` are two different values and produce two separate rows in a report, silently splitting a campaign's numbers in half.
A crucial boundary: UTM parameters are for inbound links that bring a visitor to your site from somewhere else. Tagging a link between two pages on your own domain overwrites the visitor's true original source and starts a fresh session, corrupting the exact attribution the tags exist to protect. They also tag a click, not a person — they don't follow a user across devices, and any conversion attribution after the click still depends on cookies, consent, and the analytics setup underneath.
The "UTM" in the name stands for Urchin Tracking Module. It comes from Urchin, a web-analytics company whose software let site owners track where their visitors originated. Google acquired Urchin in April 2005 and rebuilt its technology into what launched later that year as Google Analytics. The campaign-tagging parameter scheme carried over from Urchin into Analytics largely intact, which is why marketers still type a prefix named after a product most of them never used.
In the two decades since, the five-parameter convention became the de facto standard far beyond Google's own stack — email platforms, social schedulers, ad managers, and rival analytics tools all read and write the same `utm_` keys, so a link tagged once is legible everywhere. The move to Google Analytics 4 extended the set rather than replacing it: GA4 recognizes the original five plus newer manual parameters such as `utm_id` (a campaign ID that ties manual tags to a cost-data import), `utm_source_platform`, `utm_creative_format`, and `utm_marketing_tactic`. The additions are specialized and optional; the classic source/medium/campaign trio still carries the overwhelming majority of real-world tracking.
| Platform | Behavior |
|---|---|
| Google Analytics 4 | The canonical reader. GA4 classifies traffic into channels using utm_source and utm_medium, rolls up by utm_campaign, and exposes utm_term/utm_content in Explore views. It also accepts the extra manual parameters (utm_id, utm_source_platform, and others). Default data retention is two months for user- and event-level data, extendable to 14 months in Admin settings — relevant if you report on long campaigns. |
| Instagram / TikTok / Facebook (in-app browsers) | A known leak. Clicks opened inside a platform's in-app browser can have the query string stripped or mangled before it reaches your analytics, so a share of UTM-tagged social clicks never register with their tags. UTM data from social is a strong directional signal, not a perfect count — expect a gap between tagged clicks and total sessions. |
| Google Ads | Prefers auto-tagging. Ads can append its own gclid parameter and import cost/click data automatically, which is more complete than manual UTMs and generally should not be duplicated with manual utm tags on the same links. Manual UTMs remain the tool for channels Ads does not auto-tag. |
| Email platforms | A natural fit: utm_medium=email, a campaign name per send, and utm_content to separate the two or three links competing inside one newsletter. Because email clients render links as the sender wrote them, the tags survive reliably — email is one of the cleaner UTM channels. |
| Your own site (internal links) | Off-limits. Tagging a link between pages on your own domain overwrites the visitor's real source and starts a new session, so the traffic is re-attributed to whatever you typed. Use internal-navigation conventions, never UTMs, for on-site links. |
UTM parameters are the least glamorous and most load-bearing thing in a content operation's measurement stack, and the mistake I see most is treating them as a tagging chore instead of a naming discipline. The link is trivial to build. Keeping one consistent vocabulary — the same source names, the same medium values, the same campaign format — across every platform, every teammate, and every month is the actual work, and it's where the data quietly rots. A single capitalization slip or a rogue "insta" doesn't throw an error; it just splits a row, and you don't notice until the report you're basing a budget on is wrong.
That matters more, not less, as discovery moves toward [zero-click search](/glossary/zero-click-search) and AI answers, because the clicks that do reach your site are scarcer and each one needs to be attributed correctly. UTMs are your first-party record of what actually sent a visitor, independent of whatever a platform claims it drove. The practical connection to a publishing workflow is simple: the more surfaces you fan one piece of content to, the more links there are to tag consistently, and the more valuable it is to apply the convention once at publish time rather than hand-tagging per platform. A generation-and-publishing engine like [Kompozy](/) is a sensible place to set that scheme once as content goes out across the eight social platforms plus blog and email — but the tags are only the input. The reading and the attribution still belong to GA4, and the discipline of a fixed naming convention still belongs to you.
UTM parameters are short text codes appended to a URL's query string that tell an analytics tool where a click came from. The five are utm_source (the platform or partner), utm_medium (the channel type), utm_campaign (the initiative), utm_term (optional, a paid-search keyword), and utm_content (optional, a creative or link variant). They don't change the destination page — they add tracking context that Google Analytics and similar tools read.
UTM stands for Urchin Tracking Module, named after Urchin, a web-analytics company Google acquired in April 2005 and rebuilt into Google Analytics. The parameter scheme carried over from Urchin and is now the de facto campaign-tagging standard across nearly every analytics and marketing platform.
No parameter is technically mandatory — an analytics tool will accept any combination — but utm_source, utm_medium, and utm_campaign are the core set you should always use together, because source and medium are what the tool reads to classify the traffic channel. utm_term and utm_content are optional and mainly used for paid-search keywords and A/B testing.
Yes, and this is the most common way UTM data gets corrupted. utm_source=Instagram and utm_source=instagram are treated as two different values, so they appear as two separate rows and split a campaign's numbers. Keep every value lowercase and consistent across your whole team.
No. Search engines ignore UTM parameters and the tags don't change the page a visitor lands on, so there's no ranking effect. To avoid any duplicate-content concern, keep your canonical tag pointed at the clean, parameter-free URL — which is standard practice regardless.
No. UTM parameters are for inbound links that bring a visitor from outside your site. Tagging a link between two of your own pages overwrites the visitor's original traffic source and starts a new session, which distorts your attribution. Use internal-navigation conventions for on-site links instead.