Skip to main content
TagPipes Relay

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 afterwardsRefuse at creation
When you find outWeeks later, when somebody reads a report and sees the same campaign four timesImmediately, in the form, before the link exists
What you can do about itVery little. Traffic already recorded under the wrong value stays thereFix the value and save. Nothing has gone out yet
Who does the workWhoever owns reporting, repeatedly, foreverThe person building the link, once, in about five seconds
What the data looks likeClean going forward, permanently messy behind youConsistent from the first link
What it costs when it failsA quarter of reporting that cannot be compared to anythingAn 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

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 URL

Generating a URL is free and needs no account. You register only when you save one into Relay.