PillarHub Article

UTM parameters: Complete Guide 2026

UTM parameters explained: 5 tags, how to create manually & with tools, naming standards, common mistakes & validation in GA4.

Published:
UTM parameters: Complete Guide 2026

A UTM parameter is a snippet of code added to the end of a URL that tells your analytics system exactly where a visitor came from: which ad, email campaign, or social post drove the click. You add it before launching your campaign — in a Google Ads ad, a Meta Ads post, an email, or a social story — and without it, your traffic reports turn into guesswork. Let's break down how UTM tags work, what happens to them after a click, and the five parameters available, plus when three is enough and when you need all five.

What is a UTM parameter?

A UTM parameter (Urchin Tracking Module — named after the analytics system where the format was invented in the early 2000s) is a section of a URL that adds coded information about the source of a visit. Without a tag, AdMetric or any analytics system only sees that someone visited your site. With a tag, it knows that person came from, for example, a specific Google Ads ad targeting a particular keyword.

The format has been around for two decades, but it hasn't aged. Google Analytics 4, Mixpanel, Amplitude, and most CRM platforms read UTM parameters the same way, so a tag remains the universal tool to pass context between systems that otherwise don't talk to each other.

The syntax is straightforward: base URL + question mark + parameters separated by ampersands. Here's a working example:

https://example.com/catalog?utm_source=google&utm_medium=cpc&utm_campaign=summer_2026

Here, example.com/catalog is the base URL, and everything after the question mark is three parameters: the traffic source, the traffic type, and the campaign name. Your analytics system reads this string when the page loads and logs the values in your report for that specific visit.

The core job of a UTM tag is to turn an anonymous visit into structured data: the source, channel, and campaign are visible immediately in GA4 reports, no manual log digging or wondering "where did this visitor come from?" This foundation powers attribution across all your channels, where data from ads, your website, and your CRM merge into one report. Without tagged URLs, comparing channels is only ever approximate.

People often mix up UTM parameters with system parameters like gclid or fbclid — click IDs that ad platforms insert automatically to send conversion data back to their own dashboards. UTM is the opposite: you set it by hand (or with a URL builder) before the campaign launches, and it's human-readable, not machine-to-machine. gclid and fbclid work alongside UTM, but they solve a different puzzle — they sync conversions back to the ad platform for bid optimization, while UTM groups traffic in your analytics.

In practice, both types often live in the same URL: UTM creates a readable report for people, while gclid or fbclid handles automatic conversion tracking for the ad platform's own algorithms.

iKey takeaway

A UTM parameter is a snippet added to a URL before you launch an ad, post, or email campaign. It tells your analytics system the exact source, channel, and campaign of each visitor — so you get a clean report instead of guesses.

How a UTM parameter works

Technically, a UTM tag does nothing fancy — it just rides along with the link and gets read once, when the page first loads. Here's the flow:

  1. A user clicks the link with UTM parameters — in an ad, a post, an email, or a chat message.
  2. The browser loads the page at the URL in the link, including the entire parameter string after the question mark.
  3. Your analytics script (GA4, Mixpanel, or another system) reads the parameters from the address bar and writes them into the report as attributes of that visit.
  4. The values stay in the browser session or cookies for a set time — usually a few hours to a few months, depending on your analytics settings.
  5. If the user returns to your site later without a tag — by a bookmark or organic search — the system can still credit the original tagged visit when calculating a conversion, depending on your attribution model.

Attribution is the set of rules your analytics system uses to decide which source gets credit for a conversion when multiple touches happened before the sale or lead. Attribution models are covered in more depth in a separate article. The most common is last-click: the conversion gets credited to the final touchpoint before the purchase or form. That's why your tags must be consistent across all paid channels — otherwise last-click distorts the picture, giving the credit to organic or direct traffic instead of the paid campaign that started the journey.

Tag lifespan matters. If someone clicked an ad on Monday but didn't buy until Friday through a direct visit, last-click might credit the Monday tag — if the time between visits falls within your analytics' attribution window. For long sales cycles, tags reveal not just the final click, but the whole sequence of touchpoints — if you pick the right attribution model in your reports.

Without UTM parameters, your report groups all traffic from Google Ads or Meta Ads into one faceless bucket — "paid search" or "social." With tags, each campaign, ad, and even individual keyword becomes its own line in the report, which you can then compare by cost and by leads generated.

The five UTM parameters

A UTM tag contains five parameters. Three are required — without them, the tag becomes pointless — and two are optional for when grouping by campaign alone isn't enough. Each parameter starts with utm_, uses only lowercase Latin letters and underscores, and is set with an equals sign.

