Wasted Ad Spend Audit: Find the Leaks in an Afternoon
Five checks that surface where an ad account leaks money - search terms, junk placements, self-competition, tracking and zombie settings.
Every ad account leaks. The industry-scale numbers make the point brutally: the ANA’s landmark programmatic transparency study found the $88 billion open web programmatic ecosystem “rife with waste,” with as much as $20 billion in available efficiency gains - roughly 23 cents of every dollar - and the average campaign running on 44,000 websites, 21% of impressions landing on made-for-advertising sites. On top of that sits invalid traffic: Lunio’s Global Invalid Traffic Report puts the average invalid traffic rate across channels at 8.5%, or $63 billion lost. Those are ecosystem numbers, and your account is not average - but I have never audited an account, my own included, that leaked nothing.
The good news is that waste concentrates in a handful of findable places. This audit is my afternoon version for the accounts most readers of this series run - Google and Meta, self-managed - ordered so the biggest likely leaks get checked first.
Check 1: read what you actually paid for (search terms)
The search terms report is the highest-yield fifteen minutes in Google Ads: the actual queries that triggered your ads, as opposed to the keywords you bid on. Google’s own documentation frames the fix plainly - “if a search term isn’t relevant enough to the products or services you offer, add it as a negative keyword.” With broad match and Performance Max both expanding aggressively by design, the gap between what you bid on and what you bought grows every quarter you do not look.
My method: export the last 90 days of search terms sorted by spend, and read down until you have covered 80% of it. Mark everything you would not want to pay for again - wrong intent, wrong product, job seekers, competitors’ support queries - and turn the patterns into negative keywords at the right level. In a neglected account this single check routinely surfaces the largest leak of the whole audit, and it compounds: every negative added keeps paying.
Check 2: audit where the ads ran (placements)
The ANA’s 44,000-sites-per-campaign figure is what unmanaged reach looks like, and the 21% made-for-advertising share is where it goes to die: sites built to host ads, technically viewable, commercially worthless. In your own account this check means pulling placement reports for anything with Display, video or Performance Max reach, sorting by spend, and asking one question per row: would I have chosen this? Mobile app inventory, clickbait domains and MFA-patterned sites get excluded, and the exclusion list becomes a standing asset applied to every new campaign - the same set-the-fence-first logic as the Performance Max guardrails, applied retroactively.
Check 3: find where you compete with yourself
Self-competition is the quiet leak: campaigns bidding on each other’s queries, remarketing audiences overlapping prospecting, and paid clicks on searches your brand would have won free. The brand question deserves its own honest test, because paying for navigational brand clicks is defensible when competitors bid on your name and pure waste when they do not - check who actually appears on your brand terms before deciding. On Meta, overlapping audiences across ad sets make your own campaigns bid against each other in the auction, and consolidation is usually the fix. I treat every case of two campaigns able to serve the same person for the same intent as a structural question: one of them owns that intent, the other gets a negative or an exclusion.
Check 4: confirm the meter works (tracking)
Waste hides behind broken measurement in both directions: spend that converts but looks like it does not gets cut, and spend that never converts but double-counts survives. The audit here is a conversion-action inventory - what counts as a conversion, whether anything is double-counted after a platform migration, whether the numbers roughly reconcile with your analytics and CRM. I put this check fourth, not first, only because it is the least likely to be broken in a maintained account - but when it is broken, every other optimization has been steering by a bent compass, which is why the bid strategy diagnostic starts here too.
Check 5: hunt the zombies (settings and campaigns)
Last, the defaults and leftovers. Search partners and Display expansion turned on by default and never evaluated. The experiment campaign from two quarters ago, still spending its daily budget. Auto-applied recommendations that opted you into things nobody chose. Ad schedules and locations inherited from a launch that no longer matches the business. None of these is individually large, which is exactly why they survive - my rule is that every setting in a spending campaign must have a person who can say why it is set that way, and anything that fails the question gets turned off and watched for a week.
Make it a cadence, not a rescue
An afternoon audit recovers the accumulated waste. A quarterly repeat prevents the accumulation, and it gets faster each time because the negative lists, exclusion lists and settings notes persist. I pair it with the weekly creative fatigue check and the per-slump bid diagnostics: those two watch the campaigns you are actively managing, and this audit catches everything nobody is watching. The order I would run a first-ever audit in a neglected account is exactly the order above, and I would not be surprised by double-digit percentage savings - the ecosystem data says the waste is there, and the checks say where it hides.
FAQ
How much of my ad spend is probably wasted? Nobody can tell you without looking, and distrust anyone who quotes a universal percentage. What the verifiable data supports: the programmatic ecosystem carries roughly 23% recoverable inefficiency by the ANA’s accounting, and invalid traffic alone averages 8.5% across channels. A maintained account leaks less. An unaudited one has no reason to.
What’s the single fastest check? The search terms report sorted by spend. It needs no setup, the waste is legible to anyone who knows the business, and the fix - negative keywords - takes effect immediately and permanently.
Should I use an automated waste-detection tool? After the manual audit, maybe, and never instead of it. The afternoon version teaches you where your account leaks, which is what lets you judge whether a tool’s alerts are signal. Most of the checks above are judgment calls a tool can flag but not settle - “would I have chosen this placement” has no API.
Does this apply to Meta accounts too? The structure transfers with different reports: audience overlap replaces search terms as the first check, placement audit covers Audience Network, and the zombie hunt covers automatic placements and creative enhancements. The tracking and self-competition checks apply verbatim, and the Advantage+ controls that remain are the fence-setting companion.
This audit is part of my paid media series. The pre-launch version of it is the Performance Max guardrails, the live-campaign diagnostics are bid strategy troubleshooting and creative fatigue detection, and the wider practice starts at the complete guide to AI marketing.