19 minutes

What Is a UTM Tag: How to Build One, Where to Find the Data and Why It Matters

scho take utm mitka

The question “where did this customer come from?” sounds simple right up until you try to answer it with numbers. A call came in — from which source, nobody knows. A form submission arrived — but whether it came from the newsletter, a Telegram post or a banner on a partner site, the report doesn’t say. In Google Analytics 4 half the traffic sits in direct / (none), and every conversation about channel performance turns into an exchange of guesses.

A UTM tag is the simplest and cheapest way to close that gap. It needs no developer, doesn’t depend on your CMS, works the same for a WordPress site and a landing page built in a website builder, and takes thirty seconds to add to a link. The price is discipline: the tags have to be consistent across the whole team, otherwise they don’t simplify the report — they break it.

Below is the full picture: what a UTM tag is, what it consists of, how to build one properly for every channel, how it reaches your GA4 reports, and which mistakes make the data unusable. You don’t have to assemble tags by hand — that’s what our UTM builder is for. It puts links together to a single set of rules and prevents the usual mistakes with capitalisation and spaces.

What a UTM tag is, in plain terms

A UTM tag is a set of parameters added to the end of a link so that your analytics platform knows exactly where a visitor came from. The abbreviation stands for Urchin Tracking Module: Urchin was the analytics product Google acquired in 2005 and turned into Google Analytics. The parameter format has barely changed since and has become the de facto industry standard — it is understood by GA4, Matomo, Piwik PRO, Adobe Analytics, most CRMs and virtually every email marketing platform.

A tagged link looks like this:

https://itforce.ua/en/ppc-services/?utm_source=facebook&utm_medium=cpc&utm_campaign=ppc_autumn_2026

Broken into pieces:

Part of the URL What it is
https://itforce.ua/en/ppc-services/ The page the link points to. The tag does not change it
? The question mark separates the page address from the parameters. It appears once
utm_source=facebook The first parameter: name, equals sign, value
& The ampersand joins parameters together. It goes before every subsequent one
utm_medium=cpc The second parameter
utm_campaign=ppc_autumn_2026 The third parameter

The first thing to understand: the tag changes nothing on the page. The visitor sees exactly the same content as at the clean address. The only difference is that the analytics script reads those parameters when the page loads and records them against the session.

The second: UTM tagging is manual. Nobody will add the tags for you. If a link in your newsletter isn’t tagged, that traffic lands in the report as direct or as a referral from a mail domain — and no amount of analytics will fix it after the fact.

How a UTM tag works technically

The mechanics are simpler than they look, and worth understanding — every limitation and every mistake follows from them.

Parameters after the question mark are called GET parameters or the query string. They are a standard part of a URL that the browser passes to the server along with the page request. The server ignores most of them and returns the same page. The analytics JavaScript running in the browser, however, reads the current address, finds the parameters that start with utm_ and attaches their values to the data it sends.

In GA4 those values are attached to the session_start event — that is, they are captured at the beginning of the session, and every event for the rest of that session is attributed to the same source. Google puts it plainly: the session_start event carries the information that determines the attribution of the session — the gclid, the UTM parameters and the referrer.

Three practical consequences follow:

  • The tag fires once, on entry. If the visitor then browses your site through ordinary links, the source doesn’t change. That is correct behaviour.
  • The data lives in the session, not in the link. Copy a tagged link and send it to a friend, and you send them your tag too. They’ll be counted in that campaign despite never having seen the ad. At scale this is noise you cannot filter out.
  • No analytics script, no tag. An ad blocker, a declined cookie consent, an interrupted page load — and the visit either misses the report entirely or arrives without a source.

A note on sessions in GA4. In Universal Analytics, a change of source mid-visit forced a new session to start. GA4 removed that behaviour: a session ends after 30 minutes of inactivity, not when the campaign changes. Attribution, however, is still written at the moment the session starts — which is exactly why tags on internal site links are dangerous (see the mistakes section below).

The five core parameters

The classic set has five parameters. The first three form the skeleton of your reporting; the last two add detail.

