Google Ads audit methodology: what we check and how
Everything you see in the dashboard is calculated by code under public rules. Here is what exactly we read, how we calculate and where the limits lie.
Principles
- Read-only. The service reads data and changes nothing in the ad account.
- Numbers from Google. We take metrics from Google's API rather than estimating them.
- Rules, not guesses. Every finding is the result of a specific rule with thresholds, which you can see below.
- An explanation next to the number. Every finding says what happened and what to do.
- Limits of knowledge. Where there is little data, we say so (“Not enough data”) instead of guessing.
Where the data comes from
| Source | What we read | How often | Availability |
|---|---|---|---|
| Google Ads | Campaigns, their statuses and budgets, daily metrics (spend, clicks, impressions, conversions, conversion value), the account balance, Performance Max asset groups, product statistics | Free: once a day and on demand. Paid: hourly | Available |
| Merchant Center | Product statuses and disapproval reasons, feed attributes, language versions | Nightly | Available |
| GA4 | Users, sessions, traffic sources, devices, key events, product performance | Nightly | Available |
| Search Console | Queries, pages, clicks, impressions, position (Google delivers data about three days late) | Nightly | Available |
Account audit: 35 rules
The rules apply to the last 30 days of data. If the connection to Google is lost, we check nothing else: the data is stale and cannot be judged.
| Rule | When it fires | Level |
|---|---|---|
| Access lost | The connection to Google is no longer active. | Critical |
| Data is stale | The last refresh ended with an error more than 24 hours ago. | Warning |
| Balance running low | For prepaid accounts: the balance divided by average daily spend over 7 days gives 7 days or less. A zero balance while spend continues also counts. | Critical at 3 days or less; otherwise warning |
| Impressions stopped | One or more days in a row with no spend although money was spent in the previous 7 days. Two days or more is critical. | Warning or critical |
| Conversions lost | No conversions in the last 7 days while the previous 7 had at least 5, and spend continues. | Critical |
| Conversions dropped | Conversions fell to 40% or less of the previous 7 days (which had at least 10) while spend stayed at 70% or more of the previous. | Warning |
| Conversions not tracked | At least 100 clicks in 14 days and no conversions in 30. | Warning |
| Campaigns stopped serving | A campaign spent budget on days 4 to 14 ago, but has no impressions in the last 3 days although the account as a whole is serving. | Warning |
| Spend spike | Yesterday's spend is at least twice the average of the previous 7 days. | Warning |
| Campaigns below break-even | ROAS below 1 over 14 days in a campaign that accounts for at least 5% of the account's spend. Even without cost of goods this is a loss. | Warning |
| No conversion value | There are conversions, but their value over 14 days is zero: ROAS cannot be calculated. | Info |
| Limited by budget | Google reports that the campaign is limited by budget. | Info |
| No active campaigns | The account has campaigns, but none is enabled. | Info |
| Queries without conversions | At least 3 queries with 3 or more clicks and no conversions take 25% or more of search-term spend over 30 days. | Warning |
| Irrelevant queries | At least 2 queries that look like “free”, “DIY”, “what is”, “jobs”, “download” and similar spend 3% or more of query spend. | Warning |
| Brand in non-brand campaigns | You set your brand words; queries containing them in non-brand campaigns take 10% or more of query spend. | Info |
| No negative keywords | A Search campaign with spend has no negative keyword at all: none of its own, at ad-group level or from a shared list. | Warning |
| Budget too small for CPA | The daily budget is smaller than three target CPAs (shared budgets are not counted). | Warning |
| Shared budget with different goals | Campaigns that share a budget use different channels or different bidding strategies. | Warning |
| Strategy does not match the goal | Click-based or manual bidding in a campaign with 5% or more of spend: when the goal is ROAS or CPA, and in Shopping and Performance Max. | Warning |
| ROAS target holds back delivery | Actual ROAS is half of the target or lower and impressions fell by 40% or more over 14 days. | Warning |
| Smart bidding lacks data | A conversion-based strategy with fewer than 30 conversions in 30 days in a campaign that takes 20% or more of spend. | Info |
| Duplicate purchase conversions | Two or more active primary actions in the Purchase category. | Warning |
| Non-purchase among primary actions | There is a primary purchase action and primary actions of other categories (add to cart, page view). | Warning |
| Purchase action is silent | A primary purchase action with no conversions in 30 days while other primary actions work. | Warning |
| Gap with GA4 | Purchases in Google Ads and orders from paid GA4 channels are at least 20 each over 30 days and the ratio is above 1.6 or below 0.5. | Warning |
| Disapproved products | 5% of the catalogue or more is disapproved; 20% or more is critical. | Warning |
| Attribute gaps | At least 15% of checked products have no GTIN, brand, Google category or image. | Warning |
| Trigger phrases in titles | Titles contain words about weapons, gambling, digital goods, adult content or medical promises: a frequent reason for disapproval. | Warning |
| Products without impressions | Half or more of approved in-stock products had no impressions in 30 days. | Info |
| Loss of product visibility | 20% of products that had impressions a week ago had none in the last 7 days. | Warning |
| PMax without search themes | All active asset groups have no search theme. | Info |
| Weak PMax asset groups | Google rating “Poor”, “Average” or “No ads”. | Warning |
| Spend concentrated on a few products | Three products take 60% or more of product spend (with 8 or more products that spent). | Info |
| Conversions fell after changes | After a change of strategy, target, budget or status, daily conversions fell by at least 40% (there were at least 5 in the 7 days before). | Warning |
How the score is calculated
The score is 100 minus penalties for findings: 25 points for a critical one, 10 for a warning, 3 for an informational one. 85 and above is good, 60 to 84 needs attention, below 60 is critical. The free level shows all critical findings and the first two of the rest; the full list is on paid plans.
Product segments
We take each product's statistics for the chosen period directly from Google Ads. The break-even ROAS is 1 divided by your margin. If no margin is set, we use the average ROAS of your products: the segments then answer “better or worse than the rest” rather than “profitable or not”, and we say so openly.
| Segment | Condition |
|---|---|
| Winners | There are conversions and ROAS is at least the break-even point multiplied by 1.2. |
| Watch | There are conversions and ROAS is between the break-even point and that point multiplied by 1.2. |
| Weak return | There are conversions and ROAS is between 1 and the break-even point. |
| Soft drain | ROAS is below 1, or there are no conversions, at least 10 clicks and spend below the account's average cost per conversion. |
| Hard drain | No conversions and spend has already reached the account's average cost per conversion. |
| Not enough data | No conversions, fewer than 10 clicks and spend has not yet reached the average cost per conversion. |
| Not advertised | No impressions, clicks or spend in the period. |
PMax asset group completeness
Our own calculation, separate from Google's rating. The target: 5 headlines, 1 long headline, 4 descriptions, 6 images (of all formats), 1 logo and 1 own video. Each kind contributes its share of the target, capped at one; the total is the average of the six kinds. An auto-generated video is not counted. An empty group is shown on its own: it is 0%.
Merchant Center and the feed
Statuses are counted per product: language versions of one product are merged and the worst status is shown. We translate disapproval reasons into Ukrainian from a dictionary of about 40 codes; an unfamiliar code stays in English, as Google gives it. The feed enrichment block shows which products lack useful attributes: title and description, Google category, brand, image, and for apparel, footwear and products without a category also gender, age group and colour.
What we do not do
- We do not change the ad account.
- We do not invent numbers: if there is no data, we say so.
- We do not use your data for advertising or train models on it.
- We do not promise results: this is an oversight tool, not a guarantee of sales.
Data freshness
The free level refreshes Google Ads once a day, at midnight Kyiv time, and on demand; paid plans refresh hourly. Merchant Center, GA4 and Search Console refresh overnight. The dashboard always shows the time of the last snapshot, and the “Refresh data” button starts a refresh by hand.