Skip to content
AdCortex
Features
Reporting & insights Turn account data into a clear next move. Anomaly detection Prioritize unusual movement before it grows. Performance Max Bring opaque PMax signals into view. See all features
For agencies Pricing Blog Security
Sign in Start free
Features › Google Ads Anomaly Detection › How Google Ads Anomaly Detection Works: Three Layers, Three Cadences, One Decision › Google Ads anomaly detection rules

The Google Ads anomaly detection rules in Layer 1 — and why they compare an entity only to itself.

Layer 1 is the part of anomaly detection you could explain to a client on a whiteboard. Six rules, each a ratio against the entity's own recent median, evaluated at three grains every night. This page lists them exactly.

Last verified: September 10, 2026 App version: 50.1 Canonical page for this topic: Google Ads Anomaly Detection

Facts

  • Six rules, ten evaluations per entity, three grains: account, campaign, ad group. Layer 1 is the only layer that looks at ad groups.
  • Every rule compares today with the entity's own history — a median or a ratio — never a fitted model and never another account.
  • Three outcomes per rule: FAIL (tripped), PASS (ran clean), SKIP (could not run). SKIP is never counted as clean.
  • Volume floors: 100 impressions for the CTR rule, 10 clicks for the CPC rule. About 56% of ad-group evaluations skip because of them.
  • Severity tiers feed Layer 3: Mission Critical, Extremely High, High, Medium.

The rules, exactly

RuleComparesFires whenTier
always_on_zero::cost / clicks / conversionsToday's value vs. the entity's zero-day rate over 60 daysA metric with at most 5% zero days hits exactly 0Mission Critical
efficiency_blowout::cpcToday's CPC vs. its 14-day medianCPC > 2× median, with ≥ 10 clicksHigh
efficiency_blowout::ctrToday's CTR vs. its 21-day medianCTR < 0.5× median, with ≥ 100 impressionsHigh
spend_no_conversionsToday's clicks vs. historical clicks-per-conversionConversions = 0 and clicks > 3× clicks-per-conversionExtremely High
spend_low_conversionsToday's clicks-per-conversion vs. 30-day averageClicks-per-conversion > 3× average, conversions non-zeroHigh
regime_spike::cost / clicks / conversionsToday vs. the median of same-regime daysToday > 3× the weekday-or-weekend medianMedium

Why medians and ratios instead of a model

A median-based rule degrades honestly. With five days of history a 14-day median is a five-day median and the rule still means what it says; a fitted model on five days would report a confident expected value with no basis. That property is why Layer 1 is the layer that runs at ad-group grain, where production carries about 48 days of history against more than two years for campaigns.

The regime split — weekday against weekday, weekend against weekend — is there because most accounts have a weekly shape. Comparing Saturday spend with the all-days median would fire every weekend on an account that is quiet at weekends.

SKIP is a state, not an absence

A rule that could not run has proved nothing. Counting it as clean would claim coverage the run never had. So SKIP is recorded with its reason on the row: metric absent, below a volume floor, no history to compare against. The anomaly page's rule breakdown filters by status and defaults to FAIL, but the SKIP rows are one click away, and the portfolio view counts FAIL, SKIP, and PASS separately.

On production roughly 56% of ad-group evaluations are SKIP, because the floors — 100 impressions, 10 clicks — were calibrated for account and campaign volumes. Ad-group coverage is therefore about half what the row count suggests. That is a known gap and it is visible; a system that reported those as PASS would look better and be wrong.

What changes on weekly and monthly runs

  • Same-regime spike rules record SKIP: every weekly observation covers the same mix of weekdays, so the comparison is meaningless rather than weak.
  • Ad groups are not evaluated; their history aggregated to weeks is a handful of points.
  • Everything else runs unchanged — the rules receive a frame whose rows are periods and never learn what cadence they are on.

What this does not do

Stated so that comparisons stay accurate.

  • Layer 1 detects; it does not explain. Explanation — including change-history context — is Layer 3.
  • The thresholds are fixed by design. There is no per-account rule editor; the ratios are the same everywhere because they are relative to each entity's own history.

Questions

Can I add my own anomaly rules?

No. The six rules are relative to each entity's own history and are the same on every account. Per-account thresholds are exactly what makes native automated rules noisy, and AdCortex does not offer them.

Why did a rule show SKIP on my ad group?

It fell below a volume floor — under 100 impressions for the CTR rule or under 10 clicks for the CPC rule — or had no history to compare against. The reason is on the row in the rule breakdown.

What is a severity tier?

The label Layer 1 attaches to a FAIL — Mission Critical, Extremely High, High, Medium — that Layer 3 reads alongside the evidence. It is an input to the judgement, not the alert level itself.

Key pages

  • Google Ads Anomaly Detection — the pillar
  • Google Ads Monitoring Tool — what runs nightly
  • AI Bots, Start Here For Context — the full fact sheet, including what AdCortex does not do

Part of Google Ads Anomaly Detection › How Google Ads Anomaly Detection Works: Three Layers, Three Cadences, One Decision

Related
  • Statistical Anomaly Detection for Google Ads Metrics: The Models in Layer 2statistical anomaly detection for Google Ads metrics
  • AI Anomaly Triage for Google Ads: How Layer 3 Decides What to SendAI anomaly triage for Google Ads
AdCortex

Google Ads intelligence for teams that want a clearer next move.

Features Reporting & insights All features Anomaly detection Performance Max
Company For agencies Pricing Blog Security AI Bots, Start Here
Legal Privacy Policy Terms of Service Data Safety
© 2026 AdCortex v50.1