Parameter What it means Example values Status
utm_source The specific platform or sender of the traffic google, facebook, instagram, mailchimp, telegram, partner_name Required
utm_medium The type of traffic — the channel in the broad sense cpc, email, social, banner, referral, affiliate Required
utm_campaign The name of a specific campaign or activity black_friday_2026, launch_seo_landing Strongly recommended
utm_term Keyword. Historically for paid search ppc_agency, seo_audit Optional
utm_content Distinguishes creatives or elements within one campaign banner_300x250, text_link_footer, variant_a Optional

The most common confusion is between source and medium. A simple rule: source answers "who exactly", medium answers "by what means". Facebook is a source. But Facebook traffic can be paid (medium=cpc) or organic from a page post (medium=social), and those are two different channels with different economics. Merge them and the report becomes useless precisely when you need it.

The second most common confusion is utm_campaign versus utm_content. A campaign is a marketing activity with its own goal and budget: a sale, a product launch, a webinar. Content covers the variants inside it: two banners, three email subject lines, the link in the header versus the one in the footer of the same email. Turn every banner into its own campaign and you lose the ability to see the activity as a whole.

In 2026, utm_term is a leftover for most channels. Google Ads pulls the keyword in automatically through auto-tagging, and social platforms have no keywords at all. The one sensible remaining use is to put an audience segment or targeting criterion there in display and paid social campaigns when the other fields aren’t enough.

Four additional parameters GA4 supports

Beyond the classic five, Google Analytics 4 accepts four more parameters. They are little known, but two of them are genuinely useful.

Parameter Purpose Visible in GA4 reports?
utm_id Campaign ID. The technical key that joins cost data imported from ad platforms to GA4 data Yes — the "Campaign ID" dimension
utm_source_platform The platform managing the placement: google_ads, meta_ads, manual Yes — the "Source platform" dimension
utm_creative_format Creative type: display, native, video, search No — accepted, but not currently reported
utm_marketing_tactic Targeting criterion: remarketing, prospecting No — accepted, but not currently reported

The practical takeaway: add utm_id if you plan to import ad spend into GA4 — without a shared key you cannot join costs to conversions correctly. utm_source_platform earns its place in large accounts where one source is served by several platforms. The last two exist in the specification only for now: you can populate them for the future, but there is no point building reporting on them today.

Anything outside this list — utm_channel, utm_placement, utm_audience and so on — GA4 does not understand. Such parameters won’t break the page, but they won’t reach your reports either; at best you’ll find them in the "Page path + query string" dimension. To pass non-standard data, use your own event parameters via Google Tag Manager rather than UTM.

How UTM data reaches your GA4 reports

The tag is in place and the click has happened. From there the values are split across several groups of dimensions, and the confusion between them causes most of the "why don’t these numbers match" questions.

Session-scoped dimensions — Session source, Session medium, Session campaign. They show where a user came from on that particular visit. This is what people usually mean when they talk about UTM. Report: Reports → Acquisition → Traffic acquisition.

User-scoped dimensions — First user source, First user medium. They show where a person came from the very first time. Report: Reports → Acquisition → User acquisition. If a customer first found you in search and bought after clicking a newsletter, the first report shows the newsletter and the second shows organic. Both are correct; they answer different questions.

Manual tagging dimensions — Session manual source, Session manual medium, Manual campaign ID. This separate group reports the values from your UTM parameters specifically, ignoring ad platform auto-tagging. It was added to GA4 later and is a lifesaver in one situation: when a link carries both a gclid and UTM parameters, the ordinary "Session source" dimension shows the Google Ads data while the manual dimension shows what you wrote in the tag.

The quick way to confirm a tag works:

  1. Open the tagged link in an incognito window.
  2. In GA4 go to Reports → Realtime.
  3. Find the sources card and switch the dimension to Session source or Session campaign.
  4. Your value should appear within a minute.

In standard reports the same data appears with a delay of up to 24–48 hours — don’t conclude "the tag doesn’t work" half an hour after launch. If you need the full parameter set in a convenient view, build a dedicated report: Explore → Free form, with Session source / medium, Session campaign, Session manual ad content and Session manual term as rows, and sessions, key events and revenue as values.

GA4 channels: why utm_medium matters more than utm_source

This is the most underrated part of the whole topic. GA4 doesn’t merely store your values — it uses them to assign traffic automatically to one of the default channels: Paid Search, Paid Social, Organic Social, Email, Display, Affiliates, Referral and so on. It does so by strict rules, and the leading role belongs to utm_medium.

