Google Ads audit checklist: what to check daily, and in what order

With one account the morning check is instinctive. With thirty the instinct stops working, because by the time you reach the last account the first one is already out of date. Here is the list of checks and the order that makes them useful.

Account and campaign names in the recording are masked and the amounts are scaled.

None of this depends on a particular tool. It works the same whether the check is run by a person with a spreadsheet, a script, or a language model wired into the Google Ads API. What matters is which questions you ask, and in what order.

Why the order matters more than the list

Start at the account level. A drop visible on the account usually has a single cause shared by every campaign: an exhausted spending limit, an unpaid invoice, a suspension from above. Start at the campaign level instead and you will see thirty separate alerts and go looking for thirty separate causes.

The same rule applies further down. Check the ad group before you judge an ad. Check the campaign before you judge the ad group.

Account level: two questions

Did the account spend anything yesterday. Zero spend with campaigns enabled almost always points to billing or to a suspension applied at account level. Settle that before you open any campaign, because one cause then explains every alert at once.

Did cost collapse. If the account has been down for a dozen hours, the weekly average will not show it yet. The earlier you catch it, the more it looks like ordinary noise, so read daily cost rather than the total for the window.

Campaign level: six checks

Zero cost. Separate zero cost with zero impressions from zero cost with a thousand impressions. The second case means the campaign is serving and losing auctions, which is a bid or quality problem rather than a failure.

Low budget use. The campaign spends a fraction of its limit even though the limit is there. Usually demand is smaller than the budget assumed, or targeting has been narrowed. The reverse deserves a warning too: one hundred percent use does not mean the campaign is maxed out. It can spend the whole limit and still lose a large share of impressions to that same limit.

Day over day, compared against the same weekday. Tuesday against Tuesday, Sunday against Sunday. Without that every weekend looks like an outage.

Week over week. Seven days against the previous seven smooths swings that a single day will not smooth.

Cost spikes. A single day at two hundred percent of the limit is normal, because Google bills budget as a daily average multiplied by 30.4. What deserves attention is several such days in a row, or a spike on a day when nobody touched the budget.

Rising cost per conversion and falling return. Set a cost threshold below which you do not react. With small conversion counts the percentages swing on their own, and without a threshold you will get an alert every single day.

Conversions falling at steady cost

This is the quietest check of all, and the only one that needs a longer window: at least five days, preferably seven. A three day window gives you nothing to reason from, so the check either never fires or fires falsely.

Cost looks right, traffic looks right, and conversions are gone. That can be a measurement failure, and it can equally be a drop in conversion rate. You cannot tell those apart inside the Google Ads UI. You need a second source.

What to add from GA4

Sessions set against conversions in the same window. If sessions hold steady and transactions fall, the problem sits with the store or with measurement, and the campaign is doing its job.

The funnel step by step: product view, add to cart, begin checkout, purchase. The step where the percentage falls hardest against last week tells you where to look.

The same funnel split by phone and desktop. A broken mobile checkout can eat half your conversions while the combined view shows only mild softness.

Campaign landing pages. A campaign pointing at a page that returns an error, or at a sale that ended, looks perfectly normal in the Google Ads UI: cost is there, clicks are there, conversions are not.

The fresh data trap. Today and yesterday are incomplete. Engagement and conversions are credited with a delay, so a fresh day always looks worse than it is. Compare closed windows.

Merchant Center: what dropped out of the feed

A disapproved product raises no alert in the Google Ads UI. The campaign keeps running, the budget keeps spending, and your assortment is simply narrower than you assume. With a few hundred items nobody catches that from the results view.

Watch two numbers: how many items are disapproved, and how much that number grew since yesterday. The increase carries more information than the level, because you usually already know your steady rate of disapprovals.

The reasons that keep coming back:

  • feed price out of sync with the price on the page, usually after a promotion rolled out in the store and never pushed to the feed,
  • a missing or duplicated product identifier,
  • a product page that is unavailable or redirects somewhere else,
  • feed availability that disagrees with actual stock.

Look separately at items whose status is fine but which stopped showing. That is rarely a disapproval. More often the item is losing auctions or sits excluded in the campaign's product tree.

Performance Max: where the budget actually goes

Performance Max reports one result for a campaign serving at the same time on Search, Shopping, Display and YouTube. Until you break that out by channel, campaign return stays an average in which one surface funds another.

The places where money leaks most quietly:

Brand traffic inside the shopping campaign. Queries carrying your store name land in PMax and lift its numbers. The campaign looks excellent while much of it buys back traffic that would have arrived anyway.

Conversions credited after someone watched a video on YouTube without clicking. Placed next to click conversions they inflate the picture, and when you compare campaigns against each other they lead to bad scaling calls.

Items in the product tree that no longer exist in the feed. The campaign then shifts budget toward whatever it can still find, which usually means Search.

Competitor pricing

You can plug price monitoring into the same routine, and it is worth doing, because in Shopping the price decides whether an offer enters the auction at all. A competitor's move looks on your account exactly like falling demand: impressions drop, cost drops, and the change history is empty.

Two things are enough to start. First, whether your price sits inside the market range for the items that carry most of your revenue. Second, whether any item leaves you the most expensive listing on the page.

Merchant Center publishes market price data itself, and outside tools give you closer matching by product model. The choice depends on how much your assortment overlaps with the competition.

Who touched the account

A separate section that is easy to forget: change history split into what the team did and what someone outside it did. The second category matters more, because you already know about your own changes, while other people's changes reach you through the results, usually a few days late.

List every outside change without filtering by importance. One flipped location setting can move an account's results more than a budget change, and it will never make a list of "significant changes".

If you automate the data pull

Accounts are independent of each other, so they can be queried in parallel, and that is where most of the saved time comes from. One piece has to stay sequential though: refreshing the access token. When every thread reaches for it at once, some requests come back with a permissions error and the report is incomplete, and you only notice because accounts are missing from it.

Count how many accounts came back with data and compare that against how many you sent out. Silently losing part of the results is the most common failure here, and the only one that leaves no trace.

To close

The check does not watch the account by itself. You can run it manually while your morning coffee cools, or schedule it to run automatically and wait for the summary. Either way, a few minutes later you know where to start: with this account, or with that one campaign. The rest of the day begins with a decision instead of a search.

BDOS Club

Keep learning with free tutorials

BDOS Club is our free community on Circle. Join to get tutorials on using AI in Google Ads — from writing useful prompts to running full campaign workflows.

Join BDOS Club for free
Previous guide: How to brief an AI on Google Ads work