A Shopify supplement brand we inherited had 34 active ad sets running. Eleven of them had spent more than $500 over the past 30 days and generated zero purchases. Total waste: $6,200 — roughly 22% of their monthly ad budget, producing nothing. None of this appeared in their weekly reports because the previous setup reported account-level ROAS, not ad set-level spend efficiency. We found it in 19 minutes using a 4-filter audit we run on every new account.
Why most audits find nothing
The standard approach to auditing a Meta account is to look at what performed well and ask "how do we do more of this?" That's optimization. An audit looks at what's performing badly and asks why it's still running.
Most brands never look at the bottom of their performance table. They sort by ROAS, focus on the winners, and assume the losers will either turn around or get auto-optimized away. Meta's algorithm doesn't automatically pause underperforming ad sets — it reduces delivery but keeps spending. Low-performing ad sets can burn $20/day in diminishing delivery for months before anyone notices, because account-level numbers are carried by the winners.
The audit finds what the winners are hiding.
The 4 filters we run on every account
Open Meta Ads Manager. Set the date range to the last 30 days. Switch to the ad set view. Then apply these 4 filters:
Filter 1: Spend above $200, purchases = 0 Sort by spend descending. Filter to ad sets that spent more than $200 with zero recorded purchases. For each one: check when it last had a purchase, check whether the landing page is still live, check whether the audience size is above 500K. Then pause them all. This is unambiguous waste.
Filter 2: CPA more than 2× target, spend above $300 If the target CPA is $35, flag ad sets spending above $300 with CPA above $70. These aren't failing outright — they're just failing expensively. Pause any running for more than 14 days at above-2× CPA. They've had enough data to improve and haven't.
Filter 3: Frequency above 6 on retargeting ad sets Retargeting audiences exhaust faster than prospecting. An ad set targeting 30-day website visitors with frequency above 6 is showing the same ad to people who've already decided. Pause or refresh the creative, or expand the audience window.
Filter 4: Active spend with no active creatives Sometimes ad sets keep pulling budget after creative assets are paused or rejected. Expand each ad set and verify all active creatives are actually delivering. Any ad set spending without a live creative is a Meta billing error — catch and report it.
What we found in the supplement account
Filter 1 (zero-purchase ad sets): 11 ad sets paused. $6,200 recovered from dead spend.
Filter 2 (above-2× CPA): 4 ad sets flagged at 2.3–3.1× target CPA, each running for more than 21 days. All 4 paused. Two were legacy interest-targeting ad sets from a campaign restructure 6 months prior that had never been turned off.
Filter 3 (retargeting frequency): 3 ad sets flagged at 7.2–9.4 frequency targeting their 30-day visitor pool. Creative refreshed on 2; the third collapsed into a broader 60-day retargeting audience.
Total ad sets before: 34. After: 18. Monthly budget freed from dead weight: $8,400. Account-level ROAS in the following 30 days: 4.1, up from 2.9. Same budget — now concentrated on what was actually working.
Run this on your account right now
Go to Ads Manager. Last 30 days. Ad set view. Add these columns: Spend, Purchases, CPA, Frequency, Reach.
Start with Filter 1: sort by spend, look for ad sets above $200 with zero purchases. If any exist, pause them before doing anything else.
Then work through Filters 2 and 3. The full pass takes under 20 minutes on an account with fewer than 50 active ad sets.
This won't appear in a weekly performance report. It lives in the rows nobody sorts to the bottom to read.