A Health Score, not a one-off report
Ads Audit connects to a Google Ads account and gives it a Health Score — built to be re-checked as often as you like, not calculated once. The Health Score rolls up from category health, category health rolls up from findings, and every finding traces back to evidence. 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.
Stable
No structural problems left, only refinements.
Sufficient dataComputed from 23 rules across every category with applicable data. Categories without rules 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 | Rule |
|---|---|---|---|---|---|---|
| Critical | Primary conversions counted twice | Conversion tracking | PLN 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 PLN with zero conversions | Search | PLN 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 | PLN 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 | PLN 60,604.10 | 41.0% | 12,840 | 412.0 | PLN 147.10 | 1.84 | 2 | |
| Search — Categories | SEARCH | Enabled | PLN 32,118.40 | 21.7% | 9,214 | 210.0 | PLN 152.94 | 3.40 | 3 | |
| Demand Gen — Remarketing | DEMAND_GEN | Enabled | PLN 21,402.00 | 14.5% | 7,902 | 96.0 | PLN 222.94 | 1.12 | 2 | |
| Search — Brand | SEARCH | Enabled | PLN 18,940.00 | 12.8% | 5,118 | 498.0 | PLN 38.03 | 11.20 | 0 | |
| Search — Competitors | SEARCH | Paused | PLN 14,756.30 | 10.0% | 3,338 | 68.0 | PLN 217.00 | 2.05 | 0 | |
| Display — Reach | DISPLAY | Paused | PLN 4,210.80 | 2.8% | 18,402 | 12.0 | PLN 350.90 | 0.42 | 0 | |
| Search — Long tail | SEARCH | Enabled | PLN 3,890.20 | 2.6% | 2,104 | 54.0 | PLN 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.
Real today: every audit run is stored with its own score and timestamp, and you can browse that history for an account. The line chart above is illustrative — rendering your real history as a trend chart, and tracking category scores across runs, are both on our roadmap.
What changed since last time
The direction we’re building toward: every re-check compared against the last one, so you see new issues, resolved issues and regressions — not just a fresh score.
- New issues
- 3
- Resolved
- 5
- Regressions
- 1
Illustrative — not yet computed from real audits. See “What’s real today” below.
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; browsing past audits and their scores.
On our roadmap:a rendered trend chart from your real score history, category scores tracked across runs, and automatic new / resolved / regressed issue counts between two audits. We label every screen on this page that shows that kind of data as a sample so it’s never confused with your account’s real numbers.
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.