Skip to content
Automated · Reads

UTM hygiene at campaign scale.

Audit your channel grouping against the UTMs actually landing on your property. Catch the traffic buckets leaking into Direct or Unassigned.

By hand
2–4 hours per quarter per property
With the audit
60 seconds
Why it's painful

UTMs break in five ways and most of them show up as a drop in Direct traffic + a bump in Unassigned traffic that nobody can explain. Campaigns set in ad platforms with inconsistent `utm_source` casing (Google vs google vs GOOGLE). Mail tools like Mailchimp stripping parameters. Redirects dropping the query string. Agency partners using `utm_medium=social` for what should be paid. The practical result: your attribution reports misallocate 5–15% of sessions every quarter and the CMO asks why "direct traffic" just went up again.

How the audit handles it
  • Cross-checks your GA4 channel grouping definitions against the `source / medium / campaign` values actually showing up in Acquisition reports.
  • Flags casing inconsistencies — `google / cpc` vs `Google / CPC` — that create duplicate rows in every report.
  • Identifies the "Unassigned" bucket contributors and what it would take to rule each one in or out (new channel group condition, source alias, etc.).
  • Catches the common mis-medium pattern: paid social tagged as `social` instead of `paid_social`, organic search tagged as `search`, etc.
  • Surfaces campaigns with missing UTMs entirely — when possible, inferred from the landing page or ad platform.
Real audit checks
Every check below is a real rule in our audit engine — not a marketing bullet.
Channel group completeness
Source/medium casing consistency
Unassigned traffic diagnosis
Attribution model alignment with channel map
Cross-domain tracking configuration
Sample finding
What a real audit report looks like for this chore.
Warning

2.4% of sessions landing in "Unassigned" channel group

Business impact

Paid social campaigns tagged `utm_medium=social` are landing in Unassigned instead of Paid Social because your channel grouping rule set requires `paid_social` for that bucket. Affects ROAS calculation for every paid social campaign — they appear to drive 0 attributed conversions when the reporting is pulled at channel-group granularity.

Recommendation

Two-part fix. (1) In GA4 admin → Data Display → Channel groups → [your grouping] → edit Paid Social, add an OR condition: `Session medium` matches `social`. (2) At the source, fix your Facebook/LinkedIn UTM tagging template to use `paid_social` going forward. Old campaigns get patched retroactively by rule (1); new campaigns stay clean by rule (2).

Hire a web analyst. Or install one.

UTM parameter hygiene is one of 10 high-stakes chores the agent covers end-to-end. Your first audit is free — and the agent keeps watching every night, so the next time utm parameter hygiene drifts, you hear it from us before it costs you.