LiftMarketing measurement

Collection


UTM Parameters and the Taxonomy Nobody Maintains

Channel reporting is only as good as the tagging, and tagging decays without enforcement. The conventions that hold, and the mistakes that destroy attribution.

Channel reporting rests entirely on campaign tagging. If the tags are inconsistent, every channel comparison in every report is wrong, and the wrongness is invisible because the reports still render. The same naming discipline matters when time tracking software exports projects, clients and activity categories into reports.

Tagging decays by default. Three agencies, two internal teams and eighteen months are enough to produce a source list with four spellings of "email".

The mistakes that destroy data

In order of damage.

Tagging internal links

The worst one, and it is common.

A UTM parameter on a link within your own site starts a new session and reassigns the source. A customer who arrived from paid search, browsed, then clicked a tagged banner on your homepage is now recorded as arriving from that banner.

The original acquisition source is destroyed, and the internal promotion takes credit for conversions it did not acquire.

Never use UTM parameters on internal links. For internal promotion tracking, use a separate parameter your analytics is configured to ignore for attribution purposes, or use event tracking.

Inconsistent case

Email, email and EMAIL are three sources in most systems. So are Facebook and facebook.

Enforce lowercase everywhere, in the convention and in the validation.

Inconsistent naming

paid-social, paidsocial, social_paid, social-paid — four agencies, four conventions, four rows in the report where there should be one.

Auto-tagging and manual tagging colliding

Some platforms add their own tracking parameter automatically. Adding manual UTMs on top can override it, break the platform's own reporting, or produce a conflict resolved differently in different tools.

Decide which mechanism owns which platform, and do not layer them.

Missing tags entirely

Untagged links land in "direct" or "referral", which is why those buckets are usually inflated. Direct traffic is where untagged campaigns go to hide.

Tags on links in email that get rewritten

Some email platforms rewrite links for click tracking, which can strip or alter parameters. Test the actual delivered email rather than the draft.

A convention that holds

Keep it short, or it will not be followed.

utm_source — where the traffic came from. The platform or publisher. google, facebook, newsletter, partner-name.

utm_medium — the type of traffic. This is the field that drives channel grouping in most tools, so a small controlled vocabulary matters more here than anywhere else: cpc, email, social, display, affiliate, referral.

utm_campaign — the campaign. A structured pattern helps: 2026-q3-spring-sale. Date first sorts chronologically and makes stale campaigns obvious.

utm_content — the variant. Creative, placement, audience.

utm_term — keyword, largely superseded by auto-tagging in search.

Rules that make it work:

  • Lowercase, always
  • Hyphens, never spaces or underscores mixed
  • A closed list for medium, written down, with a named owner who approves additions
  • No personal data in any parameter, ever — these end up in logs, referrer headers and third-party tools

Enforcement, because a document is not enough

A builder tool. A simple form that constructs URLs from dropdowns rather than free text removes most errors at source. This is a day of work and it is the highest-return item here.

A validation step before launch. Check the tags against the convention before the campaign goes live, not after the data is wrong.

A monthly look at the source and medium lists, sorted by sessions, looking for values that should not exist. Anything unrecognised is either a mistake or an untagged campaign, and both are worth chasing.

A rule that untagged campaigns do not launch. Easier to enforce as a checklist item than to fix afterwards.

Cleaning up an existing mess

You will inherit one. The order matters.

1. Export the distinct source and medium values for the last twelve months, with sessions.

2. Map the variants to canonical values. Email, EMAIL and e-mail all map to email.

3. Apply the mapping in your reporting layer, not by rewriting history in the analytics tool — which is usually impossible anyway.

4. Fix the convention going forward, and communicate it to everyone who creates links, including agencies.

5. Mark the date on your charts. Channel numbers will shift when the mapping is applied, and without an annotation someone will read the shift as a performance change.

Do not attempt to make historical data perfectly consistent. Map the significant variants, note the discontinuity, and move on. Perfection here consumes weeks and returns little.

The related problem: channel grouping

Even with clean tags, most tools apply their own channel grouping rules on top, and those rules are frequently unexamined.

Check what your tool counts as "organic social" versus "paid social", and whether it matches what you mean.

Check where affiliate traffic lands. It is frequently classified as referral and then argued about.

Define your channel groups explicitly and document them with the metric definitions. See documenting metric definitions.

The summary

Never put UTM parameters on internal links. It destroys the acquisition source and credits the wrong thing.

Lowercase, hyphens, and a closed vocabulary for medium — three rules that prevent most of the mess.

Build a URL builder. A form with dropdowns removes errors at the point they are created, which is worth more than any amount of documentation.

Review the source list monthly, because an unrecognised value is either an error or an untagged campaign and both cost you. For the supported parameter model, see the Google Analytics campaign-parameter documentation.