Recurring UTM Audits and Automated Drift Detection
Set up a recurring UTM audit to catch naming drift the week it lands. Schedule scans, get alerts on new spellings, and track your A-F health grade over time.
Updated Jun 30, 2026
You cleaned up your UTMs once, graded an A, and locked a taxonomy. Three weeks later a Facebook_Ads shows up next to your canonical facebook, and the grade quietly slips. A recurring UTM audit catches that the week it happens — not at the next quarterly review when the numbers already do not add up.
What a recurring audit is#
A recurring audit is the same scan you run by hand — paste or upload a GA4 source/medium export, get an A–F grade and ranked issue clusters — set to repeat on a schedule. The point is timing. Drift is gradual: only 58% of teams have a documented UTM strategy (SEMrush, 2024), so new spellings slip in unnoticed until a report breaks. This page covers the mechanics; for the patterns behind drift and why it spreads, read automated UTM drift detection.
Drift is the slow appearance of new spellings, cases, and near-duplicates for values you already have — fb, Facebook, and meta creeping in alongside the facebook you canonicalized. A one-time audit fixes the past. A recurring audit watches the present, so the same mess does not rebuild itself a campaign at a time.
- 1ScheduleWeekly or monthly
- 2Re-scanRe-grade the latest export
- 3CompareDiff vs. the last clean scan
- 4AlertNew value? You hear about it
- 5ReviewApprove or fix at the source
Set up a recurring audit#
- 1
Run a baseline audit
Start with a one-off scan so you have a clean, graded taxonomy to measure against. See how the audit grades your data if you want the scoring detail first.
- 2
Choose a cadence
Pick weekly or monthly. Weekly fits teams shipping new campaigns most weeks; monthly fits steadier programs with a small, fixed set of link creators.
- 3
Point it at a source
Upload a fresh CSV each cycle, or keep exporting the same GA4 source/medium report. Direct GA4 sync is on the Phase 2 waitlist — CSV is the day-one path.
- 4
Choose who hears about drift
Add the teammates who should get the alert when a new value appears. On Team and Agency plans, each new spelling triggers a notification to that list.
How drift detection works#
Each scheduled scan runs two comparisons. First, it checks every value against your canonical taxonomy — the locked list of approved sources, mediums, and campaigns. Second, it diffs the scan against your last clean run. Anything new is drift: a Facebook_Ads where you locked facebook, or an Email where you locked email.
Because GA4 treats Email, email, and EMAIL as three different mediums (more on UTM case sensitivity in GA4), a single capital letter is enough to split a channel. When a new value is found, Claude clusters it semantically against what you already have, so you can see what it should map to — and you approve the merge in one click. The audit reads your export; it never writes back to GA4 on its own.
Compare scans over time#
Every recurring scan is saved, so you can open any two and diff them. The comparison view shows your A–F grade trend, the values that entered or left, and the clusters you canonicalized that stayed clean. Pair it with the governed link builder — dropdowns locked to approved values — and most new drift never enters the data in the first place.
| Signal | What it means | What to do |
|---|---|---|
| Grade moved | Your A–F health grade rose or fell since the last scan | Open the diff to see which values drove the change |
| New value | A utm_source, utm_medium, or utm_campaign value that was not in the last clean scan | Fold it into your canonical taxonomy or fix the source link |
| Case split | The same word now appears in two cases, e.g. Email and email | Lowercase it at the source and re-point existing links |
| Cluster held | Variants you canonicalized last cycle stayed clean | No action — the lock did its job |
Drift alerts on Team and Agency#
On the Team ($29/mo) and Agency ($79/mo) plans, drift detection becomes proactive. The moment a scheduled scan finds a value it has not seen, it sends a short, Slack-style alert — one line naming the new value and the dimension it landed in — so you can act before it reaches a dashboard. Alerts go to the teammates you chose during setup.
Alerts read like a Slack message
Alerts arrive by email today — terse and pinnable, the way you would drop a note in a channel. The underlying audit only reads your export. It never writes back to GA4 or your ad platforms, so you stay in control of every change.
How often should you run it?#
There is no universal cadence, but two signals make the call for you. The clearest one is headcount: spreadsheets stop enforcing consistency once more than two people touch them, so once your link-creator list crosses that line, drift is a when, not an if.
- Run weekly if more than two people create links, or you launch new campaigns most weeks — that is where consistency breaks down fastest.
- Run monthly if your program is steady and a small, fixed team owns every link.
- Run an extra scan before any reporting moment — a board update, a client review, a QBR — so the numbers you present are the clean ones.
How often should I run a UTM audit?
Run a recurring UTM audit weekly if more than two people create links or you ship new campaigns most weeks — that is where naming consistency breaks down fastest. A monthly cadence is enough for a steady program with a small, fixed set of link creators. Either way, run an extra scan before any reporting moment, such as a QBR or a client review, so the numbers you present come from clean, graded data.
What is UTM drift?
UTM drift is the gradual appearance of new spellings, cases, and near-duplicates for values you already use: fb, Facebook, and meta creeping in next to the facebook you canonicalized, or an Email next to email. Because GA4 is case-sensitive, each variant is treated as a separate value, which fragments a single channel into several and pushes traffic toward Unassigned. Drift is normal whenever more than a couple of people build links — it is not a mistake, it is something to monitor.
Can I get an alert when a new UTM value appears?
Yes. On the Team and Agency plans, drift detection sends a short, Slack-style alert by email the moment a scheduled scan finds a value it has not seen before. The alert names the new value and the dimension it landed in — source, medium, or campaign — so you can fold it into your canonical taxonomy or correct the source link before it reaches a dashboard.
Do recurring audits change my GA4 data?
No. A recurring audit reads your CSV or GA4 source/medium export and grades it. It never writes back to GA4 or your ad platforms automatically. When a scan suggests merging a new value into an existing canonical token, a human approves that merge in one click — the change happens in your taxonomy, under your control, not silently in GA4.
How do I compare two UTM scans over time?
Every recurring scan is saved, so you can open any two runs and diff them. The comparison shows your A–F grade trend, the values that entered or left since the last scan, any new case splits, and the clusters you canonicalized that stayed clean. It is the fastest way to prove a cleanup held rather than assume it did.
Grade your UTMs, then keep them that way
Run a free audit to get your A–F grade, then turn on a recurring scan so drift never surprises you in a report again.