UTM tags

Every utm_source and utm_medium pair your landings carried, how Intelligence/Ads read each one, and the rules your site can set to correct that reading.

Updated October 26, 2026

UTM tags lists every utm_source and utm_medium pair a landing on your site carried in the period, with the sessions each pair brought, how Intelligence/Ads read the tag, and why. A click id always outranks a tag. Owners and admins can correct a reading with a rule, which applies to every period, past ones included.

The screen

UTM tags is the third entry of the rail's Sources group, right after Campaigns: a campaign's network is this reading, so a tag read wrong is a campaign filed under the wrong network, or under none. The header carries the period control (see Time periods) and a button to read again. The page is open on every plan; the plan's window bounds what the period can reach, and on Free the month's event allowance can stop the read early. There is no comparison with a previous period here.

Top to bottom: four figures, then the Tagged pairs table with the Built-in lists panel under it, beside a Setup column holding Your rules and, for owners and admins, a Next steps line.

The figures

FigureWhat it counts
Tagged pairsEvery distinct pair in the period.
Tagged sessionsThe sessions listed below, summed. A session counts once, on its landing.
Proven by a click idOf those sessions, the ones whose landing carried a click id.
Read from the tag aloneOf those sessions, the ones only the tag attributed.

A landing with neither a utm_source nor a utm_medium never counts here. The list stops at the 500 pairs with the most sessions; past that, the three session labels add "over the N pairs listed" and a line under the table says how many pairs the period held and that the rest carried fewer.

Tagged pairs

One row per pair, grouped by what the tag reads as. A find-in-list above the table matches the source and the medium only, ignoring case and accents, and narrows the rows on screen. At rest it states the list's size ("9 pairs"); while narrowing, "3 of 9 pairs shown". A query that matches nothing leaves one line saying so.

The blocks. Each block has a header with the network's mark (Not paid draws an empty dashed tile), its name, its pairs and its sessions in the period. The order is fixed:

  1. Other Paid first: a paid medium whose source names no network Intelligence/Ads knows.
  2. Then each named network, most sessions first.
  3. Not paid last: pairs whose medium is not a paid one, or that carry no medium.

A pair is filed by its tag, not by its click ids.

ColumnWhat it shows
SourceThe utm_source value exactly as received, in monospace, or a dash when the landing carried none. Google and google are two rows.
MediumThe utm_medium value, the same way.
SessionsLandings with this pair in the period.
Click idOf those, the ones a click id attributed. When the click id proved a network other than the block's, that network is named beside the count.
Tag aloneOf those, the ones only the tag attributed.
WhyA badge, Built-in or Your rule, saying who decided the reading, then one sentence saying what was decided.

A zero prints faint: an observation that did not happen, not a grade. On a phone each row becomes a card.

The Why sentence takes one of these forms, with the values in monospace:

  • "No utm_medium — a tag without one is never paid".
  • "social is not a paid medium".
  • "cpc is a paid medium · google is Google Ads".
  • "cpc is a paid medium", then a clause saying lnkd names no network Intelligence/Ads knows: the pair is Other Paid.
  • "cpc is a paid medium · no utm_source to name a network".

When every landing of the pair carried a click id, the sentence ends with "every landing carried a click id, which outranks it": the tag still reads as stated, it simply decided none of these sessions.

The footnote reads: "Values exactly as received; a rule matches any case. Sessions are landings in this window."

A period with no tagged landing says "No tagged landing in this period." and that a pair appears as soon as a landing arrives carrying a utm_source or a utm_medium. A read that failed says "The tags could not be read just now" and that nothing has changed.

The reading

Why a pair reads the way it does follows one fixed order, the same on every screen that files traffic by network. The Why column names the step that decided.

  1. A click id. If the landing carried one, its network is the reading, whatever the tag says. No rule changes this step.
  2. The medium. A site rule on the utm_medium value decides paid or not paid; without one, the built-in list of paid mediums does. A medium that is not paid ends the reading: the pair is Not paid and the source is not read.
  3. The source. A site rule on the utm_source value names the network; without one, the built-in source lists do; when no list names it, the pair is Other Paid.

Both rules compare the value lowercased, which is why one rule covers Google and google. A source rule only acts under a paid medium, and no rule can make a pair with no medium paid. A rule saved now applies to every period, past ones included.

Changing a reading

Owners and admins see a pencil at the end of each row that carries a medium; members see no pencil. A pair with no medium gets no pencil. See Members and roles.

The pencil opens one small form with the rules the pair can meet — the medium, and the source when the pair carries one:

  • Medium. A three-way choice: Built-in, Paid, Not paid. A hint says what the built-in list reads this medium as, and how far the rule reaches in the period on screen: "The built-in list reads social as not paid. Every pair tagged social follows — 2 pairs, 9 sessions in this window".
  • Source. A list: "Built-in · " followed by the network the lists give this source (Other Paid when none does), then the networks a rule may name: Google Ads, Meta, TikTok, Microsoft Ads, LinkedIn, X and Other Paid. The hint says the source is read only while the medium is paid, and how many pairs and sessions from this source follow.

