One clinic had a $10 winner starved for budget while a dead ad quietly burned $1,200 at three times the cost. The day-one agency read, as a skill that ranks everything by dollars.
I've generated millions of dollars for cash-pay clinics running ads, and I promise you the accounts almost never fail for the reason people think.
One clinic had an ad producing leads under $10 sitting on a tiny budget, while a burned-out angle quietly spent over $1,200 at three times the cost. Nobody had looked in six weeks. That's not bad luck. That's an account nobody's actually reading.
This is the same read my agency runs every week across a fleet of health and wellness clients. It touches nothing. It reads the account the way an agency reads it on day one of a takeover, and hands you the three fixes worth the most money.
Log into Ads Manager, stare at 40 columns, and trust your gut. This is how most owners audit, which is to say they don't.
Connect the official ads connector once, run the skill, and get a scored audit with the three fixes ranked by dollars — every number pulled live.
An agent runs the audit weekly, tracks your score trend, flags fatigue before performance drops, and briefs you on Monday. Our agents read every client account this way, every week.
It checks your tracking before it trusts a single number, pulls this week against last week, runs the full check list from wasted spend to throttled winners to zombie ad sets, and scores your account out of 100 with the three fixes ranked by impact.
---
name: ad-account-audit
description: Reads a Meta ad account the way an agency reads it before taking over — signal health, wasted spend, creative fatigue, throttled winners, zombie ad sets, and things running that nobody launched — then hands you the three fixes worth the most money. Read-only. Never pauses, edits, or spends. Trigger on "audit my ad account", "where am I wasting ad spend", "why are my ads getting worse", "check my meta ads".
---
# Ad Account Audit
You are reading this account the way an agency reads it on day one of a takeover:
looking for the leak, the lie, and the winner being starved. Every finding carries
its number. Rank everything by dollars.
You are read-only. You never pause an ad, change a budget, edit a campaign, or
create anything. You report. The human acts.
## Before you start
You need live account data through a connected ads tool. The gold standard is
Meta's own official ads connector (`https://mcp.facebook.com/ads` — added as a
remote connector, permissions controlled per-account in Business Suite). A
connector hub like Composio also works. If nothing is connected, stop and walk
them through connecting it — this is a two-minute setup that pays forever. Never audit from screenshots,
memory, or general knowledge — an invented number is worse than no audit. If any
pull fails, say so inside that finding rather than guessing.
Ask one question up front: **what is a new customer worth to you?** Every verdict
in this report gets ranked against that number.
## Step 1: Decide what the account is optimizing for
Check the last 30 days: do purchase events with values exist?
- **Sales mode:** grade on ROAS, then cost per purchase.
- **Leads mode** (most local/service businesses): grade on cost per lead, then CTR.
Never grade a lead-gen account on ROAS — that produces a report of empty columns.
State the mode at the top of the report.
## Step 2: Check the signal before the spend
Weak tracking silently raises every cost in the account, and most owners have
never looked:
1. Is the pixel firing AND a server-side connection (Conversions API) active?
Browser-only tracking loses a meaningful share of conversions.
2. If both exist — are events deduplicated? Double-counting corrupts both the
optimization and every number the owner believes.
3. Does the platform's reported lead/purchase count roughly match what their CRM
or bank account says for the same window? If the platform claims 2x what the
business actually saw, say the two numbers side by side and let the gap speak.
If the signal is broken, put it at the very top: every other number in the report
is less trustworthy until this is fixed.
## Step 3: Pull two windows, three levels
Last 7 days AND the 7 before, at account, ad set, and ad level. A number without
its trend is decoration. $14 cost per lead means nothing; $14 that was $9 last
week is the whole story.
## Step 4: Run the checks
**Efficiency**
1. Scaling into weakness: spend up 10%+ while the primary metric worsened. When
this fires, it usually outranks everything else.
2. Primary metric vs last week — flag at 15% worse, critical at 30%.
3. CPM vs CTR split: rising CPM at stable CTR is an auction problem; falling CTR
is a creative problem. Diagnose before prescribing.
**Creative fatigue** (in service niches this now hits in 2–3 weeks, not months)
4. Frequency by ad set — flag above 2.5, critical above 3.5.
5. The fatigue signature: cost per result climbing while frequency climbs, on the
same ad. Name the ad, show both numbers.
6. Creative age: any ad carrying real spend that has run 3+ weeks without a
refresh is living on borrowed time.
7. The look-alike portfolio: if every live ad shares one format, one angle, one
face, the account has one bet running, not ten ads.
**Wasted spend**
8. The kill list: real spend, zero results, 7 days. Sum the dollars, name every ad.
Usually the fastest money in the report.
9. Cost outliers: ad sets running over 2x the account's own average cost per result.
10. Zombie ad sets: tiny budgets ($1–5/day), barely delivering, cluttering the
account and stealing learning. Count them, sum them.
11. Lifetime spend caps: check whether the account or campaigns are approaching a
spending limit — accounts hit invisible walls at 95%+ and nobody notices until
delivery dies.
**Winners being starved**
12. The throttled winner: any ad or ad set beating the account average while capped
by a small budget. Always surface at least one if it exists — a report that is
all cuts and no scale gets ignored.
13. Room to run: strong performance plus frequency under 2.0 = scale headroom.
**Things nobody launched**
14. Campaigns or ad sets active that the owner doesn't recognize, recently created
or renamed, or duplicated with tiny budgets. Agencies and "helpful" platform
suggestions both do this. List anything that started in the last 30 days with
its creation date and spend so the owner can confirm every line item was theirs.
**The destination**
15. Open the actual landing page of the top 3 spenders. Does it load fast, match
the ad's promise, and does the form/booking actually work? A broken destination
silently discards every dollar upstream of it — and can run for weeks unnoticed.
## Step 5: The report
1. **Score out of 100** with one sentence of justification.
2. **The three fixes**, ranked by dollars, each with the number behind it and the
exact place to click.
3. **The one winner to feed.**
4. **The kill list** with the summed waste.
5. **Signal verdict** (trust these numbers / fix tracking first).
Benchmarks, honestly framed: for local service lead-gen we consider under ~$10
per lead strong and 2x your own account average the kill line — but the only
benchmark that matters is against the customer value they gave you in the intake.
## Step 6: Offer the recurring version
One audit finds this week's leak. Offer to run it weekly and track: score trend,
waste recovered, winner scaled. Same read-only rule, forever.
One audit finds this week's leak. An agent on a schedule finds every week's. I teach how to set up these agents inside the AI CEO Lab — or bring the report to a call and my agency takes it from there.
One email a week. What changed, why it matters, what to do about it. Skip it and find out the hard way.