How to Build a UTM Dictionary Your Analytics Can Actually Group By

Juan Garcon
-
5 min read
-
August 25, 2026

Tagging conventions fail in a predictable way. Somebody documents them in a Notion page, everyone agrees, and within four months the analytics contains facebook, Facebook, fb, meta, and Meta_Ads as separate sources. The problem is not that people disagree with the convention. It is that the convention lives in a document nobody opens while building a link, and there is no point at which a wrong value gets caught. A UTM dictionary fixes this by making the approved vocabulary the thing you build links from, rather than a reference you are supposed to remember.

Tagging conventions fail in a predictable way. Somebody documents them in a Notion page, everyone agrees, and within four months the analytics contains facebook, Facebook, fb, meta, and Meta_Ads as separate sources. The problem is not that people disagree with the convention. It is that the convention lives in a document nobody opens while building a link, and there is no point at which a wrong value gets caught. A UTM dictionary fixes this by making the approved vocabulary the thing you build links from, rather than a reference you are supposed to remember.

What a UTM Dictionary Is

A UTM dictionary is a single controlled list of every valid value for each parameter, held somewhere shared, with a link builder attached to it and an owner responsible for changes.

It has four components.

The controlled vocabulary. Every permitted value for utm_source and utm_medium, with a definition of when each applies. This is the part that must be closed: new values get added by request, not invented at build time.

The campaign naming schema. A structured pattern for utm_campaign so that campaign values can be parsed rather than merely read. Something like market_objective_offer_period produces values like de_prospecting_springsale_2026q2, which analytics can split into components.

The link builder. A form or sheet where someone selects source and medium from dropdowns, fills in the campaign components, and receives a correctly formatted URL. Dropdowns are what make the vocabulary enforceable, because free text fields will always be filled with free text.

The governance rule. One named owner who approves additions to the vocabulary, and a monthly audit that compares actual values in analytics against the dictionary.

Designing the Vocabulary

Keep it small. A dictionary with forty medium values is a dictionary nobody can use correctly.

For most ecommerce brands, this covers everything:

ParameterValuesutm_sourcegoogle, meta, tiktok, pinterest, microsoft, snapchat, klaviyo, criteo, awin, plus one per named creator or partnerutm_mediumpaid_search, paid_social, paid_shopping, display, video, email, affiliate, influencer, referral, organic_social

Two rules make the vocabulary work.

Source is the platform, never the campaign type. utm_source=meta regardless of whether the campaign is prospecting, retargeting, or catalogue. The campaign parameter carries that information. Teams that encode campaign type in source end up with dozens of sources and no way to see total Meta performance.

Medium is the traffic type, never the platform. utm_medium=paid_social, not utm_medium=meta. Medium is what your channel grouping runs on, so it must be consistent across platforms for the grouping to work at all.

The Campaign Schema

The campaign parameter carries the most information and is where most dictionaries stop short. A structured schema turns it into a set of dimensions rather than a single label.

A pattern that works across most ecommerce structures:

{market}_{funnel}_{offer}_{period}

Producing values such as:

  • de_prospecting_evergreen_2026q1
  • at_retargeting_springsale_2026w14
  • ch_prospecting_newcollection_2026q2

Because the components are separated by a consistent delimiter and appear in a fixed order, analytics can split the string and you get market, funnel stage, offer, and period as separate groupable dimensions from one parameter. Without the schema, you have a text label that can only be filtered by exact match.

The delimiter choice matters. Use underscores between components and avoid using them inside components, or the split becomes ambiguous. If a component naturally contains a separator, use hyphens inside components and underscores between them.

Content and Term

utm_content should identify the creative or ad unit, and on platforms with dynamic parameters this populates automatically from the ad name. This is exactly why ad naming conventions inside the platform and the UTM dictionary are the same project: the dictionary is only as structured as the names it inherits.

utm_term is search only in its original meaning, and most teams repurpose it for ad set or ad group name. That is fine as long as the repurposing is documented, because someone will eventually try to analyse keywords from it.

Where the Dictionary Earns Its Keep

The people who benefit are not only the analysts. Four roles feel the difference immediately.

Media buyers stop guessing. When launching a campaign on a platform they use rarely, the builder gives them the correct source and medium without needing to remember what was agreed eight months ago.