A rule is on a value, not on a row: the rule lands on every pair carrying that value. The footer says so: "Shared with the workspace · re-reads past windows too." Save stays disabled until something changed. A save the page refuses prints its reason in the footer:

  • "This site already holds 100 rules — remove one first."
  • "Rules take plain ASCII values, and this one isn't."
  • "Only owners and admins change a reading."
  • "That didn't save. Try again."

Values are lowercased and not trimmed: " cpc" and "cpc" are two values.

Your rules

The Setup column holds a panel titled "Your rules", with "N of 100". The footer reads: read before the built-in lists, on this site only; owners and admins set them. One row per value a rule sits on, sorted by what it applies to, then by value.

ColumnWhat it shows
ValueThe value the rule sits on, lowercased, in monospace.
Applies toMedium or Source.
Reads asPaid or Not paid for a medium; the network with its mark for a source.
UpdatedThe day of the last change, as a UTC day stamp ("Oct 5"), or a dash.

Owners and admins see a remove control at the end of each row. Removing puts the value back on the built-in lists, with no confirmation; the table re-reads at once. If it did not go through: "That rule wasn’t removed. Try again."

With no rule, the panel says "No rules yet." and that every pair above is read with the built-in lists; an owner or admin also reads that a pair's pencil adds one, for every window, past ones included; a member reads that owners and admins can change a pair's reading. If the rules could not be read, the panel says "The rules could not be read just now" and that nothing has changed; the Built-in lists panel and the pencils are then absent, and the pairs still list.

When a pair reads as Other Paid, owners and admins get a Next steps line: "Name the network of N pairs", which jumps to the Other Paid block.

Built-in lists

The "Built-in lists" panel, "read after your rules", prints the lists the reading falls back to when no rule applies.

RowWhat it holds
Click idsPer network, the URL parameters whose presence proves it.
Paid mediumsThe utm_medium values read as paid.
SourcesPer network, the utm_source values that name it, read only under a paid medium.
Anything elseA paid medium whose source no list names reads as Other Paid.

The lists as they stand:

ListValues
Click ids → Google Adsgclid, gbraid, wbraid
Click ids → Metafbclid
Click ids → TikTokttclid
Click ids → Microsoft Adsmsclkid
Click ids → LinkedInli_fat_id
Click ids → ChatGPT Adsoppref
Paid mediumscpc, ppc, paid, paidsearch, paid_search, paidsocial, paid_social, sponsored, display, affiliate
Sources → Google Adsgoogle, adwords, googleads, google-ads
Sources → Metafacebook, meta, instagram, fb, ig
Sources → TikToktiktok
Sources → Microsoft Adsmicrosoft, bing, msn
Sources → LinkedInlinkedin
Sources → ChatGPT Adschatgpt, openai
Sources → Xtwitter, x

Tag your ad links covers what to put in the link.

A rule and the Campaigns screen

A campaign's row on Campaigns is a network and a utm_campaign. A source rule that moves a source to another network therefore files that source's campaigns under new rows; the old rows stop receiving clicks and read as dormant, and their name and star stay on them.

What this screen does not do

  • It is not a UTM builder. This page shows what was observed and how it was read, and lets the workspace correct the reading.
  • It never shows a session, a path or a visitor. A pair carries counts only. Every tagged pair shows, paid or not; untagged landings never appear.
  • It passes no verdict. chatgpt.com / — reads as Not paid and the row says so. Whether that is right is your call, and the pencil is how you make it.
  • No rule outranks a click id, and no rule makes a pair with no medium paid.
  • It does not sort on demand. The filter narrows the rows; the order is stated in each block.
  • It does not compare periods. Nothing here is gated by plan beyond the window: the pairs, the rules and the editor are open on every plan.

Questions

A pair reads as Google Ads, but its Why line says every landing carried a click id. Which decided?
The click id. A click id outranks the tag on every landing that carries one. The tag's own reading is still printed, because it is what a rule can change; the extra clause says it decided none of those sessions.
Why are Google / cpc and google / cpc two rows?
Values print exactly as received, and those are two different strings someone typed into a link. One rule covers both, because a rule matches any case.
Can a member change a reading?
No. Owners and admins see the pencil and the remove control; members see the same page without them. A rule changes how the whole workspace reads the site.
Does a rule change past periods?
Yes. A rule applies to every period, past ones included, on every screen that files traffic by network — Campaigns among them.
Why can I not set a rule on an accented value?
Rules take plain ASCII values, 1 to 200 characters. The form says so when a value does not qualify, and the pair keeps its built-in reading.