Reading the Meta ads age and gender breakdown
The Meta ads age and gender breakdown reports reach, so a demographic that looks like a winner is often just the cheapest inventory.
The Meta ads age and gender breakdown reports reach, so a demographic that looks like a winner is often just the cheapest inventory.
An ad set has been running broad for 5 weeks at €120 a day. You open Meta Ads Manager, switch the breakdown to Age and Gender, and the top row is women aged 55 to 64. They took 31% of the spend. Nobody in the persona document is over 40.
The first instinct in the room is always the same: cap the age range at 44, exclude the rest, push the money back onto the people you meant to reach. I have made that call and regretted it.
It throws away the most useful thing on the screen.
Short answer: The age and gender breakdown tells you who Meta reached, and Meta reaches whoever is cheapest to reach. Treat a strong row as a hypothesis about language rather than a targeting instruction: write one ad in that group's own words, run it against your control, and see whether it earns conversions at its own cost.
The takeaways
Delivery. Meta's Marketing API documentation defines the age field as "The age range of the people you've reached." The gender field gets "Gender of people you've reached", and anyone who never filled it in shows up as "not specified". Every number in that table hangs off reach.
Reach is something the auction buys on your behalf. It filled your budget wherever impressions were winnable at your bid, not because a model decided those people buy.
Check the "not specified" bucket before anything else. Those are profiles with no gender on them, and in some accounts it takes a double-digit share of spend. A 45/40 split with 15% unassigned is a much weaker signal than 55/45 on a full table.
Because reach has a price and the price is not flat. A group you can buy at a €4 CPM gets three times the impressions of a group at €12 for the same money. It shows more clicks and usually more purchases in absolute terms, purely on volume.
Which column you sort by decides the answer. Sort by purchases and the cheap group wins by construction. Sort by cost per purchase, or by ROAS, and the ranking often flips, because the expensive group bought fewer and better placed impressions.
So "our real audience turned out to be 55 plus" is frequently a discovery about CPM. The honest phrasing: this group was cheap enough that we accidentally ran a large test on them.
Less reliably than the layout suggests. Meta's Marketing API documentation warns that with certain breakdowns applied, "Off-Meta web metrics will continue to be returned from the API, however will not contain the breakdown value", and that mobile metrics "will not be returned anymore when queried with these breakdowns".
There is a 30 second check that almost nobody runs. Add up the purchases across every row, then compare that total to the same campaign with no breakdown applied. If the sum is lower, results are missing, and every per-row cost you computed is too high.
I once watched a team plan an age exclusion off a table missing about a fifth of its conversions. Spend still lands on the rows when results go missing, so the error runs one way: segments look worse than they are.
Rarely, and almost never off one month of a broad ad set. An exclusion narrows the pool the delivery system optimizes inside, it does so silently, and it keeps working long after the reason for it expired. The more careful guides reach for bid adjustments before hard exclusions, and that ordering is right.
Three cases earn a hard cut: you cannot legally serve the group, your product carries a real minimum age, or a special ad category already restricts the targeting so it was never yours to choose. Cost is absent from that list.
Everything else belongs upstream in the creative and the offer, where the pool stays wide. I worked through how much to hand the delivery system in broad vs detailed targeting.
Give it a creative instead of a filter. Take the group the table keeps handing you, write one concept in their words (their objection, their register, their reference points), and run it against your control at the same budget and offer. The row asked who is being reached. The ad asks whether they can be sold.
Fund it properly. Meta's documentation puts the learning phase at roughly 50 conversion events per ad set, so at a €25 CPA you are looking at something near €1,250 before that ad's cost per purchase deserves a decision. A row carrying 6 purchases across a month is noise wearing a demographic label.
Either result pays for itself. A win hands you a message. A loss at matched spend tells you the row was inventory pricing all along.
A demographic row names a room. It cannot tell you what to say once you are in it, because people respond to words rather than to an age band. That gap is why a persona built on quotes beats one assembled from a delivery report.
It is the discipline the audience side of Adscalr runs on. Personas come in sets of 4 to 6, each backed by at least 3 real quotes from named sources, with 2 to 4 verbatim phrase markers per quote, and any demographic attached is labelled an AI estimate. Quotes map to Eugene Schwartz's 5 awareness stages, so a persona carries language and a stage rather than an age band.
The method sits on the audience intelligence page, and the evidence bar a persona has to clear is in buyer persona research for paid ads. Keep opening the breakdown every month, and read it as a report on where your money went.
This is the thinking behind Adscalr.
See the product →