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.

  1. 1ScheduleWeekly or monthly
  2. 2Re-scanRe-grade the latest export
  3. 3CompareDiff vs. the last clean scan
  4. 4AlertNew value? You hear about it
  5. 5ReviewApprove or fix at the source
The recurring loop: schedule a scan, diff it against your last clean grade, and hear about drift before it reaches a report.

Set up a recurring audit#

  1. 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. 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. 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. 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.

Conversions credited to the wrong channel
26%
GA4 sessions landing in Unassigned
10–20%
Attribution accuracy gained by standardizing
+29%
What weekly scans protect against: when UTM data fragments, 26% of conversions can land in the wrong channel and 10–20% of GA4 sessions fall into Unassigned. Standardizing recovers about a 29% lift in attribution accuracy (Cometly, 2026).

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.

What a scan comparison surfaces, and the action each signal calls for.
SignalWhat it meansWhat to do
Grade movedYour A–F health grade rose or fell since the last scanOpen the diff to see which values drove the change
New valueA utm_source, utm_medium, or utm_campaign value that was not in the last clean scanFold it into your canonical taxonomy or fix the source link
Case splitThe same word now appears in two cases, e.g. Email and emailLowercase it at the source and re-point existing links
Cluster heldVariants you canonicalized last cycle stayed cleanNo 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.

Run a free audit