UTM Governance
Every team that has this problem already has a naming convention. It is written down. The problem is that nothing consults it at the moment a link is made.
Why the naming document does not work
The convention is not the issue. Most teams can produce one in an afternoon, and most of them are perfectly sensible: lowercase, hyphens, a closed list of mediums, a campaign name pattern with a year in it.
What fails is the distance between the document and the moment. A link gets built when something is about to go out, usually by whoever is closest to it, usually in a hurry. Opening a shared document, finding the right tab and checking whether paid-social or paid_social is the agreed spelling is four steps too many, and the honest response most of the time is to type what looks right and move on.
So the convention holds for the people who wrote it and decays for everyone else. Nobody is being careless; the process simply asks for a level of discipline that no process should depend on.
Governance that works looks different. It is not a longer document or a stricter reminder. It is a form that will not let you save the wrong thing.
Two ways to enforce a taxonomy
The difference is not how strict the rules are. It is when they are applied.
| Audit afterwards | Refuse at creation | |
|---|---|---|
| When you find out | Weeks later, when somebody reads a report and sees the same campaign four times | Immediately, in the form, before the link exists |
| What you can do about it | Very little. Traffic already recorded under the wrong value stays there | Fix the value and save. Nothing has gone out yet |
| Who does the work | Whoever owns reporting, repeatedly, forever | The person building the link, once, in about five seconds |
| What the data looks like | Clean going forward, permanently messy behind you | Consistent from the first link |
| What it costs when it fails | A quarter of reporting that cannot be compared to anything | An argument about whether a value should be allowed. Which is the argument you wanted to have |
Auditing is not useless: it is how you find out what your rules should be. It just cannot be the enforcement mechanism, because by the time it runs the damage is already recorded.
How Relay applies the rules
The same rule set runs in the browser as you type and again on the server when you save, so the form and the gate can never disagree.
1. A naming template decides the fields
The template lists which parameters a link has to carry and the order they appear in the final URL. Companies without one of their own start on a standard five-field UTM template, so the builder works from day one and governance starts when somebody actually agrees a rule.
2. A missing required field blocks the save
The refusal names the field and the template that asked for it, rather than a generic validation error. The link is not created at all, so there is no draft in a broken state to tidy up afterwards.
3. A duplicate blocks the save
If the destination and the parameter set already exist on another link, the save is refused and you are pointed at the link that already does the job. Duplicates warn on most platforms. Here they block, because a silent duplicate is exactly what splits a campaign's numbers.
4. Things worth knowing ride along
A destination on http rather than https, and similar findings that are not clearly mistakes, are shown and do not block. The distinction matters: refusing everything makes the tool argumentative, and hiding everything makes it useless.
5. The library shows what does not comply now
Links created before a rule existed are not silently grandfathered in. The library badges the rows that would fail today's rules, so you can decide what is worth revisiting.
6. The campaign value comes from the campaign
Building a link against a campaign fills the campaign parameter from the campaign record. Every link in that campaign carries the identical value because it came from the same place, not because everybody typed it carefully.
If you are writing the convention from scratch
A starting point that is easier to loosen later than to tighten.
Lowercase, hyphens, nothing else
No spaces, no underscores, no capitals. It is the single rule that prevents the most damage, and it is the easiest one to apply without thinking.
A closed list for medium
Five or six values, agreed once: email, cpc, social, referral, affiliate, display. Source can be open because there are genuinely many sources. Medium should not be, because channel grouping depends on it.
A year or a quarter in the campaign name
It makes last year's equivalent findable and stops two campaigns with the same name colliding across periods.
One person who approves new values
Not a committee and not everybody. A taxonomy with no owner grows a synonym a month.
Write down what source and medium mean
Medium is the category, source is the specific place inside it. Half of all taxonomy drift is people disagreeing about which is which, quietly.
Decide what you will not tag
Internal links, above all. A campaign parameter on a link between two of your own pages overwrites the record of how that visitor really arrived.
Frequently asked questions
More on managing campaign links
The rest of the Relay pages, and the free builder for when you only need one URL.
- UTM Campaign ManagerFrom building single URLs to managing a campaign's links in one place.
- Campaign Link ManagerFind, reuse and keep track of the links a campaign is already using.
- Agency UTM ManagementMany clients, many properties, one taxonomy per client.
- UTM BuilderBuild one tagged campaign URL. Free, no signup, nothing leaves your browser.
- Campaign URL BuilderThe same builder, with the naming decisions spelled out before you tag.
- GA4 UTM BuilderWhere each parameter lands in a GA4 report, and what GA4 does with it.
- Relay overviewEverything the Relay module does inside TagPipes.
A rule that is applied is worth ten that are documented.
Build a campaign URL in the free builder, then save it into Relay from the result. Your first campaign and link are created as you register, and the naming template applies from there on.
Start with a free campaign URLGenerating a URL is free and needs no account. You register only when you save one into Relay.