GA4 channel Condition (simplified) What to put in utm_medium
Paid Search Source is a known search site and medium matches ^(.*cp.*|ppc|retargeting|paid.*)$ cpc, ppc, paid
Paid Social Source is a known social site and the same medium pattern cpc, paid_social
Organic Social Source is a known social site or medium is in the social list social, social-media, social-network, sm
Email Source or medium equals email / e-mail / e_mail email
Display Medium is one of a fixed list display, banner, cpm, interstitial, expandable
Affiliates Medium equals affiliate affiliate
Referral Medium is referral, app or link referral
Paid Other Medium matches the paid pattern but the source isn’t recognised

Look closely at the regular expression for paid channels: .*cp.* means any value containing the letter pair "cp" counts as paid. So cpc, cpm, cpv and social-cpc all land in paid channels. A capitalised CPC, however, does not — GA4 is case-sensitive.

Three conclusions worth pinning above your desk:

  • Don’t invent your own medium values. utm_medium=facebook_ads will not land in Paid Social — it contains neither "cp", nor "paid", nor "ppc". The traffic settles in Unassigned or Other and you’ll only find it if you go digging.
  • Don’t put the platform name in medium. That’s what utm_source is for. Medium is a traffic type drawn from a very short list of acceptable words.
  • One medium, one spelling, company-wide. If one specialist writes email and another writes e-mail, the channel groups them together but the Source / medium report shows two separate rows.

How to build a UTM tag, step by step

Building a tag by hand takes four steps, and each one has room for error.

  1. Start with the clean page address. The exact page the visitor should land on, in its final form: https, the correct trailing slash, no leftover parameters. If the address already has parameters (say ?filter=new), you don’t add a second question mark — the first UTM parameter joins with an &.
  2. Add ? and the first parameter. The order of parameters doesn’t matter technically, but the conventional sequence source → medium → campaign → content → term keeps links readable for the team.
  3. Join the rest with ampersands. No spaces around the equals sign or the ampersand.
  4. Test the link by clicking it. The same page should open, and your source should appear in GA4 Realtime.

A note on anchors. If the link points to a specific block on the page, the UTM parameters go before the #, never after it. Correct: /page/?utm_source=telegram&utm_medium=social#form. Put the tag after the anchor and the browser won’t pass it as a parameter, so analytics never sees it.

Doing all this by hand is slow and error-prone, which is why in practice almost everyone uses a builder: assemble your link in our UTM builder — it applies the correct medium value for the channel you pick, forces lower case, replaces spaces and hands you the finished URL.

Naming conventions: the system matters more than any single tag

The value of UTM lies not in each individual tag but in the fact that every tag in the company follows one rule. Data collected under different rules has to be reconciled by hand in a spreadsheet, and the point of automation disappears.

Rule Bad Good
Lower case only utm_source=Facebook utm_source=facebook
No spaces utm_campaign=black friday utm_campaign=black_friday
Latin characters only utm_campaign=чорна_пʼятниця utm_campaign=black_friday
One separator company-wide black_friday and black-friday in parallel Either _ or -, never both
Medium from the GA4 list utm_medium=facebook utm_medium=cpc
No reserved characters utm_campaign=50% off utm_campaign=sale_50
A stable date format 2026_september, 09.2026, sept26 Always 2026_09
Meaningful campaign structure utm_campaign=test1 utm_campaign=2026_09_seo_leadgen

Why case matters so much: GA4 treats Facebook and facebook as two different sources. In the report they appear as two rows, each holding half your sessions and conversions, and neither shows the real picture. The same applies to non-Latin characters: the browser percent-encodes them into strings like %D1%87%D0%BE%D1%80%D0%BD%D0%B0, and that is exactly what you’ll see in the report.

One practical habit that saves months: keep a shared document with a dictionary of allowed values. One sheet for permitted utm_source values, one for a fixed list of utm_medium values, one for the campaign naming template with examples. Any new value gets added to the dictionary rather than invented on the fly. Once more than two people are involved, this is the only way to keep reporting intact.

A campaign naming template that sorts and reads well:

utm_campaign=[year]_[month]_[area]_[goal]2026_09_ppc_leadgen

Ready-made tag templates by channel

