Meta doesn't sell impressions. It auctions an equation.
Everyone asks "what do Meta ads cost?" like there's a rate card. There isn't. Every impression is auctioned with this formula, straight from how Meta ranks ads:
Total value = your bid × estimated action rate + user value. Highest total value wins the impression. Not the highest bid — the highest equation.
Sit with what that means. "Estimated action rate" is Meta's prediction that this person clicks/buys from this ad. Your effective bid is multiplied by it. An ad twice as likely to get action can win the same impression at half the cash bid. This is the mechanical reason boring creative is expensive — you're not being punished aesthetically, you're bringing a smaller number to a multiplication.
So what do people actually pay?
| Metric | Typical (US ecom, broad) | What it means when it's worse |
|---|---|---|
| CPM | $10–$25 ($30–50+ in Q4) | Auction thinks nobody wants action on your ad |
| CPC (link) | $0.50–$1.50 | CPM problem or CTR problem — decompose it |
| CTR (link) | 1–2% | <0.7% = your hook, not your targeting |
| Frequency (7d) | <2.5 prospecting | 3.5+ = you're paying the fatigue tax below |
CPC decomposes as CPM ÷ (CTR × 10). $20 CPM at 1% CTR = $2.00 clicks. Same CPM at 2% = $1.00. Every cost complaint is one of those two numbers — find which before touching anything.
The fatigue tax, mechanically
As frequency climbs, action rates fall (people don't click things twice), so your multiplied total value shrinks, so you win fewer auctions at your bid, so Meta charges more to force delivery. Rising frequency + rising CPM + falling CTR on the same creative isn't the algorithm "breaking" — it's the equation repricing your staleness. The fix is never a bid change; it's new creative entering the auction with a fresh action-rate estimate.
Learning is a purchase too
Meta needs ~50 optimization events per ad set per week to predict well. Under that, predictions are wide, delivery is cautious, costs run hot ("Learning Limited"). Practically: your budget must afford ~50 conversions weekly at your expected CPA, or consolidate ad sets until it does. Data is part of your CAC — accounts that split $50/day across six ad sets are paying six learning taxes to learn nothing.
An insider detail that saves you money
Meta transcodes every ad image to compressed JPEG at delivery — your 9MB ultra-crisp PNG doesn't reach a single retina (the API hard-rejects images over ~8MB anyway; we've hit the wall, live). Obsess over the idea and first 0.4 seconds, not the file fidelity. The auction pays for stopping thumbs, not pixel counts.
Your ceiling, not the market's
Breakeven ROAS = 1 ÷ gross margin. Max affordable CPA = AOV × margin. At $55 AOV and 67% margin you can pay up to ~$37 a customer; at 40% margin, $22. Same auction, different business. The stores that "can't make Meta work" usually don't have an ads problem — they have a ceiling problem, and the fix is AOV and margin, not another interest test.
Want this run on your actual account?
MoonSignal is a private AI media buyer inside Claude — it reads your real numbers, finds the leaks, and builds the fix. You approve every change.
Get a free live account teardown →