Agencies and freelancers get an unambiguous specification. External partners are the largest single source of vocabulary drift, because they carry conventions from other clients. Handing them a link builder rather than a description eliminates most of it.

Analysts stop cleaning. The recurring work of mapping seven spellings of a source into one channel disappears, along with the risk that a mapping rule is forgotten when a report is rebuilt.

Leadership gets stable trends. A channel report where the definition of a channel has not silently changed is comparable month over month, which is the entire basis of noticing that something moved.

The situations where the absence hurts most:

  • Multi market brands. Without market in the campaign schema, cross market comparison requires manual tagging reconstruction.
  • Multiple agencies. Each brings its own conventions and none match.
  • High creator volume. Dozens of individual creator links built by different people is the fastest route to unusable data.
  • Platform launches. A new channel is where the first non standard value always appears.

Governance and Auditing

A dictionary without governance decays at roughly the same speed as no dictionary at all. Three practices keep it alive.

A single owner. One person approves new vocabulary values. Not a committee, and not nobody. Requests should be cheap to make and quick to resolve, so the path of least resistance is asking rather than inventing.

The monthly distinct value audit. Pull every distinct combination of source and medium from the last 30 days of analytics. Compare against the dictionary. Anything not in the dictionary is a tagging error that occurred this month, while the person who made it still remembers the context.

This audit takes about ten minutes and catches nearly everything: the uppercase value, the agency using its own convention, the creator who built their own link, the campaign launched with the medium field empty.

A change log. When a value is added, renamed, or retired, record it with a date. Six months later, when a trend looks broken, the change log tells you whether the channel changed or the definition did.

The decision factors when setting one up:

  • Where does it live? Somewhere every link builder can reach without asking permission. A shared sheet works; a document in a folder nobody has access to does not.
  • Is there a builder, or just a reference? References get ignored under time pressure. Builders get used because they are faster than typing.
  • Is the vocabulary genuinely closed? An open vocabulary is not a dictionary.
  • Who audits, and when? Unowned audits do not happen.
  • Does it cover non platform channels? Creators, podcasts, print, and QR codes need entries too, and they are where manual link building actually happens.

The last point is where most dictionaries are incomplete. Platform tagging can be configured once at account level and then runs itself. The channels that need a dictionary most are the ones where a human builds each link by hand, which is precisely the creator, partner, and offline set that dictionaries tend to omit.

Summary

A UTM dictionary is a closed vocabulary of source and medium values, a structured campaign naming schema, a link builder that enforces both, and a named owner who governs changes. Its purpose is to make the correct value the easiest one to use, because conventions that rely on memory decay within months regardless of how well documented they are.

Keep the vocabulary small, use source for the platform and medium for the traffic type, and design the campaign parameter as a delimited schema so that market, funnel stage, offer, and period become separate dimensions. Then run the monthly distinct value audit, which takes ten minutes and catches errors while they are still cheap to fix. The dictionary matters most for the channels where humans build links by hand, so make sure creators, partners, and offline sources are covered rather than only the ad platforms that configure themselves.

FAQ

How many medium values should a dictionary have?
Around eight to ten for most ecommerce brands. Fewer and you lose meaningful distinctions, more and people cannot choose correctly. If you find yourself needing a new medium frequently, the information probably belongs in the campaign parameter instead.

Should the campaign parameter use a delimiter schema?
Yes. A structured pattern such as market, funnel stage, offer, and period separated by underscores lets analytics split one parameter into four groupable dimensions. Unstructured campaign labels can only be filtered by exact match, which makes cross campaign analysis manual.

Who should own the dictionary?
One person, usually whoever owns marketing analytics or performance reporting. The role is to approve new values quickly and run the monthly audit. Committee ownership means nobody approves anything and people invent values instead.

What do I do about historical data that predates the dictionary?
Leave it and map it. Build channel grouping rules that consolidate the historical variants into the new vocabulary, document the cutover date, and note it on any chart that spans the boundary. Retroactively rewriting historical tags is rarely worth the effort.

How do I get an agency to follow it?
Give them the link builder rather than the documentation, and include the convention in the scope of work. Then run the monthly audit and raise non conforming values as they appear. Agencies drift because nobody checks, not usually because they disagree.

#
Gaining Tracking Data

Decisions start with trust

14-days for free