Paid Ads · 7 min read
What good looks like: healthy Meta ads metrics
Most people read Meta ads metrics backwards. They see a low CPM and a cheap cost per result and conclude the campaign is healthy, when those exact numbers are often the first sign something is wrong. Cheap is not the same as good. The cheapest impression Meta can find is usually the lowest-intent one, and a number that looks great on the surface can be sitting on top of a funnel that converts nobody.
This guide teaches you to read the six metrics that actually tell you what is happening: CPM, cost per result, CTR, cost per ThruPlay, landing-page-view rate, and frequency. It also walks through the single most common and most expensive failure mode in self-serve Meta accounts, the Audience Network rewarded-video leak, and gives you a repeatable daily check to catch it. One thing to hold onto throughout: every benchmark below is a range that shifts with your niche, your geography, your objective, and the season. Treat them as orientation, not as universal truth.
The six metrics, and what each one is actually telling you
CPM (cost per thousand impressions) is what Meta charges to put your ad in front of people. It is an auction price, so it moves with competition, audience, placement, and creative. For many feed and reels campaigns it lands somewhere in the low tens of dollars, but a tight, high-value B2B audience can run several times higher and a broad, cheap placement can run far lower. A suspiciously low CPM is not a win. It usually means you are buying cheap, low-intent inventory.
Cost per result is the bottom line: what you pay for the action you actually care about. That action depends on your objective, so read it objective-by-objective. For a sales campaign it is cost per purchase, for lead gen it is cost per lead, and for a video-views campaign it is cost per ThruPlay. Never compare cost per result across two campaigns with different objectives. They are measuring different things.
CTR (click-through rate) tells you whether the creative earns the click, and cost per ThruPlay tells you whether a video actually holds attention (a ThruPlay is a 15-second view, or a full watch if the video is shorter). Landing-page-view rate is the share of clicks that become an actual loaded page, and it is where broken tracking and slow pages hide. Frequency is how many times the average person has seen your ad in the window you are looking at. Read these together, never in isolation. A great CTR with a terrible landing-page-view rate means people are clicking and then never arriving, which points at a broken link, a slow page, or pixel trouble, not at your creative.
Benchmarks are ranges, not finish lines
There is no universal good number on Meta, and anyone who hands you one is selling certainty they do not have. What follows is rough orientation for typical feed and reels campaigns, not a scorecard. Your real benchmark is your own account's recent history.
CPM often sits in the low tens of dollars, but expect it higher for narrow or premium audiences and during high-competition seasons like Q4. Cost per ThruPlay for genuine viewers is usually a few cents. A landing-page-view rate above roughly 50 percent is healthy, and below roughly 25 percent suggests a broken landing page, slow load, or the wrong audience entirely. Frequency above roughly 4 per week on a feed or reels placement is where ad fatigue tends to set in. None of these are laws. They are starting points you should replace with your own account's numbers as soon as you have them.
Here is the part most guides skip: a number can be wrong in both directions. Too expensive flags a problem you will go looking for. Too cheap flags a problem you will celebrate by mistake. A cost per ThruPlay that drops to a fraction of a cent is not your hook suddenly going viral. It is almost always a sign that your budget has wandered into junk inventory, which is exactly the leak the next section is about.
The signature leak: Advantage+ Placements and rewarded video
Meta's Advantage+ Placements is on by default, and it optimizes for the cheapest impression it can find. In practice that often means it diverts the bulk of your budget to the Audience Network, and specifically to rewarded video inside mobile games, where a player is shown your ad to earn an in-game reward. Those impressions are dirt cheap and the ThruPlay numbers look spectacular, because the viewer is opted in to watch the video to the end to collect the reward. They also tend to produce little real intent: few landing-page views, few add-to-carts, few conversions.
This is not a rare edge case. Operators routinely find the large majority of a campaign's spend draining into Audience Network rewarded video, sometimes well over 90 percent, often concentrated in one country that was never the target, all while the top-line CPM and cost per ThruPlay look great. The leak is dangerous precisely because the surface metrics reward it. If you only watch CPM and cost per result, you can conclude the campaign is your best performer right up until you notice it has produced almost no customers.
The lesson is structural. Cheap inventory will always win an auction that optimizes for cheap, so the only durable defense is to control where your ads can run, not to hope the optimizer makes good choices on your behalf.
How to detect and fix the leak yourself
Detection is a two-minute job once you know where to look. Pull a performance breakdown by placement using the breakdown dimensions publisher_platform and platform_position, and pull a second breakdown by country. In a healthy account, spend on publisher_platform equal to audience_network should be essentially zero unless you deliberately put it there, and you should not see meaningful spend on a platform_position like rewarded_video. On the country breakdown, watch for any one country eating far more or far less than its fair share, which is the same optimizer chasing cheap impressions wherever they live.
The fix is to take back control of placements. Switch the ad set from Advantage+ Placements to manual placements and exclude the Audience Network, and in most cases also exclude Messenger, in-stream video, search, right-hand-column, and Marketplace, so your budget stays on Facebook and Instagram feed, reels, and stories where intent lives. Keep manual placements as your default unless you have a specific, tested reason to open inventory back up.
One caveat that bites people repeatedly: if you later edit an ad set's targeting and leave the placements field out of that update, Meta can silently switch Advantage+ Placements back on, and the leak quietly returns. The rule is simple. After any targeting edit, re-pull the placement breakdown and confirm your placements are still exactly what you set.
Read the funnel, not just the top line
Every metric above lives at one stage of a pipeline: impressions to reach, to 3-second and then deeper video views, to landing-page views, to add-to-cart or lead, to purchase or subscribe. A leak at any stage starves every stage after it, so the skill is reading where the drop happens. A weak hook shows up as people falling away between the 3-second view and the first quartile (25 percent) view. A broken landing page or wrong audience shows up as clicks and views that never become landing-page views.
If you build video-view custom audiences to retarget watchers, Meta only accepts a fixed set of engagement thresholds (for example a 3-second watch plus quartiles like 25, 50, and 75 percent, and a deepest-watch tier). The exact thresholds and the exact API field names change over time and the platform rejects anything outside its accepted set, so do not invent your own. Pull the current accepted values from Meta's audience tools or Marketing API docs before you build the rule, because getting a threshold name wrong silently breaks the audience you are trying to grow.
Watch for creative fatigue too. When CPM trends up more than roughly 20 percent week over week, or frequency climbs past about 4, the creative is likely tiring and you should refresh the hook. Budget changes will not fix a fatigued creative or a weak hook. Those are creative problems, and only new creative fixes them.
A 7-minute daily check, and where an agent helps
You can keep an account honest with a short routine, and the order matters because the cheap-looking failures hide near the top. Step zero is funnel integrity: confirm the audiences and creative that are actually live match what you think is running, because green surface metrics are not evidence the funnel works. Step one is account health: scan for disapprovals and delivery issues. Step two is yesterday's performance against your own recent targets. Step two-b, the most important step, is the placement and geo audit from above. Step three is audience growth. Step four is downstream signals: site traffic, signups, and whether your conversion events are firing at all. Step five is a short written status so you can spot trends across days.
The discipline that ties it together is comparing every number against context, not against a myth of a universal good number. Read today against your own 7-day average and your since-launch baseline. A CPM is only high or low relative to what this account normally does.
This is exactly the kind of repetitive, easy-to-skip vigilance that an agent is good at. AdsBud is a transparent, approve-first AI agent for Meta and Google Search ads. It reads the account on a daily check, scores every campaign against today's number, your 7-day average, and your since-launch baseline, flags leaks like the Audience Network drain, and proposes the fix for your one-click approval. It is read-only by default, and you talk to it in plain language. The metrics, and the judgment, stay yours. The agent just makes sure the daily check never gets skipped.
Frequently asked
Is a low CPM or a cheap cost per ThruPlay always good?
No, and this is the most common misread on Meta. The optimizer can drive your CPM and cost per ThruPlay down by buying the cheapest, lowest-intent inventory it can find, like Audience Network rewarded video. Those numbers look great while producing almost no landing-page views or conversions. A suspiciously cheap cost per ThruPlay (a fraction of a cent) is a warning sign, not a win. Always read cheap metrics next to downstream results like landing-page views and purchases.
What are normal Meta ads benchmarks?
There is no universal benchmark, because every number shifts with niche, geography, objective, and season. As rough orientation for typical feed and reels campaigns, CPM often sits in the low tens of dollars, cost per ThruPlay is a few cents for genuine viewers, a landing-page-view rate above about 50 percent is healthy and below about 25 percent suggests trouble, and frequency above about 4 per week risks fatigue. Treat these as starting points only. Your most reliable benchmark is your own account's 7-day and since-launch history, not any external number.
How do I check if my budget is leaking to the Audience Network?
Pull a performance breakdown by placement using the publisher_platform and platform_position dimensions, and a second breakdown by country. Spend on publisher_platform equal to audience_network should usually be near zero, and you should not see meaningful spend on platform_position rewarded_video. On the country breakdown, watch for one country taking far more or less than its share. To fix it, switch to manual placements and exclude the Audience Network.
Why did my placement leak come back after I edited the ad set?
If you edit an ad set's targeting and omit the placements field in that update, Meta can silently re-enable Advantage+ Placements, which sends budget back to the cheapest inventory including Audience Network rewarded video. The fix is a habit: after any targeting edit, re-pull the placement breakdown and confirm your placements are still exactly what you set. Never assume an edit preserved your manual placements.
See what AdsBud catches on your account
AdsBud runs this check for you around the clock, flags the leaks, and proposes each fix for your one-click approval. Read-only by default, cancel any time.