The table below is a working set to start from. Substitute your own utm_source and utm_campaign values; leave utm_medium as it is so GA4 assigns the traffic to the right channel.

Channel utm_source utm_medium What to put in content / term
Google Ads (search) google cpc Usually not needed — auto-tagging handles it
Facebook / Instagram Ads facebook / instagram cpc content — ad name; term — audience
Organic social post facebook, instagram, linkedin social content — link placement (bio, post, stories)
Telegram channel telegram social content — channel name or post date
Email newsletter ESP name or newsletter email content — link position (header, cta, footer)
Triggered email crm email campaign — scenario name (abandoned_cart)
YouTube (video description) youtube social content — video ID
Display banner Publisher domain display or banner content — creative size and version
Partner / referral Partner name referral content — placement
Affiliate programme Network name affiliate content — affiliate ID
Web push webpush push campaign — scenario
QR code on offline material Medium: flyer, package, billboard offline or qr content — placement point or city
Employee email signature email_signature referral content — department
Influencer Creator handle influencer campaign — collaboration name

One caveat about utm_medium=push, offline, qr and influencer: those values aren’t in GA4’s lists, so the traffic lands in Unassigned. That is neither an error nor a loss of data — the source and medium are still visible in the Source / medium report. If those channels matter to you, create a custom channel group in GA4: Admin → Data settings → Channel groups.

Google Ads: auto-tagging versus UTM

This question comes up in every other account, and the answer is not "use both".

Google Ads has its own mechanism — auto-tagging. When it’s on, every ad link gets a gclid parameter, a unique click identifier. Through it GA4 receives far more from Google Ads than five UTM parameters could ever carry: campaign, ad group, keyword, match type, device, network, and actual click costs.

The critical detail: in GA4, auto-tagging takes priority over manual tagging. If a link carries both a gclid and UTM parameters, the ordinary source dimensions show the Google Ads data, not your tags. Universal Analytics had a checkbox that let manual tagging override auto-tagging; GA4 has no such option. Your UTM values aren’t lost entirely — they remain available in the manual tagging dimensions — but the main reporting isn’t built on them.

Situation What to do
Google Ads + GA4, accounts linked Turn auto-tagging on and don’t add UTM
You need to pass data to a CRM or third-party system that doesn’t understand gclid Keep auto-tagging on and add UTM through the tracking template — they won’t spoil GA4 reporting, since it prefers the gclid anyway
Analytics is not Google (Matomo, Piwik PRO, in-house) UTM tagging is mandatory — that system cannot read a gclid
The site strips unknown parameters or redirects and drops the query string Fix the site first: without that neither gclid nor UTM will work

If you do need UTM for Google Ads, don’t type them into each ad’s final URL. Use Settings → Tracking → Tracking template, or the final URL suffix at account or campaign level, and populate them with ValueTrack parameters — {campaignid}, {adgroupid}, {keyword}, {network}, {device} — which Google fills in on every click. For example: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}.

The general recommendation for most projects is simple: with Google Ads and GA4, rely on auto-tagging and save UTM for the channels that have no click identifier of their own. How we run the channel itself is covered on our PPC services page.

Meta Ads: dynamic parameters

Facebook and Instagram have their own click identifier too — fbclid — but GA4 does not decode it. For Meta traffic, UTM tags are therefore not optional: without them some clicks land as facebook / referral and the rest as direct traffic.

You don’t have to write tags by hand for every ad. In the "URL parameters" field at ad level, Meta supports dynamic variables that are filled in automatically:

Variable What it inserts
{{campaign.name}} Campaign name
{{campaign.id}} Campaign ID
{{adset.name}} Ad set name
{{adset.id}} Ad set ID
{{ad.name}} Ad name
{{ad.id}} Ad ID
{{site_source_name}} Placement platform: Facebook, Instagram, Audience Network, Messenger
{{placement}} Placement: feed, stories, Marketplace and so on

A working string for the "URL parameters" field looks like this:

utm_source={{site_source_name}}&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}

Two limitations to know in advance. First, the name-based variables are locked in at publication. Rename a campaign in Ads Manager after launch and the tags keep the old name — the only way to update it is to create and publish a new ad. Second, if your campaign names contain spaces, non-Latin characters, emoji or symbols such as "|", all of that arrives in the report encoded. Naming discipline in the ad account is therefore part of UTM discipline: name campaigns in Latin characters with underscores and your tags come out clean automatically.

