A Health Score, not a one-off report
Connect a Google Ads account and the Ads Audit Engine evaluates it holistically — not a list of pass/fail checks, but one connected read of account health. That evaluation becomes your Health Score: the score rolls up from category health, category health rolls up from findings, and every finding traces back to evidence. Built to be re-checked as often as you like, not calculated once. Here is that system, screen by screen.
Every screen below uses a sample account (“Demo Store Ltd.”) with illustrative data, so you can see the real components before connecting your own account.
The entry point into the system
Your Google Ads Health Score — 0–100, computed from every category below. It is not a decorative KPI — it is a summary of the same findings you can drill into on this page.
Good
The account is broadly sound with improvements available.
Sufficient dataThe Ads Audit Engine evaluates your account holistically — 23 health signals across every category with applicable data. Categories without signals yet, or without relevant campaigns, are excluded from the score rather than counted as a pass — see category health below.
Where the score comes from
Tracking, Search, Performance Max, budgets and the rest — each category has its own score and its own weight in the overall number, so a weak category can’t hide behind a strong one.
| Conversion tracking | 41 | |
| Performance Max | 58 | |
| Budget allocation | 72 | |
| Search | 76 | |
| Ads & assets | 81 | |
| Account structure | 88 | |
| Account hygiene | 94 | |
| Targeting | Not applicable | — |
| Efficiency | Not enough data | — |
What to work on, in order
Every category score is the sum of individual findings. Findings are ranked into a decision queue by severity and measured impact — the table below is the same findings-table component the panel renders, not a marketing recreation.
| Severity | Finding | Category | Impact | Score | Data | Signal |
|---|---|---|---|---|---|---|
| Critical | Primary conversions counted twice | Conversion tracking | US$12,400 | +4.8 | Sufficient data | TRK_DUPLICATE_PRIMARY |
| Critical | Offline conversion import is not connected | Conversion tracking | — | +6.2 | Sufficient data | TRK_OFFLINE_MISSING |
| High | Search terms above $500 with zero conversions | Search | US$3,800 | +1.8 | Sufficient data | SRCH_WASTE_TERMS |
| High | 14 ad groups run a single ad | Ads & assets | — | +2.0 | Sufficient data | ADS_SINGLE_VARIANT |
| Medium | Budget concentrated in two campaigns | Budget allocation | US$2,200 | +1.4 | Limited data | BDG_CONCENTRATION |
| Low | Six campaigns have no assets attached | Account hygiene | — | +0.6 | Sufficient data | HYG_NO_ASSETS |
The data behind the top finding
The top finding is surfaced on its own — severity, category, financial impact where it can be measured, score recovery, and the confidence behind it.
Turn off the duplicate “Purchase (GA4)” conversion action
Two conversion actions record the same purchase event — the Google Ads tag and the GA4 import — and both are marked as primary. Every transaction is counted twice, so Smart Bidding sees roughly 1.9× the real value and bids up where it should not. Reported ROAS will drop from 4.14 to 2.18 once the duplicate is removed; that is the end of the inflation, not a drop in performance.
No black-box scoring
Every finding can be traced back to the rows it came from — this is what makes a category score, and the overall score, explainable rather than arbitrary.
| Metric | Measured | Threshold |
|---|---|---|
| Event overlapconversion_overlap | 98.2% | ≥ 0.9 |
| Volume differencevolume_delta | 1.8% | ≤ 0.05 |
| Hourly correlationhourly_corr | 0.98 | — |
Every campaign, with its findings attached
Cost, trend, efficiency and the number of findings per campaign — so a large account doesn’t hide where the problems are concentrated.
| Campaign | Type | Status | Cost | Share | Trend | Clicks | Conv. | CPA | ROAS | Findings |
|---|---|---|---|---|---|---|---|---|---|---|
| PMax — Clearance | PERFORMANCE_MAX | Enabled | US$60,604.10 | 41.0% | 12,840 | 412.0 | US$147.10 | 1.84 | 2 | |
| Search — Categories | SEARCH | Enabled | US$32,118.40 | 21.7% | 9,214 | 210.0 | US$152.94 | 3.40 | 3 | |
| Demand Gen — Remarketing | DEMAND_GEN | Enabled | US$21,402.00 | 14.5% | 7,902 | 96.0 | US$222.94 | 1.12 | 2 | |
| Search — Brand | SEARCH | Enabled | US$18,940.00 | 12.8% | 5,118 | 498.0 | US$38.03 | 11.20 | 0 | |
| Search — Competitors | SEARCH | Paused | US$14,756.30 | 10.0% | 3,338 | 68.0 | US$217.00 | 2.05 | 0 | |
| Display — Reach | DISPLAY | Paused | US$4,210.80 | 2.8% | 18,402 | 12.0 | US$350.90 | 0.42 | 0 | |
| Search — Long tail | SEARCH | Enabled | US$3,890.20 | 2.6% | 2,104 | 54.0 | US$72.04 | 6.10 | 0 |
Every audit is saved, not overwritten
Re-running an audit creates a new record instead of replacing the last one. You can browse every past run for an account, each with its own overall score, finding counts and date — so you can see whether the account got better or worse between checks.
Every audit run is stored with its own score and timestamp. The authenticated report now renders the real score trend; the chart above remains a labelled public sample.
What changed since last time
Every re-check is compared with the last one, so you see new issues, resolved issues, regressions and problems that could not be re-checked — not just a fresh score.
- New issues
- 3
- Resolved
- 5
- Regressions
- 1
Sample account values. The same lifecycle states are computed from real audits after sign-in.
Nothing in the account can be changed
Ads Audit reads campaigns, ad groups, keywords, search terms, budgets and conversions through the Google Ads API, using read (search) requests only. There is no code path in Ads Audit that calls a write or mutate operation.
Real, in production: the overall and category health scores, computed deterministically from your account data; every audit saved as its own record, never overwritten; scheduled checks, real score trends, audit comparisons, Daily Watch alerts and deterministic account summaries.
Still outside the current product: automated changes to Google Ads, AI-written audit narratives and cross-account agency portfolio tooling. Public sample screens stay labelled so they are never confused with your account’s real numbers.
About the engine: today, every Health Score comes from the same deterministic, fully auditable evaluation described on this page — no black box, no hidden weighting. We’re building toward an explainable AI evaluation model for how that holistic read of an account is produced; when it ships, the same rule applies — every score still has to trace back to evidence you can check.
See it on your own account
Connect Google Ads and get your first Health Score — no changes are made to your account, no card required.