The Social Desk
UTM governance pack: one naming convention and the formulas that enforce it
A naming convention for paid-social UTMs plus a few Google Sheets validation formulas that flag a broken tag before it ships, so your reporting stops splitting one campaign across nine spellings.
Template · Starter · Filed 18 July 2026
The problem is never a single bad UTM. It is Facebook, facebook, FB and Meta all pointing at the same channel, so the channel report shows four rows where there should be one, and nobody trusts the total. UTMs do not need a platform to govern them. They need a small fixed vocabulary, one rule about who is allowed to add a word to it, and a sheet that refuses to accept a tag that breaks the rules.
This pack is that convention plus the validation formulas that enforce it. It is a house style for the five UTM parameters, written to be pasted into your tracking sheet and argued with once, not per campaign.
Before you start
- Pick where the register lives: one tab in your tracking sheet listing the ALLOWED values for
sourceandmedium. That tab is the single source of truth; if a value is not on it, it is not a valid value. - Decide who mints new values. New sources and mediums are added by ONE named owner, deliberately, on the register. Everyone else picks from the list. This is the whole game: an open vocabulary is not a vocabulary.
- Nothing here changes a live ad. You are governing the strings you build BEFORE they go into an ad's URL.
The convention
The rules, and the validation formulas, in one block to paste into a note tab:
UTM CONVENTION (paid social)
Global rules
- lowercase only
- hyphens, never spaces or underscores
- no capital letters, no accents, no punctuation beyond hyphens
utm_source = the platform. Fixed list, register-controlled:
facebook | instagram | tiktok | linkedin | pinterest | reddit
utm_medium = the buying type. Fixed list, register-controlled:
paid-social | paid-video | paid-influencer
utm_campaign = {market}-{objective}-{theme}-{yyyymm}
e.g. uk-prospecting-spring-sale-202607
utm_content = {format}-{variant} e.g. video-hook-a
utm_term = optional, audience or placement, same casing rules
New source/medium values are added ONLY by the register owner,
on the register tab, before first use.
--- Sheet validation (put the tag parts in columns; adjust ranges) ---
Lowercase + hyphen safe (no spaces, caps or underscores). A2 = the value:
=REGEXMATCH(A2, "^[a-z0-9]+(-[a-z0-9]+)*$")
Source is on the approved list (Register!$A$2:$A gives the allowed sources):
=ISNUMBER(MATCH(B2, Register!$A$2:$A, 0))
Campaign matches {market}-{objective}-{theme}-{yyyymm}:
=REGEXMATCH(C2, "^[a-z]{2}-[a-z-]+-[a-z0-9-]+-\d{6}$")
Set it up
- Add a Register tab with two columns, Sources and Mediums, and type in the approved values above (edit them to your channels).
- In your tag-building tab, put each UTM part in its own column: source, medium, campaign, content.
- Paste the three formulas into checker columns beside them, pointing the ranges at your real cells and the Register tab. Each returns TRUE for a valid value and FALSE for a broken one.
- Wrap the checkers in conditional formatting: any FALSE turns the cell red. A red row does not ship.
- Assemble the final
?utm_source=...&utm_medium=...string with a join formula only from rows where every checker is TRUE.
How to read it, and where it stops
The formulas catch the mechanical failures: a stray capital, a space, a source nobody approved, a campaign name that skipped the date. That is most of the real-world damage, because most UTM chaos is spelling, not strategy. What they cannot check is meaning: REGEXMATCH will happily pass uk-prospecting-spring-sale-202607 on an ad that is actually retargeting, because the string is well-formed and the intent is not something a regex can see. So the register owner still matters more than the sheet; the validation stops typos, the human stops nonsense. Treat a green row as "correctly formatted", never as "correctly tagged". And keep the register short: every value you add is a value someone else now has to spell exactly, so a vocabulary of six sources you enforce beats a vocabulary of forty you do not.
- UTM Tracking
- Governance
- Paid Social