ParameterWhat it tracksRequired?Example values
utm_sourcetraffic source — the platform or service where the visitor came fromyesgoogle, meta, newsletter, tiktok
utm_mediumtraffic type or placement channelyescpc, email, social, display
utm_campaignthe specific ad campaign or mailing series nameyessummer_sale_2026, black_friday, welcome_series
utm_termkeyword or audience segment that triggered the adnobuy_sofa_nyc, apartment_repairs
utm_contentad variant or creative for A/B testingnobanner_1, text_ad_a, video_15s

The first three are your baseline. utm_source names the platform: google, meta, tiktok. utm_medium describes the channel: cpc, email, social, and so on. utm_campaign labels the specific campaign, so a summer clearance stands apart from a holiday sale. This trio is enough for a small business with one or two active channels — it shows where leads come from. Three parameters give you a working report: you see the source, channel, and campaign, and it's enough to separate paid ads from organic traffic and compare campaigns by visitor count.

utm_term and utm_content come into play when a campaign expands. utm_term shines in search ads — it shows which keyword drove a click when you're testing dozens. utm_content splits variants in A/B tests: if two banner designs or two ad copy versions are running in the same campaign, this parameter shows which performs better and what each lead costs. Without utm_content, both variants collapse into one report line — you'd have to guess which to pause instead of seeing revenue per creative.