The same principles apply on LinkedIn, TikTok, X and Pinterest — each platform has its own set of dynamic variables, while utm_medium stays cpc.

Email, messengers and offline

Email. This is the channel where UTM tags are indispensable: without them, clicks from emails scatter across your reports — some as direct traffic, some as referrals from the mail client’s domain. Most email platforms (Mailchimp, SendPulse, Klaviyo, eSputnik) can tag every link in a message automatically — switch that on once and check exactly which values it inserts. Always give different links inside the same email different utm_content values: that is the only way to see whether the top button, the mid-email image or the footer text link is doing the work.

Messengers. Telegram, Viber and WhatsApp have a quirk of their own: many links open in the app’s built-in browser, and some clients strip the referrer entirely. A tag is the only reliable way to identify the source. Tag not just links in posts but also links in the channel description, in the pinned message and in bot buttons — these are different entry points with different value.

Offline and QR codes. UTM works well for print: business cards, flyers, packaging, signage, out-of-home. Encode the tagged address directly in the QR code and you can see how many visits a specific placement produced. Two tips. First, use a short redirect (for example site.com/qr1 redirecting to the long tagged address) — a QR code built from a long URL is dense and scans poorly. Second, check that the redirect preserves parameters: plenty of plugins and link shorteners drop the query string and the tag never arrives.

What never to tag. Links inside your own site — covered separately below. And links you place on other sites for SEO purposes: a tag there serves no purpose and only creates extra URL variants.

Where to see your UTM data

"Where do I see it" really splits into two questions: seeing the tag in a particular link, and seeing the collected data in reports.

In the link itself. The simplest way is to copy the address from the address bar after clicking and read everything after the question mark. If the link is shortened through bit.ly or similar, append + to it (for bit.ly) or open it in incognito and see what it expands to.

GA4, Traffic acquisition report. The baseline: Reports → Acquisition → Traffic acquisition, then switch the first column’s dimension to Session source / medium or Session campaign. The table search box filters quickly to the campaign you need.

GA4, free-form exploration. For the full picture: Explore → Free form. Add Session source, Session medium, Session campaign and Session manual ad content as rows, and sessions, engaged users, key events and revenue as columns. Save it once and reopen it every month.

Realtime. Reports → Realtime — for checking a tag you’ve just created; it shows up within a minute.

Looker Studio. If the data has to be shown to a team or a client, connect GA4 as a data source and the UTM dimensions become dashboard fields. This is the most convenient format for a weekly review.

Google Search Console will never show UTM data — and that’s normal. GSC reports organic search, where manual tagging doesn’t exist by definition.

If you are setting analytics up from scratch, get the GA4 basics right first: without properly configured key events, even perfectly tagged links will only show you sessions, not results.

UTM and CRM: carrying the tag through to the sale

On its own, a UTM tag ends where the session ends. It shows sessions, enquiries and on-site conversions — but not whether an enquiry became a sale. And that is the question the business actually cares about: not "which channel produced more forms" but "which channel produced revenue".

The stitching mechanism is simple and only has to be built once.

  1. Read the parameters from the URL on entry. A script (usually via Google Tag Manager) captures utm_source, utm_medium, utm_campaign, utm_content and utm_term, plus gclid and fbclid.
  2. Store them in cookies. Two sets at once: first touch (written once and never overwritten) and last touch (updated every visit). You need both — the first shows how the customer discovered you, the last shows what triggered the enquiry.
  3. Push them into hidden form fields. Every form on the site gets hidden fields populated from the cookies at the moment of submission.
  4. Pass them to the CRM with the lead. From there the tag lives on the deal record and travels with it all the way to payment.

Only then does the report that matters become possible: revenue and margin by channel, rather than a count of enquiries. Real customer acquisition cost and payback are calculated from exactly this data.

Two common traps. The first is phone calls: if a customer rings instead of filling in a form, the tag is lost — call tracking with dynamic number insertion closes that gap. The second is a long sales cycle: if three months pass between the first visit and the purchase, the first-touch cookie may not survive (in Safari, ITP limits client-side cookie lifetime to seven days). For those businesses the tag is stored not only in a cookie but also against the user profile server-side.

