The Governance Doc: Building a UTM Naming Convention Your Whole Team Will Actually Follow
Objective: Build a complete UTM naming convention spreadsheet, approved source/medium values, campaign naming pattern, and auto-tagging setup notes, that a 5-person marketing team can follow without a single ad-hoc decision.
Lenskart is running its first coordinated multi-channel campaign across Google Ads, Meta, email, and influencer partners, and three different people will be building tracking links this quarter.
Produce the governance artifact: an approved-values table, a campaign naming pattern, and instructions for Google Ads auto-tagging so nobody hand-writes those links.
Before you start
What you'll need
Free path (everything below is enough to finish)
Free, shareable, and the whole team can comment on proposed values
Free, the destination that validates the auto-tagging setup actually worked
The process
3 steps
Step 01 of 03
Step 4 of the checklist says a shared spreadsheet of approved source and medium values, with new values requiring team approval, is what prevents drift like 'email' vs 'e-mail' vs 'Email'.
Three people are about to tag links for Google Ads, Meta, and an email send. What approved values do they need before anyone builds a single link?
Procedure
- List every channel the campaign will run on
- Assign one approved utm_source per channel
- Assign one approved utm_medium category per channel type
APPROVED VALUES Channel: Google Ads source=google medium=cpc Channel: Meta Ads source=facebook medium=paid-social Channel: Email source=mailchimp medium=email
Healthy
Every channel maps to exactly one source and one medium value, documented once.
Unhealthy
Three people each independently decide, and Meta ends up tagged as 'facebook', 'meta', and 'fb-ads' across three different links.
What this means
The table isn't documentation for its own sake, it's the thing that makes three people's tagging decisions produce one row per channel instead of three.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| The same channel appears under two different utm_source spellings in a report | Add the channel to the Approved Values tab and correct existing live links | 30 min |
Step 02 of 03
The lesson warns that reusing a campaign name across years breaks year-over-year comparison; always date or version it.
What utm_campaign value should this quarter's launch use so it's still distinguishable from next year's version of the same campaign?
Procedure
- Define a pattern: [initiative]-[period]-[year]
- Apply it to this campaign
- Note the pattern so future campaigns follow it without asking
CAMPAIGN NAMING PATTERN Pattern: [initiative]-[period]-[year] This campaign: multichannel-launch-q3-2026
Healthy
Campaign name bakes in the year, so 2027's version won't merge into this one in reports.
Unhealthy
utm_campaign=multichannel-launch, reused unchanged next year, silently combining two years of totally different creative into one row.
What this means
A campaign name without a date isn't wrong today, it becomes wrong the day someone reuses it.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| A campaign name has no year or version in it | Append the period before the link goes live, not after someone asks why two years of data are combined | 5 min |
Step 03 of 03
The lesson explains that Google Ads, LinkedIn, and Meta support dynamic tokens that auto-fill utm_content and utm_term at click time, so nobody hand-writes them per ad.
The Google Ads account has 40 ads across 6 campaigns. Should someone hand-tag all 40 final URLs?
Procedure
- Write the final-URL-suffix template using {campaignid} and {keyword} tokens
- Note it applies at the account level, once
- Confirm every new ad inherits it automatically going forward
GOOGLE ADS AUTO-TAGGING
Final URL suffix: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={keyword}
Set once at: Account level, Settings > Final URL suffixHealthy
One suffix, set once, and all 40 ads and every future ad inherit correct tagging automatically.
Unhealthy
Someone hand-tags all 40 final URLs individually, and 3 of them get the wrong utm_medium because it was typed by hand.
What this means
Dynamic tokens exist specifically so a person never has to hand-type the same tagging logic 40 times.
So what do I do about it?
| Symptom | Action | Effort |
|---|---|---|
| Ad ops is manually editing UTM values on individual Google Ads final URLs | Move the tagging logic to the account-level Final URL suffix field once | 30 min |
Final deliverable
A UTM governance doc: approved values table, campaign naming pattern, and Google Ads auto-tagging setup, ready for a 3-person team to follow.
See a reference example
Nykaa UTM governance doc (excerpt) APPROVED VALUES Channel: Influencer source=[handle] medium=affiliate CAMPAIGN NAMING PATTERN beauty-drop-oct-2026 GOOGLE ADS AUTO-TAGGING Final URL suffix set at account level
Success criteria
You're done when you can:
- Produces one approved source/medium pair per channel with no ambiguity
- Campaign naming pattern includes a period marker to prevent year-over-year collisions
- Documents Google Ads auto-tagging so no one hand-tags 40 individual ad URLs