Otter Growth
    Advisory
    Notes
    ArticleSep 202613 min read

    The Meta cost benchmark for subscription apps does not exist

    Ad accounts fail in knowable ways. The five things I find most often, each with its publisher and its caveat, plus why the Meta cost benchmark for subscription apps does not exist and what to measure instead.

    Michael Berliner
    Michael Berliner
    Product growth advisor & operator

    We spent a week trying to answer one question for a client: what should a consumer subscription app expect to pay for a purchase on Meta, in its own category? Nobody publishes it. The sources with real subscription-category depth read billing data and never see ad spend. The sources with cost data blend every acquisition network into one number. Nothing sits in the middle. And the external bar was never the useful comparison anyway, because the number that decides your budget is the spread between your best and worst ad inside your own account.

    Ad accounts fail in knowable ways. Broken signal, meaning the pixel, the matching and the funnel events. Too little creative and no engine to test it with. No feedback loop from what performed back into the roadmap. And no divergent creative hypotheses for the algorithm to find segments with.

    None of those are exotic. All five of the findings below come out of that list, and none of them require a benchmark to spot.

    The five things I find most often

    1. The account optimizes to installs or clicks, not to the subscribe event

    This is the difference between buying cheap installs and buying subscribers, and it is a measurement fix rather than a creative one.

    One account was optimizing campaigns for landing-page views. Clicks ran about $0.11 with a CTR of 11 to 13%, and none of it was optimizable, because there was no post-click signal at all.

    The upside runs the other way just as hard. Changing the optimization event to a post-install quality signal took install-to-subscription from 2.6% to 8.3%, a 183% ROAS gain (AppAgent).

    2. Money sits in losing ads while a couple of winners carry the account

    Across 550,000+ ads and roughly $1.3B of spend, about 55% of spend reaches winning ads and about 17% goes to losing ones, with 50 to 53% of all creatives classified as losing. Creative hit rate runs about 4% for small accounts up to about 9% for large ones. That is Motion, Creative Benchmarks 2026, Meta only, using the publisher's own approximations, so read it as directional.

    Recoverable spend is usually the largest single number in an ads audit, and it needs no new creative at all.

    3. Teams ship variations and call them tests

    Meta's delivery engine uses visual similarity detection. Same creator plus same setup reads as the same ad regardless of what the script says, so five "variants" can be one ad as far as delivery is concerned.

    Andromeda scores the first three seconds of a video separately from the rest, and processes audio as a delivery signal rather than only a UX one. The testing hierarchy in order of impact is Concept, then Format, then Hook, then Copy, then CTA. Which makes re-editing only the first three seconds of an existing video the cheapest genuinely new variant you can make.

    One thing you will not find here: the hook-rate bands everyone quotes as the healthy and exceptional thresholds. They have no publisher anywhere, and I went looking. We use a version of them internally as a triage heuristic and we never present them to a client as a benchmark, so they are not going in a post either, not even to be argued with. A right number wearing the wrong label is bad. A number with no source at all, repeated until it sounds like one, is worse.

    4. UGC gets over-invested in testimonials and under-invested in tutorials

    Testimonials are easier to produce, which is why the category over-indexes on them. Method-first UGC retains better.

    In finance, tutorial UGC drove 37% better D7 retention than testimonials. In social, tutorials drove 45% better IPM with 17% better D7. Storytelling hooks showed the highest D7 of the formats tested at 8.4%, on only 6% of category ad spend, while GenAI before-and-after captured 40% of category spend and posted the lowest D7 of any format tested.

    All of those come from AppsFlyer's State of Creative Optimization 2025: 1.1 million creative variations, 1,300 apps, $2.4B of spend. That is one dataset, not several. Do not stack these as corroboration, and do not fuse the 37% and the 45% into a range, because they are different verticals measured on different axes.

    5. Creative volume runs below what the account needs to find a winner

    If half of all creative loses and the hit rate is single-digit, the math only works at volume.

    Mid-size accounts ship 6 to 7 creatives per week and top spenders 12 to 19 or more (Motion 2026, publisher's own account tiering, directional). For TikTok specifically, RevenueCat prescribes at least 15 "quantity" ads plus 5 "quality" ads per week, and that split is the distinction they are actually drawing rather than a total to hit.

    And then there is the benchmark you cannot have

    Which brings me to the question underneath most ads audits, and the most useful answer I have ever had to give to it.

    A client asked me a reasonable question. What should we expect to pay for a purchase on Meta, for an app like ours, in our category?

    I assumed this was a lookup. It took a week, and the answer is that the number does not exist.

    Not "we could not find it." Not "it is behind a paywall somewhere." We went through nine publishers, and the thing everyone talks about as though it were public is not published by anyone.

    Nine of them.

    Why the gap is structural, not an oversight

    The sources split cleanly into two groups, and neither group can produce the number.

    The first group has real subscription-category depth. Trial-to-paid rates, renewal curves, revenue per payer, cut by vertical, on large samples. Those numbers are excellent and I use them constantly. They carry no acquisition cost at all, and they never will, because those platforms read billing data. They see the purchase. They do not see the ad spend that produced it, so there is no cost side of the ratio for them to report.

    The second group has cost data. Real spend, real impressions, real CPAs. It gets reported blended across every user acquisition network at once, so Meta sits in a bucket with Apple Search Ads, Google, TikTok and whatever else the sample was buying. A blended CPA is a real number about a portfolio. Not about Meta.

    Nobody sits in the middle. That is the finding.

    Where the Meta cost benchmark for subscription apps would sit, and why that quadrant is empty NINE PUBLISHERS, CLASSIFIED The quadrant everyone quotes from is the empty one Category depth Channel-level ad cost Billing platforms Deep vertical cuts, large samples, zero spend data Nobody The number the whole market talks about SEO roundups Recycled figures, source and label often dropped Blended UA reports Real spend, every network averaged into one figure
    The two groups that publish are each missing exactly the half the other one has.

    The numbers already circulating are worse than missing

    This is the part that changed how I read any benchmark now. The figures people quote as if they were the answer mostly are not.

    One widely quoted cost per install for sports apps turns out to be Apple Search Ads data, relabeled somewhere along the way as paid social. The number is real. The label is wrong, and the label is the entire reason anyone is quoting it.

    A CPM and CPA pair that reads like market consensus traces back to a single vendor's direct-to-consumer panel. It got picked up by SEO roundups, which dropped the attribution, which is how one vendor's client mix became "the industry average" without anyone deciding that it should.

    And a well-known benchmarking vendor that people still cite by name exited the benchmarking business entirely. They are an AI product now. Every figure of theirs still in circulation is stale cache, quoted with total confidence by people who have not checked whether the source still exists.

    A right number wearing the wrong label is worse than no number, because no number makes you go look at your own account and a mislabeled one makes you stop.

    The number that actually decides your budget is inside your account

    Here is what I should have said to that client in the first ten minutes.

    Even if the external benchmark existed, it would not be the number that decides anything. A category median is measured on someone else's unit economics, at someone else's prices, in someone else's markets, against someone else's product. You can be comfortably at the median and still be lighting money on fire.

    The number that decides your budget is the spread inside your own account. Best ad against worst ad, same month, same audience, same objective, same everything. That comparison controls for every variable a category median cannot control for, because both sides of it are you.

    Example of a five times cost spread between the best and worst ad in one account EXAMPLE SPREAD, ONE ACCOUNT, ONE MONTH The gap a category median cannot see Best ad cost per purchase, baseline Worst ad 5x the cost, same audience, same month A spread this wide can quietly eat a fifth of the month's spend while every external comparison you run says the account is performing normally.
    Both bars are the same account. That is what makes the comparison worth acting on.

    A category median can tell you that you are fine while a spread like that quietly eats a fifth of your spend. And the fix is not a strategy deck. It is turning off the worst ad, which you can do this afternoon, for free.

    How to read the dispersion yourself

    You do not need account access or a tool for this. A CSV is enough.

    Pull one month at the ad level, not the campaign level, because campaign averages are where dispersion goes to hide. Filter to ads with enough purchases to be real rather than noisy. Sort by cost per purchase. Then look at the ratio between the top and the bottom of that list, and at how much of the month's spend sits in the expensive half.

    Two things usually fall out. The spread is wider than anyone on the team guessed, and the expensive half is carrying more budget than anyone intended, because budget follows spend history rather than efficiency unless someone makes it stop.

    Run the same cut by creative concept and by audience. Where the spread collapses, that variable is not the driver. Where it stays wide, you have found the lever.

    What this changed about how I audit an account

    I lead with dispersion now, and I treat any external bar as directional, labeled, and secondary.

    That order used to be reversed, and it made the first conversation a debate about whether the benchmark applied instead of a conversation about the ads. Dispersion has no such argument in it. The numbers are the client's own, the comparison is internal, and the action is obvious before the call ends.

    External benchmarks still do work, for sizing a plan and for sanity-checking a market you have never bought in. They belong in the appendix, with the source and the actual definition attached, not in the headline.

    What an ads audit actually hands you

    Since this is what I do, here is the shape of it rather than a pitch, and the header note comes first rather than as a footnote.

    Without creative files, this is a performance and spend-efficiency audit. It says what won and what it cost. It does not say why a given ad won. That distinction sits at the top of the document, not buried in a methodology appendix.

    The body: our goal, a two-to-three sentence read, "do these now" grouped Budget, Creative and Measurement, and the numbers that matter, which are the blended cost per result, the category bar, the in-account dispersion, and the recoverable figure sized as an upper bound rather than a forecast. Two caveats are structural and survive compression by moving rather than by vanishing: the zero-result and below-floor ads where the honest read is "we cannot conclude," and the directional-only benchmarks matched to the closest published industry rather than to this client.

    The appendix carries the benchmark table in full, what we cannot conclude plus data caveats, the tier breakdown and spend efficiency, a next-sprint brief, the full ad table, and a creative teardown only when creative files were supplied.

    Minimal input is an ad-level export CSV plus the exact conversion event name, window and currency. No ad account access needed. A campaign-level or ad-set-level export stops the run, because neither one can show you dispersion, which is the number the whole thing is for.

    The takeaway

    Ad accounts fail in knowable ways, and five of them account for most of what I find: optimizing to the wrong event, money parked in losing ads, variations mistaken for tests, testimonials crowding out tutorials, and volume below what the math needs.

    If you are looking for what an app like yours should pay for a purchase on Meta in your category, stop looking. It does not exist. That figure is not published, the ones circulating in its place are mislabeled or stale, and it would not decide anything even if it were real.

    Open your own account instead. Export a month, sort by cost per purchase, and look at the distance between your best ad and your worst one. That gap is measured on your economics, in your markets, at your prices, and it is almost always bigger than the gap between you and the industry.

    Common questions

    What is a good cost per purchase on Meta for a consumer subscription app?

    There is no published figure for this, by category, for Meta specifically. Subscription benchmark reports read billing data and carry no ad spend, and reports that do carry cost blend Meta together with every other acquisition network. Any single number you see quoted as the category answer is either blended across channels, drawn from one vendor's client panel, or relabeled from a different channel entirely.

    Why do subscription benchmark reports never include acquisition cost?

    Because of where their data comes from. Those platforms sit on the billing side and measure what happens after the purchase: trial starts, conversion to paid, renewals, revenue per payer. They have no visibility into what was spent to acquire the user, so the cost side of the ratio is not theirs to report. That is a structural property of the data source, not a gap they plan to close.

    How do I measure cost dispersion in my own ad account?

    Export one month at the ad level, keep only the ads with enough purchases to be meaningful, and sort by cost per purchase. Compare the best to the worst and check what share of the month's spend sits in the expensive half. Then repeat the cut by creative concept and by audience to see which variable the spread actually tracks. That ratio is measured on your own economics, which makes it directly actionable in a way an external median never is.

    Working on this?

    We help consumer apps and products reach their next phase of growth.

    Growth notes, in your inbox

    New writing on subscription growth and product-led strategy when I have something worth saying. No spam.

    Otter Growth AdvisoryProduct growth for consumer apps and products