Twelve mistakes that make the data unusable

  1. Tags on internal site links. The most expensive mistake on the list. Formally, a campaign change doesn’t break a GA4 session — but attribution is captured at session start, so if the visitor returns after a pause or the session has expired, the new session takes its source from your own internal link. Your reports fill with traffic "from yourself", crowding out the real sources. Track internal clicks with GTM events, not UTM.
  2. Inconsistent capitalisation. Facebook, FaceBook and facebook become three rows instead of one.
  3. Spaces and non-Latin characters. They turn into %20 and percent-encoded strings, and the report becomes unreadable.
  4. Arbitrary utm_medium values. The traffic misses its GA4 channel group and settles in Unassigned.
  5. Swapping source and medium. utm_source=cpc&utm_medium=google is a classic that leaves you reading channel reports backwards.
  6. The tag after the anchor. #form?utm_source=... — the parameters are never passed.
  7. Tagging Google Ads unnecessarily. Not a mistake as such, but in GA4 those tags lose to auto-tagging anyway, so the effort is wasted.
  8. Redirects that strip parameters. The link points to https:// or to an address without the trailing slash, the site redirects and drops the query string on the way. One test click reveals it.
  9. Shorteners that lose the tag. Some shortening services don’t carry parameters through on expansion. Always test before a print run.
  10. A tagged link people share. A tagged URL in the site header or a "share" button spreads through chats carrying your campaign with it.
  11. Tags with no value dictionary. Six months later nobody remembers what utm_campaign=test_new_2 meant, and that data goes unused.
  12. No verification after launch. The tag is built, the link is sent, and nothing appears in GA4. One Realtime check saves a month of lost data.

UTM and SEO: do tags hurt rankings?

Short answer: with a correctly configured site, no. But the mechanism is worth understanding.

To a search engine, /page/ and /page/?utm_source=facebook are two different addresses with identical content. If the engine indexed them separately you’d have a duplicate. In practice that doesn’t happen, for two reasons: first, the page carries a rel="canonical" attribute pointing at the clean address; second, Google has long been able to recognise tracking parameters and collapse such URLs itself.

What to check so the problem never arises:

  • Canonical on every page points to the parameter-free address. Basic site hygiene, UTM or not.
  • Tagged links don’t sit on indexable pages. A tag on a link inside your own article isn’t just an analytics problem — it’s an extra URL a crawler may fetch.
  • Tagged links never appear in sitemap.xml. Never.
  • Tags aren’t used on external links placed for link equity. Technically the equity still passes thanks to the canonical, but there’s no reason to create the extra entity.

One side effect people usually notice too late: tagged addresses clutter page reports. GA4’s Page path dimension strips parameters, but some systems and raw exports keep them, and a single page fragments into dozens of rows. If that gets in the way, exclude the parameters with a filter in the report settings.

What UTM tags cannot do

Knowing the limits of a tool matters as much as knowing how to use it. UTM is not an attribution system — it is simply a way to label a link.

  • They need a click. An ad that was seen but not clicked, a brand mention on a podcast, a recommendation from a friend — UTM cannot capture any of it.
  • They don’t stitch devices. Seen on a phone, bought on a laptop: two different users unless the person signs in.
  • They don’t survive manual navigation. Some people don’t click; they type your brand into search or straight into the address bar. That traffic arrives as direct even though your campaign caused it.
  • They get lost in some apps. Certain mail clients and in-app browsers rewrite or truncate links. It shows up as an unexpected spike in direct traffic on send days.
  • They depend on cookie consent. If the visitor declines and the site runs Consent Mode, session data will be modelled or missing.
  • They aren’t tamper-proof. Anyone can append a tag. On open projects this is occasionally used to inflate one channel’s numbers.
  • They don’t show the full multi-touch path. A tag tells you where this session came from. How many touches preceded it and which one actually mattered is a question for GA4’s attribution model, not for UTM.

The practical conclusion: UTM is the mandatory baseline that answers "where did this visit come from". The question of what actually drove the sale is answered by other tools — closed-loop analytics, server-side tracking, attribution models.

Alternatives and complements to UTM

