UTM Tracker
Stop managing UTM links in a shared spreadsheet that nobody keeps consistent.
What changes when you build this
The gaps you're living with today,
and what this tool fixes.
Problems
- 3+ team members generate UTM links independently — source values like "linkedin" and "LinkedIn" split the same channel in GA4
- There is no single place to look up which UTM links were created for a campaign, so expired links keep circulating in old emails
- New hires and contractors create links without following the naming schema, corrupting months of attribution data
- Analysts spend 30+ minutes per report reconciling UTM variants before any real analysis can start
- Nobody knows which links from last quarter's campaign are still driving traffic
Solutions
- One link builder enforces source, medium, and campaign values from controlled dropdown lists — no freeform spelling variation
- A searchable link library shows every UTM link tied to each campaign, with creation date and owner
- New users generate links through the same form, so naming rules are impossible to bypass
- Reports start clean because the data was consistent at entry, not patched at query time
- Click counts and last-seen dates surface which old links are still active
What the data model looks like
Refine generates this table structure from your
prompt. Edit columns, types, and relationships after.
100%
Mistakes to avoid
These are the failure patterns teams hit most often
when building this.
Freeform UTM valuesFix: Replace text inputs for source and medium with dropdowns backed by an approved enum list — block free entry entirely.
Freeform UTM values
Fix:Replace text inputs for source and medium with dropdowns backed by an approved enum list — block free entry entirely.
No link ownershipFix: Require a campaign and creator field on every link so you can audit who built what and contact them when data looks wrong.
No link ownership
Fix:Require a campaign and creator field on every link so you can audit who built what and contact them when data looks wrong.
Link library never prunedFix: Flag links with zero clicks after 90 days and surface them in a 'stale links' view so someone can archive or delete them.
Link library never pruned
Fix:Flag links with zero clicks after 90 days and surface them in a 'stale links' view so someone can archive or delete them.
Shared spreadsheet still in use alongside the toolFix: Run a one-time migration of all existing links into the tool at launch and lock the spreadsheet — parallel systems defeat the whole point.
Shared spreadsheet still in use alongside the tool
Fix:Run a one-time migration of all existing links into the tool at launch and lock the spreadsheet — parallel systems defeat the whole point.
Analysts can't filter by campaignFix: Build campaign-scoped saved views from day one so analysts never need to scroll through thousands of unrelated links.
Analysts can't filter by campaign
Fix:Build campaign-scoped saved views from day one so analysts never need to scroll through thousands of unrelated links.