A URL builder (a script, an Excel sheet, or your ad platform's native tool) prevents errors and typos. When you're adding tags, follow a few rules:

  • consistent case across all values — lowercase is safest, so Google and google don't become two different sources;
  • proper URL encoding for Latin characters, spaces, and special symbols;
  • the same set of parameters for similar campaigns — otherwise comparing them in a report becomes awkward.

Break these rules, and GA4 will see one campaign as several different ones because of spelling or capitalization differences, and your traffic report fragments into duplicates instead of a clean view.

AdMetric

Cross-channel attribution without a full analytics team

Combine Google Ads, Meta Ads, your website, and your CRM into one report. 7 days free, no card required.

Start for free →

How to create a UTM parameter: Step by step

The short version: before launching, lock in your source, medium, and campaign; build the URL by hand or with a tool; test it; shorten it if needed for social or print. Order matters: if your campaign goes live with unfinished tags, different ads will end up with different values, and comparing results a month later becomes impossible.

  1. 1

    Set your source, medium, and campaign

    Before the campaign starts, decide what goes in utm_source (platform: google, meta, tiktok), utm_medium (channel: cpc, email, social), and utm_campaign (campaign name). Change the format mid-run and you'll break comparisons across reporting periods in GA4. If your campaign uses keywords or multiple ad creatives, add utm_term and utm_content too — they're useful for tracking clicks down to the individual ad level.

  2. 2

    Build your URL

    Manually add a question mark to your page URL and list your parameters separated by ampersands. Or use a tool: Google Campaign URL Builder for external campaigns, a Meta Business Suite builder for Meta Ads, or your platform's native link builder. A URL builder is especially useful with more than two or three parameters — it's easy to miss an ampersand or misspell a parameter name by hand.

  3. 3

    Test your link before launch

    Click the link in a browser: the page should load, spaces in parameters should be encoded (%20 or underscore), and case should match everywhere. Then do a test visit and check that it shows up in GA4 under the right source, not lost in direct traffic.

  4. 4

    Shorten long URLs

    For a social post, QR code, or print ad, run your complete URL through a shortener — five parameters can easily hit 120+ characters, which looks suspicious next to a headline, gets cut off in chats, and won't fit in some platforms' character limits.

Building by hand takes a couple of minutes: URL + ? + parameters joined with &. The big risk is a typo in a parameter name or a missing ampersand, and the whole tag breaks. A URL builder eliminates that — Google's Campaign URL Builder or a similar tool constructs the string and won't let you skip a required field. For a marketer building a handful of links a month, the difference is minor. For an agency with multiple people building links at once, a tool saves time and kills errors. For details on campaign parameters in Google Ads, see Google's help center.

The final check isn't just visual. If GA4 has goals or events set up, you'll catch mistakes before launch — a visit shows up immediately in your source report. This is critical for multi-ad campaigns: if two creatives share the same utm_content value, they'll appear as one line, and you'd be guessing which to turn off instead of seeing the revenue per ad.

A complete tagged URL looks like this:

https://admetric.pro/lp/promo?utm_source=google&utm_medium=cpc&utm_campaign=summer_2026

A unified UTM naming standard for your team

Without a standard, tags fall apart within weeks: one person writes cpc, another CPC, someone else adds a space in the campaign name. GA4 reads them as different sources, and your traffic report becomes noise — the analyst spends hours untangling inconsistencies instead of telling you where to shift budget.

The basic naming rules worth documenting and sharing with everyone who launches campaigns:

  • lowercase for everything — no exceptions for brand names, platforms, or proper nouns;
  • no spaces — use a hyphen or underscore instead, and stick with the same separator across all campaigns (this is your team's naming convention);
  • fixed parameter order: source → medium → campaign → term/content for keywords or creative variants;
  • plain Latin letters only, no accented characters or symbols like %, #, + in values — they either break the link or demand extra URL encoding;
  • a date or quarter in the utm_campaign if you run similar promotions regularly — otherwise six months later your registry holds a dozen campaigns named promo, and finding the right one means checking creation dates.
Campaign typeutm_sourceutm_mediumutm_campaign
Google Ads, searchgooglecpcsummer_sale
Meta Ads, retargetingmetacpcnew_customers_august
Email newsletternewsletteremaildigest_august
TikTok Adstiktokcpcpromo_fall

Notice: utm_medium repeats on purpose — cpc makes sense for both Google Ads and Meta Ads because it's a billing model, not a platform name. The platform is already in utm_source; don't duplicate it in medium.

Keep a registry in one shared spreadsheet: the full URL, creation date, owner, and campaign status (live, completed, archived). It adds a few minutes to link creation, but eliminates duplicate utm_campaign names across different campaigns. When multiple people are building links at the same time, the registry is your single source of truth — without it, you can only verify a campaign name by digging through GA4 manually.

Document the standard in writing, not just in chat. People change jobs, new hires come on, and memory fades: if the rules live only in a Slack channel, they'll be forgotten or reinterpreted within two update cycles.

From AdMetric's observations, UTM standards break most often not on brand-new campaigns, but on repeats: a marketer copies last year's link, tweaks the date in the URL by hand, and forgets to update utm_campaign — the tag works fine and traffic flows, but GA4 mixes the data with last year's numbers, and comparing seasons becomes impossible.

Common UTM mistakes

UTM tags break in five typical ways — they happen regardless of company size and usually only surface a month or two later, when the data can't be fixed retroactively.

  1. Inconsistent case in a single source. GA4 treats Cpc and cpc as two different values — one campaign's traffic splits into two sources, and comparing performance without manual cleanup becomes impossible.
  2. Unencoded spaces and special characters. A space in a campaign name breaks the link or gets eaten by a chat app — encode it as %20 or use an underscore from the start, not after pushing the link to platforms.
  3. UTM tags on internal site links. This breaks attribution completely — see the note below.
  4. Untagged emails and social posts. A link in an email or post without utm_source=newsletter or utm_source=meta looks like direct traffic to GA4, and the channel vanishes from your report even though traffic is flowing.
  5. Unshortened URLs with 5+ parameters. At 150+ characters, a link gets cut off in chat, mangles QR codes, and looks risky — shorten it before publishing, especially in print.

None of these show up immediately — the ad runs, traffic registers, the page loads. The damage surfaces later, when you're building the monthly report and numbers don't match between your ad platform and GA4.

!UTM tags on internal site links break attribution

If you tag a link inside your site — say, from the header to a service page, or from a product card to checkout — GA4 treats it as a new session with a new traffic source. The ad that originally brought the user to your site vanishes from the report, and the final lead or sale gets credited to the internal link instead, even though the user never left your site. For proper cross-channel attribution, this is critical: instead of a chain from ad to lead, your report shows a broken piece of the path, and calculating real cost-per-lead by channel becomes impossible. Put UTM tags only on links coming into your site from outside — ads, emails, and social posts. Use regular links with no parameters for navigation inside your site.

Each error alone is survivable, but stacked together, they make traffic reports useless: either you spend hours validating each tag by hand, or you trust numbers that don't match reality.

UTM parameters in practice: structure and numbers

Question: three parameters or five? The answer depends on what your campaign needs, not habit.

The three required parameters answer the main question: where did the visitor come from, and under which campaign? For most launches, it's plenty. An agency sets up a Google Ads campaign, tags it with three parameters, and a month later sees in the report how many leads came from each channel.

The two optional ones matter when grouping by campaign alone doesn't answer "what worked best." utm_content splits ad variants within a campaign: banner A vs. banner B, otherwise both blur into one line. utm_term stores the keyword or audience segment behind the click, which is what tells you whether the traffic problem is the ad or the query you bought. A campaign running five banners or two different offers without these two parameters leaves you wondering about the performance of each variant.

Parameters have a cost — length. The page https://admetric.pro/lp/promo is 29 characters. Add the three required parameters, and you hit 87 — three times longer. Add utm_term and utm_content, and you're at 130 characters, and that's with short values and no spaces.

Length matters: a long URL looks worse in a banner or post, breaks when copied into chat, and risks being copied wrong by hand.

iPractical rule
Start with three required parameters for every campaign. Add utm_content when you're testing multiple creatives, and utm_term when you need the keyword or audience segment behind the click. For social links, use a shortener, but keep the full tagged URL in your ad platform or a campaign log.

How to work with UTM parameters in AdMetric

Manually checking each tag across every ad platform — hours of work: export from Google Ads, export from Meta Ads, copy into a sheet, hunt for typos. AdMetric cuts the busywork: the platform connects directly to your accounts and pulls tags into one report, no file downloads.

First task: normalization. One person uses cpc, another CPC — in a plain spreadsheet, that's two different sources. AdMetric normalizes values to a single format and groups campaigns correctly, even if different people tagged them at different times.

Second task: tag quality control. A broken tag is invisible to the eye: an extra space, a repeated parameter, a missing utm_campaign — and traffic silently falls into "unknown." The platform catches it automatically, before a month of bad data piles up.

Third task: link clicks to revenue. A tag records the source, but answers "did this channel make money?" only when the click is paired with the sale in your CRM. AdMetric matches click to tag to deal without manual spreadsheet merging — see our article on marketing automation.

What the platform does in practice:

  • pulls UTM tags from your ad platforms (Google Ads, Meta Ads, and other connected sources) into a single report;
  • normalizes all parameter values to one case and format;
  • finds broken, duplicate, and missing tags;
  • connects clicks to deal outcomes in your CRM without manual exports.

Pricing and account limits are on the pricing page. A 7-day trial is open with no card required.

AdMetric

See your real channel ROI

Plug in your ad accounts and CRM. Watch your actual cost per lead and revenue per channel light up in minutes.

Start for free →

FAQ on UTM parameters

Quick answers to common questions: from the definition to case sensitivity and the difference between UTM and ad platform parameters. Each answer stands alone and works as a quick reference.

What's a UTM parameter in simple terms?+
A UTM parameter is a code snippet at the end of a URL that tells you where a site visitor came from — which ads, emails, or posts drove the click, and what campaign it was part of. The parameter doesn't change what's on the page; it adds data to the link itself. Analytics systems like GA4 read the code and group visits by source in their reports, instead of lumping everything into one generic traffic stream.
How do I build a UTM parameter for free?+
Build it by hand: add a question mark to your URL and list parameters separated by ampersands, like utm_source=google&utm_medium=cpc&utm_campaign=may. Faster and easier is Google's Campaign URL Builder or a similar tool — type in your URL and the parameter values, and the tool assembles the full string and prevents typos in the syntax.
Which UTM parameters are required?+
Three are required: utm_source — the traffic source (google, meta, etc.); utm_medium — the channel (cpc, email, social); utm_campaign — the campaign name. Without them, your analytics can't uniquely identify where a click came from. utm_content and utm_term are optional and only needed for finer tracking — like comparing multiple ad creatives in a single campaign.
Why aren't my UTM parameters showing up in GA4?+
Usually, it's inconsistent capitalization: utm_source=Google vs. utm_source=google looks like two different sources to GA4. Another common culprit is unencoded spaces or special characters in the values. A third reason is putting a tag on an internal site link instead of an external ad — GA4 tracks source data on entry from outside, not between pages on your site.
Can I use uppercase letters in UTM parameters?+
Technically, yes — the link will work and the visit will record. But GA4 is case-sensitive: utm_source=Google and utm_source=google show as two separate sources in reports, and stats for one channel split into pieces. Best practice is lowercase everywhere and stick with it, no matter who sets up the campaign.
What's the difference between UTM and gclid or fbclid?+
A UTM parameter is universal — you write it yourself and any analytics system can read it. gclid and fbclid are technical identifiers that Google and Meta insert automatically to sync conversion data back into their own ad dashboards. UTM is for human reporting; gclid and fbclid are for internal platform optimization. They work together — UTM tracks for you, gclid/fbclid tracks for the platform.
How do I shorten a long UTM URL?+
Use any URL shortener — Bitly, TinyURL, or a similar service. It transforms a long URL with parameters into something short like tiny.cc/abc123, and the click still registers with the full UTM tag intact. Keep the original long URL in your ad platform or a campaign log so you don't lose the tagging if you rerun the campaign.