# Audit UTM tagging consistency between ads and analytics

> Tier: recipe. Operating recipe: real tool sequence, core rules, known traps.

The UTM chain audited end to end: what ads declare, what GA4 receives, where the unassigned bucket grows.

**Intent.** Whether the links ads carry land in GA4 as the channels they claim.

## When to use

- The 'unassigned' or 'direct' channel grows.
- After tracking template changes.

## When not to use

- No specific contraindication beyond the preconditions below.

## Sources

Required: any connected source

## Preconditions

- The account is ticked in the dashboard, confirmed via list_accounts.

## Inputs

- `window`: Analysis window. Default: last 30 days.

## Procedure

1. Read final URLs and tracking templates on ads. — tools: `google_ads_run_gaql`, `meta_get_ads`
2. Read GA4 session sources for the same period. — tools: `ga4_run_report`
3. Match declared to received and list the leaks.

## Decision rules

- **When** A platform's traffic lands partly unassigned → **conclude** Template or redirect strips parameters: name the ad set and the missing parameter.

## Evidence requirements

- Every figure carries its account, metric and window.
- Anything below a readable sample size is reported as unjudged, not as zero.

## Human approval boundary

- The readout changes nothing. Any change it motivates goes through Safe Writes: preview, human confirmation, then apply.

## Failure modes

- Auto-tagging and manual UTMs coexist on Google: gclid can win silently, and that is correct, not a bug.

## Output

- **Readout**: The figures, with windows and accounts named.
- **Flags**: What deserves a deeper skill or a human decision.

## Related

- Skill: [tracking-audit](https://www.getmcpads.com/skills/tracking-audit.md)
