What we find

Twenty-six ways an account quietly loses money.

None of them announces itself and all of them are boring to look for, which is why the same budget returns less this quarter than last. 7 run today — the table says which.

What you get back

A list of problems is not worth anything. A list with prices on it is.

Every audit tool hands you findings. What decides whether any of it was worth reading is which one to do first — and that is a question about money, not severity.

So every finding carries what it is costing you a month, worked out against your own spend rather than an industry average, and the list arrives sorted by it.
Weekly review · run 0412
Sample
Recoverable · monthly

$5,730

Findings

5

  • CriticalCritical severity$3,180/mo

    Brand terms are being bought by two campaigns at once

    search-terms/brand-overlap412 terms · 19% of spend

  • HighHigh severity$1,450/mo

    Three asset groups are below the headline minimum

    pmax/asset-group-thin3 of 7 groups · 4 headlines each

  • HighHigh severity

    Two conversion actions record the same submit

    conversions/double-countedForm_Lead · Contact_Thanks

  • MediumMedium severity$890/mo

    Search — Core lost 22% impression share to budget

    budget/capped-searchLost IS (budget) 0.22 · 28d

  • LowLow severity$210/mo

    Presence-only targeting is off on two campaigns

    geo/spill2 campaigns · 6% of clicks out of area

The list

All twenty-six, and what each one is costing somebody right now.

7 of the 26 run today — the last column says which, and both numbers are counted from the code rather than typed. The key beside each check stays the same week to week, so you can follow one and see whether it came back.

What goes wrongWhy it costs youRead fromRuns
You are bidding against yourselfbrand-overlapSearch terms
Two campaigns buying the same brand terms, so you are the competition that pushed your own price up. You pay the higher click and the conversion was yours either way.search_term_viewNot yet
Paying for searches that never convertsearch-term-wasteSearch terms
Terms that have taken real spend across the window and returned nothing, ranked by what they cost. This is usually the largest single number in a first review.search_term_viewToday
Buying traffic you then blocknegative-conflictSearch terms
A negative keyword blocking a keyword you are actively bidding on. You pay to compete for the auction and then refuse the click it wins.campaign_criterionToday
The same keyword in two placesduplicate-keywordKeywords
Only one of them can serve, and the other quietly splits the performance history that decides what you pay for the position.keyword_viewToday
Broad match buying the wrong intentmatch-type-driftKeywords
Terms arriving that share no intent with the keyword that bought them — the clicks are real, the buyers are not, and the spend lands in the campaign you judge by conversions.search_term_viewNot yet
Paying more for the same positionquality-score-dropKeywords
Quality Score falling on keywords that still carry spend. Nothing about the campaign changed except the price of every click in it.keyword_viewNot yet
Clicks landing on a broken pagelanding-page-mismatchAds
Final URLs that redirect, 404, or land somewhere the ad did not promise. The click is billed whether or not the page loads.ad_group_adNot yet
One conversion counted twiceconversion-double-countConversions
Two actions recording the same submit, which inflates every ratio the bidding strategy optimizes against — so the algorithm buys more of whatever produced the phantom.conversion_actionNot yet
Bidding towards a conversion that stopped firingconversion-action-staleConversions
A primary conversion action that has not fired all window, usually a tag removed from the site. Smart bidding is still chasing it.conversion_actionNot yet
Conversions measured two different waysattribution-mismatchConversions
Attribution models or lookback windows that differ between actions feeding one bid strategy, so the strategy is comparing numbers that are not comparable.conversion_actionNot yet
A winning campaign cut off earlybudget-cappedBudget
A campaign hitting its daily budget and losing impression share it was winning on rank. You were beating the auction and stopped showing up for it.campaign_budgetNot yet
A profitable campaign held down by an old numberbudget-starvedBudget
Budget set far below what the campaign could spend at its own target. The ceiling is not a strategy, it is a figure nobody revisited.campaign_budgetNot yet
A bid strategy that never gets to settlebid-strategy-churnBidding
A strategy or target changed again before the last learning period finished. Every reset spends real money re-learning what it had almost worked out.change_eventNot yet
A target the campaign has never hittarget-cpa-unreachableBidding
A target CPA set below anything in the campaign's history. It does not lower your cost, it throttles delivery until the campaign stops mattering.campaignNot yet
Impressions you were winning and stopped gettingimpression-share-lostBidding
Lost impression share split into the part budget caused and the part rank caused. They need opposite responses, and doing the wrong one costs twice.campaignNot yet
Asset groups too thin to serve everywhereasset-group-thinPerformance Max
Groups below Google's own minimums, which caps the placements they are eligible for. You are paying for a campaign that is only allowed to compete in part of its inventory.asset_groupNot yet
Disapproved assets holding a slotasset-rejectedAssets
Rejected or limited assets still sitting in rotation, occupying a position that serves nothing while the ones that work fight over what is left.asset_group_assetToday
The same headline over and overheadline-duplicationAssets
Repeated headlines across responsive ads collapse the number of combinations that can be assembled, so the system has far less to test than the asset count suggests.ad_group_ad_asset_viewNot yet
Free space on the results page left emptysitelink-missingAssets
Campaigns running without sitelinks. The space costs nothing, takes the click-through rate with it, and a competitor is using it.campaign_assetToday
Asset types missing, campaign by campaignextension-coverageAssets
Which asset types are present against which are available, per campaign rather than per account — because an account-level average hides the campaign that has none.campaign_assetToday
Paying for clicks outside your areageo-spillTargeting
Clicks billed from outside the region you targeted, with the share of spend they account for. Nobody in that list can buy from you.geographic_viewNot yet
Buying people who searched about a placepresence-only-offTargeting
Location targeting left on presence-or-interest, which is the default and is not what you meant. You are paying to reach people reading about your city, not people in it.campaignToday
Ads running when nobody answersschedule-blind-spotTargeting
Hours and days that take spend and return nothing. For anyone whose conversion is a phone call, this is the cheapest money on the list to stop spending.campaign_criterionNot yet
A device converting differently, bid the samedevice-bid-gapTargeting
A device converting at a materially different rate with no adjustment against it, so you pay the same for traffic worth measurably less.campaign_criterionNot yet
Audience lists built and never usedaudience-unattachedTargeting
Lists collecting data that no campaign is observing or bidding on. The work was already done and none of it is reaching the auction.ad_group_audience_viewNot yet
Clicks arriving untrackedtracking-template-brokenTracking
Tracking templates producing a redirect chain or dropping the parameters your analytics needs. The spend is real and the attribution for it is gone.campaignNot yet
7 of 26 running today · in this order on every reviewNo model involved

