A rising CPM sends most buyers in one of two wrong directions. Half rip their campaigns apart chasing a price everyone is paying, and half sit still while a fixable leak drains the account. Both are guessing. This is the method to separate the two, plus the exact prompt that runs it on your own data.
Zyou connects to your ad accounts and runs prompts like these through a governed, token-optimised layer.
Why are my Meta CPMs rising?
Your Meta CPMs are rising for one of two reasons: the whole auction got more expensive and every account is feeling it, or something inside your account is dragging your relevance down and pricing your impressions up. The first you cannot fix, the second you can. The entire job is telling them apart before you act.
Is my CPM rise the market or my account?
It is the market when CPM climbs across most of your campaigns at once, frequency stays stable, and reach holds or grows. It is your account when the rise is concentrated in specific ad sets that also show saturation, fatigue, or audience overlap. Market rises are broad and uniform. Account rises are local and carry a fingerprint.
Since early March, when Meta shifted toward outcome-based AI delivery, industry CPMs jumped somewhere between 15 and 40 percent depending on the vertical. That is real, and if your rise looks like everyone else's, tearing your campaigns apart just resets your learning phases and makes it worse. The point of the diagnosis is to check whether your rise is that broad market move or your own.
What is the exact prompt to diagnose a Meta CPM rise?
Paste this into an assistant with your Meta account connected. It is written to refuse a verdict until the rise is confirmed real, then classify it as MARKET or ACCOUNT and, only if account-side, name the specific cause and fix.
Act as a senior Meta analyst. My CPM has risen and I need to know whether it is a market-wide auction shift I have to accept, or an account-side problem I can fix. Using the connected Meta data, diagnose it. Do not recommend a fix until the verdict is confirmed. STEP 0 - Pull ONE query: last 14 days, time_increment=1, at campaign AND ad-set level. This is a daily series. Do not pull a rolled-up total or a single day. Ignore any campaign or ad set below [[BENCHMARK: min spend | default=$50]] over the window, and detect Ecom vs Lead-gen so you label the primary conversion metric correctly. STEP 1 - Confirm the rise is real, not one noisy day. Require CPM to be up for at least 2 consecutive days ending today (house rule 1). State the before -> after CPM and the % change. If only 1 day has moved, say WATCH and stop. STEP 2 - Count how many campaigns moved together. For each active campaign, mark CPM as UP (>= 2 consecutive days), FLAT, or DOWN over the window. STEP 3 - Classify the rise as MARKET or ACCOUNT: MARKET (auction inflation everyone is feeling, not fixable at the account level): - CPM is up across MOST campaigns at once, AND - frequency is stable, AND - reach is stable or growing. Read: the price of impressions went up for everyone. Nothing is broken in your account. ACCOUNT (fixable) - test these three causes, most to least specific, in the ad sets that moved: - AUDIENCE SATURATION: CPM up + frequency > 4 + reach falling in the same ad sets. You are paying more to hit the same shrinking pool of people again. - CREATIVE FATIGUE: CPM up + CTR falling + frequency rising. The auction is charging you more because your relevance is dropping. - AUDIENCE OVERLAP: the same or heavily-overlapping audience is targeted across multiple active ad sets, so your own ad sets are bidding against each other. Output: 1. VERDICT: MARKET or ACCOUNT (name the specific account-side cause if ACCOUNT). 2. EVIDENCE: the exact numbers that produced the verdict (CPM before -> after and %, frequency, reach, CTR, and how many of N campaigns moved together). 3. FIX: if ACCOUNT, the specific corrective action for that cause, with a % and an estimated monthly waste at the current pace. If MARKET, say so plainly and tell me not to tear the account apart chasing a price everyone is paying.
Three improvements over the version first shipped: STEP 0 now folds the spend floor and the Ecom-versus-lead-gen check into the same pull so tiny test campaigns cannot skew the read, STEP 1 forces the before-and-after CPM numbers into the evidence, and STEP 2 makes the "how many campaigns moved together" count explicit, because that single ratio is what separates a market move from an account one. When you run this on live account data through Zyou, the governed, sandboxed, token-optimised middleware for Meta ads, it pulls the daily series inside a sandbox and passes the prompt only the fields the diagnosis needs, so the account stays secure and every run is auditable.
MARKET vs ACCOUNT: how to read the signals
CPM is a price, and a price can rise because the whole market repriced or because you got more expensive to serve. The two look identical on the headline number and completely different underneath. This table is the fingerprint the prompt reads, with the values that trip each verdict.
| SIGNAL | MARKET RISE | ACCOUNT (SATURATION) | ACCOUNT (FATIGUE) |
|---|---|---|---|
| Campaigns moving | Most, together (6 of 6) | A few, isolated (2 of 6) | A few, isolated |
| Frequency | Stable (~2-3) | Rising past 4 (3.8 → 5.1) | Rising (3.2 → 4.4) |
| Reach | Stable or growing | Falling (-17%) | Flat or falling |
| CTR | Roughly flat | Roughly flat | Falling (-22%) |
| Fixable? | No, accept it | Yes, cut and widen audience | Yes, refresh creative |
| Typical fix | Hold, protect margin elsewhere | Budget -25%, widen retargeting window | Swap the fatigued creatives |
What causes account-side CPM increases on Meta?
Three causes, ordered most to least specific. Audience saturation is frequency above 4 while reach falls, the fingerprint of re-hitting a shrinking pool. Creative fatigue is CTR sliding as frequency rises, so Meta prices you up for lost relevance. Audience overlap is your own ad sets targeting the same people and bidding against each other.
Saturation is the one people misread most, because high frequency alone is not saturation. A retargeting ad set can sit at frequency 4 happily if reach is steady. It only becomes a problem when frequency climbs and reach falls at the same time, which means you are paying more to show the same shrinking group the same ad again. That specific pair is what the prompt looks for, not the raw frequency number.
How do I tell a real CPM rise from a noisy day?
Require the rise to hold for at least two consecutive days ending today before you treat it as real. Meta delivery is noisy day to day, and a single spiky CPM against last week is usually just variance. If only one day has moved, the prompt logs it as WATCH and stops rather than sending you to edit a healthy account.
How to read the output
Start at the verdict and let it decide your effort. If it says MARKET, stop worrying, that is a real answer and not a cop-out, and the evidence line will show the same rise across most campaigns with steady frequency and reach. If it says ACCOUNT, the named cause tells you exactly which lever to pull and the fix is specific to that cause. Here is a realistic run on a mid-market ecommerce account.
CPM DIAGNOSIS - last 14 days, daily series VERDICT: ACCOUNT. Cause: audience saturation. EVIDENCE: - Account CPM up 22% over the last 3 consecutive days ($18.40 -> $22.45). Real, not one spiky day. - Of 6 active campaigns, only 2 moved, both retargeting. The other 4 (prospecting) show flat CPM. - In the 2 that moved: frequency rose 3.8 -> 5.1 while reach fell 17% and CTR held roughly flat (1.3% -> 1.2%). - If this were auction inflation, all 6 would have moved together with stable frequency. They did not. FIX: The two retargeting ad sets are re-serving a shrinking pool. Cut their budgets by 25% and widen the retargeting window (30d -> 60d), or refresh the audience with a newer event source. Leave the four prospecting campaigns alone, they are healthy. Estimated waste at current pace: about $1,410 per month going to repeat impressions on a saturated pool.
Notice what the output does not do. It does not tell you to slash every budget or blame March. It isolated the two ad sets that actually moved, proved they were saturated rather than repriced, and left the healthy prospecting campaigns untouched. That is the whole value: it stops you from paying for a problem you do not have.
Frequently asked questions
Get the full Meta prompt library
This CPM diagnosis is one of more than a hundred prompts used to run Meta accounts, covering wasted spend, creative fatigue, pre-launch QA, daily monitoring, and weekly reporting. Each prompt ships with its thresholds already written in.

Drop your work email and we'll send this diagnosis framework, the prompt, and the signal table above, as a PDF, run it wherever you want.