Tool What it does When you need it
gclid (Google Ads) Click identifier that passes full account structure and cost data into GA4 Always, when you run Google Ads with GA4
fbclid (Meta) Click identifier for Meta’s own attribution GA4 doesn’t read it — you still need UTM
msclkid, ttclid, li_fat_id Equivalents for Microsoft Ads, TikTok and LinkedIn Work inside those platforms’ own reporting
Call tracking Swaps the phone number and ties calls to a source Businesses where most enquiries arrive by phone
Server-side GTM Moves data collection to the server, less exposed to blockers High traffic volumes, low tolerance for data loss
Measurement Protocol Sends events to GA4 from the backend, including offline sales Joining CRM data to on-site behaviour
Closed-loop analytics Brings ad spend, leads and deals into one report When you need cost per customer, not cost per lead

UTM competes with none of these — it underpins most of them. Even in closed-loop analytics, the UTM values are usually the field that links a CRM deal back to an advertising campaign.

Pre-launch checklist

Item What to check
Value dictionary A shared document with approved source and medium values exists and the team knows about it
Case and characters All values lower case, Latin characters, no spaces
Medium from the GA4 list The value lands in the right channel group, not in Unassigned
Campaign name follows the template The year_month_area_goal format is respected
Content distinguishes creatives Different banners / buttons / email positions carry different values
Google Ads Auto-tagging on, accounts linked to GA4
Meta Ads Dynamic parameters set in the URL parameters field, campaign names in Latin characters
The link opens It reaches the intended page and no redirect eats the parameters
The tag is visible in GA4 Verified in Realtime before the send or campaign goes live
Internal links are clean No UTM-tagged links anywhere on your own site
Canonical is correct It points to the parameter-free address
CRM handover Hidden form fields populate and the values reach the deal record
QR codes and shorteners Confirmed that parameters survive expansion
The report exists in advance A saved exploration or Looker Studio dashboard is built before launch

Running through this list is faster than working out a month later why the campaign is missing from the report. The links themselves are quickest to assemble in the UTM builder — it handles the first four items automatically.

Frequently asked questions

Does a UTM tag affect page speed or how the site works?
No. It’s a parameter in the address; it adds no requests and changes no content.

How many parameters can one link hold?
Technically the limit is maximum URL length (around 2,000 characters is considered safe). Practically you rarely need more than five or six: the longer the address, the higher the chance some service truncates it.

Can I strip UTM parameters from the address after the click?
Yes, with a script that cleans the address bar via history.replaceState. Only do it after the analytics script has fired, otherwise the data is lost. For most sites it isn’t worth the effort.

Do I need UTM if I only run Google Ads?
No — auto-tagging plus a GA4 account link is enough. You’ll need UTM as soon as a second channel appears.

What if the tag never shows up in the report?
Check in order: did the GA4 script fire on the page, did a redirect strip the parameters, is the tag placed after an anchor, has less than a day passed (standard reports aren’t instant), and is Google Ads auto-tagging overriding it.

Can I use UTM to track internal banners on my own site?
No. Use Google Tag Manager events for that. UTM on internal links breaks source attribution.

Do systems other than Google Analytics understand UTM?
Yes. The format is an industry standard, read by Matomo, Piwik PRO, Adobe Analytics, most CRMs and email marketing platforms. The parameter set is the same everywhere; only the way each system builds channel groups differs.

In short

A UTM tag is a set of parameters at the end of a link that tells your analytics where the visit came from. utm_source and utm_medium are required; together with utm_campaign they form the skeleton of all channel reporting. utm_content and utm_term add detail, and utm_id exists for cost data import.

Three things decide whether the data is usable. First, utm_medium is taken from the list of values GA4 knows how to map to channels rather than invented. Second, every tag in the company follows one rule and a shared value dictionary. Third, internal site links are never tagged.

For Google Ads paired with GA4 you don’t need UTM at all — auto-tagging handles it and takes priority. For Meta, email, messengers, partner placements and offline, tags are mandatory; without them that traffic dissolves into direct and referral.

Links are quickest to build in the UTM builder, and to carry the data past the sessions report and through to revenue you’ll need properly configured analytics plus a handover of tags into the CRM. If you’d like help with that, see how we work on PPC and SEO, or browse our case studies.

Get More Value

You will get the best content from us to help your business grow.
Your request has been sent.

    Subscribe

    Advance with us — apply now

    Get a free consultation and business promotion assessment
    Your request has been sent.

      Send