Why you can trust the list

A review you cannot reproduce is an opinion with a number attached.

Ask a model to audit an account twice and you get two different audits — no way to tell which run was wrong. Fine for exploring, useless for acting on.

So we do not start with the model. The checks go first, and they give the same account the same answer every time. A finding that is new this week is a change in your account, not a change in the weather.
Agent turn · live
Sample
  1. gaqlSELECT search_term_view.search_term, metrics.cost_micros …4,182 rows · 1.9s
  2. run_pythonmewads.run_audit(manifest, profile)7 checks · 3.4s
  3. run_pythonbrand_overlap(terms, profile.brand_tokens)412 matched
  4. gaql… WHERE campaign.id IN (17 ids) AND segments.date …1,204 rows · 0.8s
  5. propose_change_set4 operations · validate-onlydrafting

And is the change worth making

Knowing what is wrong is not the same as knowing what to do about it.

A check can tell you that 412 search terms overlap with a brand campaign. It cannot tell you which of the two should keep them.

That second pass is what you are paying for. The Goldbeater agent follows what the list turned up and stops when the working is there to show — and what comes back is not advice. It is every operation with its current value beside the proposed one, to take or leave line by line.
Change set 0412-a · validate-only
Sample
ResourceFieldCurrentProposedDecision
Search — Brandnegative_keyword+412 termsApproved
Search — Corecampaign_budget.amount_micros$120.00 / day$168.00 / dayApproved
PMax — Retailasset_group.headlines4 headlines11 headlinesPending
Search — Coregeo_target_constanteverywhere3 metrosRejected
2 approved · 1 pending · 1 rejectedRollback artifact written before execution
Next

Find out which of these are costing you.

Seven days, one full review, nothing charged until day seven. The connection is read-only, so the worst case is a list you disagree with.