
Your ads optimise forthe wrong thing.
The short version
Meta optimises for whatever event you feed it. That sounds obvious until you look at what most app and SaaS accounts are actually feeding it: installs, form fills, trial starts. Events that are cheap, immediate, and easy to measure.
The events that predict revenue are none of those. Activation, subscription, renewal, a sales call that turns into a client - they happen later, sometimes much later. Whether Meta can actually use them comes down to three things: whether anyone sends the event back, whether the platform will report it, and whether it happens soon enough after the click for Meta to connect the two. Get all three right, which is very achievable on Android with a short trial, and Meta will optimise toward real revenue. Miss one and the system gets very good at buying people who install and never pay, while everything inside Ads Manager looks healthy.
Fixing that has an order to it: first the event you optimise for, then whether Meta can actually see that event, then how campaigns are structured around it, then what each buyer is told and where they land, and then the creative itself. Almost everyone starts at the creative. That is understandable, because creative is the strongest lever on the list. It is also why starting there hurts: aim the strongest lever at the wrong event and it finds the wrong people faster.
Current as at August 2026. Meta and Apple revise this measurement layer regularly. The principles hold longer than the specific caps and windows, so check the linked documentation before you act on any number here.
Here is the pattern I see most often. An app or SaaS company has been running Meta for six months. Spend is up. Cost per install is flat, maybe even improving. The creative team is shipping. And revenue has not moved in a way anyone can point at. The instinct is to go harder at the creative, and that instinct is not unreasonable. Creative is often the thing most people in the team feel qualified to comment on, and since Meta's Andromeda retrieval system started reading the ad itself to decide who should see it, creative has effectively become the targeting.
Creative is still one of your most important levers - I wrote a whole post on why it now does the targeting work. The argument here is about sequence, not importance. Creative is the accelerator. This article is about the steering.
A recent subscription consumer app we inherited made the pattern concrete. The account had been optimising for installs for months. Cost per install looked fine. Trial-to-paid had barely moved. We changed the optimisation event to a day-three activation milestone their own product data already showed predicted paid retention, fixed the signal path so Meta could actually see that event, and left the creative mostly alone for the first month. Installs got more expensive. Paying subscribers per dollar of spend moved the other way. Same creative. Different event. Different customers. Greater revenue. Better ROAS.
The harder problem for a mobile app or a SaaS product is that the conversion that matters often happens days after the click, inside an app or a CRM, on platforms that delay or withhold the data. That changes the order of the work. Here is the order I would use.
Step 1: Decide which event actually predicts revenue
Your optimisation event is a commercial decision, and it gets made whether or not you make it. Somebody set the account up. They picked an event - install, trial start, lead - usually because it was the one already firing. Meta has been diligently maximising that choice ever since, and it will keep doing so until someone changes it.
The question worth asking is narrower than it sounds: which single event, when it happens, most reliably means this person becomes a paying, retained customer? For a subscription app it is rarely the install, and often not the trial start either. It is more likely the second session, or finishing onboarding, or a trial that survives past day three or day seven. For a SaaS product with a sales process, it is not the demo request. It is the demo your team accepted as a qualified buyer.
Then comes the constraint that spoils the obvious answer. The further down the funnel an event sits, the better it predicts revenue and the less often it happens. Meta learns by example, so an event that fires a handful of times a week never gives it enough examples to find a pattern, and it fills the gap with increasingly expensive guesses. Meta's own guidance is that an ad set usually settles into stable delivery after about 50 results in a week. Treat that as a planning figure rather than a hard rule, since the effective threshold varies by campaign type and objective. The principle holds either way: if you pick an event that cannot clear the bar then the account never gets out of first gear.
There is a third constraint, and it is the one that catches subscription apps. The event has to happen soon enough after the click for Meta to connect the two. On Android and on the web, where attribution is deterministic, Meta's standard click window is seven days. A seven-day trial converting on day seven sits inside it. A thirty-day trial converting on day thirty does not: the event still fires and your measurement partner still records it, so you can see it in your own reporting, but Meta cannot tie it back to the ad and so cannot learn from it.
iOS works differently here, and in this one respect more generously. Apple's conversion windows run out to day 35, so a late subscription can still be encoded in the third window's conversion value. What comes back is coarse and slow rather than precise, so in practice it informs the account more than it trains delivery. Either way, if your trial runs longer than the window your platform allows, you need an earlier proxy that moves with paid conversion.
So you are not looking for the event that best predicts revenue. You are looking for the one furthest down the funnel that still happens often enough, and soon enough, to teach the system something. That trade-off is the whole decision, and only someone who knows the unit economics and the payback window can make it.
Get it wrong and you do not get a broken campaign. You get an efficient one aimed at the wrong people, which is considerably more expensive, because it looks like it is working and nobody intervenes for two quarters.
How this is actually set up
Meta's Aggregated Event Measurement limits each app or domain to eight conversion events that can be configured and prioritised. Eight sounds generous until you notice it is a ranked list rather than a menu. Most accounts fill it in whatever order events happened to get implemented, which means the ranking reflects engineering history rather than commercial value.
On iOS you also map a conversion value schema, which is where post-install behaviour gets compressed into the small amount of data Apple will return. The events that best predict retention belong in the earliest window, because that is the data arriving soon enough to influence delivery while the campaign is still running.
Step 2: Fix the signal path before you touch creative
Once you know which event matters, the next question is whether Meta can see it happen. The route from a user doing something valuable to Meta receiving a usable record of it is what I mean by the signal path, and for most app and SaaS accounts it is partial, delayed, and missing exactly the events that matter most. The system is not failing to optimise. It is optimising correctly against an incomplete picture of your business.
On iOS this is structural rather than fixable. Apple will not tell Meta what any individual person did in your app. It reports on groups of users instead, after a deliberate delay, so you are steering with information that is days old by design. That is not a bug to engineer around, it is a constraint to plan around, and the practical consequence is that daily optimisation decisions on iOS are mostly reactions to noise. If your team changes campaigns on Monday based on Sunday's numbers, they are reacting to data that has not finished arriving.
For SaaS the problem runs the other way. The data exists, in your CRM, and nobody is sending it back to Meta. Meta knows who filled in the form. It does not know which of those people your sales team disqualified in the first thirty seconds. Until you close that loop, you are asking the system to find more of a population you have never described to it, and then blaming the creative when it finds the cheap half.
This is the least glamorous work in the account and yet it has the highest return, because every decision downstream of it is made on the data it produces.
How this is actually set up
Mobile apps. You need one integration that reports app events to Meta, and you get a choice of four: the Meta SDK, the Conversions API, the App Events API, or a mobile measurement partner. These are alternatives, not a stack. The Meta SDK alone is the simplest route if Meta is the only channel you buy. A measurement partner is the better choice the moment you run more than one network, because it gives you one attribution source across all of them instead of each network scoring its own performance. Map the conversion value schema before launch, whichever route you take.
If you run both, make one of them the owner. Having the Meta SDK and a measurement partner in the same app is common and fine, but only one can control conversion values. AppsFlyer's connection URL tells the Meta SDK to stop setting them, and skipping that step leaves the two overwriting each other. One reason to keep the Meta SDK alongside a partner: deferred deep linking on Meta app campaigns requires it.
Then there is Apple's timing. Apple runs three conversion windows from first app launch - days 0 to 2, days 3 to 7, and days 8 to 35 - then reports on each window only after a further random delay of 24 to 48 hours for the first and 24 to 144 hours for the second and third. There is a setting that closes a window early, but the reporting delay still applies, so there is no configuration that makes iOS data arrive quickly. Judge on rolling windows rather than days.
SaaS. The Conversions API is now Meta's recommended route for offline events, and the older App Events and Offline Conversions APIs are no longer recommended for new integrations. Send every CRM stage as it changes rather than only the final one, matched on the Meta lead ID or hashed contact details. Note the limit that catches teams out: an event timestamped more than seven days before you send it causes Meta to reject the entire request, so uploads need to run at least daily.
The principle either way. Send back the stage your team accepted as a qualified buyer, not the form fill, and optimise toward that. Meta's Conversion Leads product can do this automatically if you clear its volume bar. Below that volume the product is closed, but the principle is not - you still send the qualified stage and aim the campaign at it.
Step 3: Build ad systems, not piles of ads
Nobody buys a subscription off one ad. They see something that names a problem, ignore it, see something else three days later that explains how the problem gets solved, look you up, forget about you, then convert a fortnight later from an ad that takes full credit for work it did not do. The unit worth judging is the system, not the ad, because the last click harvests what the sequence earned.
Practically that means one system per buyer profile. By system I mean one campaign built around one kind of buyer, holding a set of ads that each do a different job - naming the problem, explaining how it gets solved, making the offer, proving it with a result, answering the obvious objection - rather than five versions of the same claim competing for the same attention. A buyer profile is a different person with a different problem, not a different creative idea. And retargeting belongs inside that campaign rather than in one of its own, because splitting it out means judging the ads that close separately from the ads that earned the close.
Now the part that stops this being a straight copy job. That playbook was built for web funnels, and it does not transfer intact to a mobile app campaign. Meta's app product is Advantage+ app campaigns, which automates audience, placement, budget and creative selection. For anyone on iOS 14.5 or later, Meta is blunt about how much choice you have here: manual setup is not supported, only Advantage+. You are not hand-sequencing a five-ad funnel in that environment. The system decides who sees what, and it is generally better at that than a person with a spreadsheet.
What survives the translation is the discipline rather than the mechanics. One system per buyer profile survives. Judging at system level survives. Giving each ad a distinct job survives, because even when the machine picks the order it can only pick from what you gave it, and five variations of one claim is a sequence with a single move in it. What does not survive is the assumption that you control the order.
Here is the sting, and it is why step one is step one: automation optimises a bad event faster than any human could. Advantage+ is an extremely efficient way to buy the wrong customer, and the better your creative is, the faster it gets there.
If you have read this far and recognised your own account, this is the point where an outside read usually saves three months of spending in the wrong direction. and we will look at what your campaigns are actually optimising for and whether you're heading in the right direction.
Step 4: Match each system to an awareness stage
Your market sits on a spectrum. At one end are people actively shopping for what you sell. At the other are people who do not yet know their problem has a name. The shopping group is the smallest and the most expensive, because every competitor is bidding for them. The unaware group is the largest and the cheapest to reach, and it takes the most skill to convert.
Each group responds to a different argument. People already comparing options want offer, price, trial terms and how painful switching will be. People who know the problem but not the options want claims and proof: what your mechanism is, why it works, who it has worked for. People who do not know the problem is solvable want explanation and story, and will ignore anything that opens with a feature.
What goes wrong is predictable. Most accounts run one message at all three, and it is almost always the message written for the most-aware group, because that message is the easiest to write and it converts the people who were going to convert anyway. Then the account looks acceptable, refuses to scale, and everyone concludes the channel is tapped out. It is not tapped out. You have been talking to the smallest slice of it.
Which brings us to the step people skip entirely. If a system targets one buyer profile at one awareness stage, it needs a destination built for that person. For SaaS that means a page per profile rather than routing everything to your homepage. For an app it means something more awkward: your store listing is the landing page, and it is the one part of the funnel most teams never touch. Spend real money teaching a problem-unaware person that their workflow is broken, then drop them on a product page whose first screenshot says “sync across your team”, and you have paid to educate someone who bounces at the last step.
How this is actually set up
You are not stuck with one listing. Apple supports up to 70 custom product pages per app, each with its own screenshots, previews and promotional text, reachable through a unique URL and invisible to everyone else unless you deliberately assign keywords to it. Google Play supports up to 50 custom store listings, which can vary the name, icon, descriptions and graphics, and can be targeted by country, user state, search keyword or campaign.
One honest caveat. Both stores document this targeting for their own ad products, and the variants are reachable by URL. Whether a given Meta campaign type will hand a user off to a specific variant is not something either company documents, so verify the behaviour in your own account before you build a strategy on it. The underlying point survives either way: the first two screenshots and the opening lines of your description are the last step of every ad system you run, and they should echo the ad that sent the person there.
Step 5: Volume to discover the angle, discipline to run the system
This is the step where creative earns its reputation. With Andromeda reading the ad itself to decide who should see it, the concepts you put into the system determine which people it can reach at all. The open question was never whether creative matters. It is how much of it you should be making at any given moment, and that answer changes depending on what you already know.
Two common pieces of advice contradict each other here. One says write five new ads a day and judge each one on click-through and cost per lead. The other says run few ads, and never judge an individual ad, because the system produced the result. Most people pick a side. The useful move is to notice they are describing different stages of the same job.
Volume is how you pay for information. While you still do not know which angle lands, cheap variations are the fastest way to find out, and static images are the cheapest information you can buy. The warning attached to that stage is the important half: if you do not know what a good ad looks like yourself, you cannot tell whether the output you just generated is good, so you will confidently spend money on plausible rubbish.
Discipline is what you owe the account once the search has succeeded. When the angle is proven, the variation left to test is presentation - same argument, different setting, format or presenter. That is the discipline stage, and at that point generating fifty fresh pitches a week is not testing. It is resetting the experiment every Monday and wondering why nothing compounds.
The failure mode I see most is a team stuck in permanent discovery. New angles every week, forever, so the account never accumulates enough evidence about any single one to know whether it worked. Ad fatigue gets blamed. Usually the problem is that nothing ran long enough to fatigue.
Wherever you are in that cycle, the raw material is the same, and it is not a workshop. Hooks come from language people already use: your App Store reviews and your competitors', the relevant subreddits, support tickets, the free-text box on your churn survey, and recordings of your own sales calls. Take the emotionally charged phrases verbatim. Alongside that, keep a swipe file of ads in your category that have been running for months, because longevity is the only public signal of profitability you get. For the organic side of the same discipline, see the organic creator engine playbook.
Step 6: Read the account like an operator
What you choose to look at decides what you get more of, so this is not a reporting question. If your weekly review ranks ads by return on ad spend inside a sequenced system, you will systematically kill the ads that do the early work and keep promoting whichever one happened to be last. Do that for two quarters and you will have optimised your way down to a bottom-of-funnel account that only converts people who already knew about you.
The other habit worth building is having a written expectation before you change anything. Not a formal test plan - just a sentence saying what you think will happen and why. Without it, every result is explainable after the fact, and a year of changes teaches you nothing you can carry into the next quarter.
How this is actually set up
Judge systems, not ads, and judge them on rolling windows sized to the delay you are living with rather than on days. On iOS you are reading delayed cohort data, not users, so a bad Tuesday is usually incomplete data rather than a signal. And resist the urge to build one view spanning iOS and Android: Meta may not aggregate conversion metrics across those campaign types, so the combined report can quietly return no data at all, which is worse than having no view.
The single most useful number nobody tracks is the gap between what the platform reports and what your own revenue data says. Watch that gap monthly. When it widens, your signal path has drifted, and everything the account has learned since is being learned from a worse picture.
Six signs your account is optimising for the wrong thing
Most of these you can answer without digging through Ads Manager. If more than two are true, the problem is upstream of your creative.
1. Your cost per install or per lead improves while revenue stays flat.
The clearest symptom of all. The system is getting better at the thing you asked for, and you asked for the wrong thing.
2. Meta's numbers and your revenue numbers disagree, and nobody has reconciled them.
Two versions of the truth means decisions get made on whichever one is closer to hand, which is always the platform's.
3. Nobody in the business can tell you which event the account optimises for.
If the most consequential setting in your acquisition spend is undocumented, it was inherited rather than chosen.
4. You change iOS campaigns based on this week's Ads Manager numbers.
iOS numbers arrive days late and describe groups rather than individuals, so that weekly decision is usually a decision on incomplete data.
5. Every campaign points at the same landing page or the same default store listing.
Whatever the ads promised, everyone arrives at one message, so Meta only learns from one kind of convert and the last step of every system leaks.
6. Creative gets replaced weekly and the offer has not changed in a year.
Permanent discovery. The effort is landing on the easiest layer to change, not the one holding performance down.
If more than two of the signs above are true, start here.
Book a free Strategy Session and we will look at what your campaigns are actually optimising for - and whether that event can ever produce the revenue you want.
No obligation. 30-min call. 100% free.
FAQ: Meta ads for app and SaaS user acquisition
What event should my app optimise for in Meta ads?
The event furthest down your funnel that still happens often enough for the system to learn from. For a subscription app that is rarely the install, and often not the trial start either - more likely finishing onboarding, a second session, or a trial that survives past day three or day seven. For SaaS with a sales process it is the stage your team accepted as a qualified buyer, not the form fill. The trade-off is depth against frequency: Meta's guidance is that an ad set usually settles into stable delivery after about 50 results in a week, so an event that fires a handful of times cannot train anything, no matter how well it predicts revenue. There is a timing limit too: on Android and the web, Meta's standard click attribution window is seven days, so an event landing after that cannot be tied back to the ad. On iOS, Apple's conversion windows run out to day 35, but the data that comes back is coarser.
Can Meta optimise for subscriptions if my free trial is 14 or 30 days?
Usually not directly, and the answer differs by platform. On Android and the web, attribution is deterministic and Meta's standard click window is seven days, so a subscription converting on day 14 or day 30 falls outside it. The event still fires and your measurement partner still records it, so you see it in your own reporting, but Meta cannot attribute it to the ad and cannot learn from it. On iOS, Apple's conversion windows run out to day 35, so a late subscription can still be captured in the third window, though what comes back is coarse and delayed enough that it informs decisions more than it trains delivery. With a seven-day trial the timing works on both. With a longer trial, the practical move is an earlier proxy that moves with paid conversion, such as completing onboarding, a key activation action, or reaching a certain usage depth in the first few days. Validate that the proxy actually correlates with paid retention in your own cohort data before you optimise toward it.
Why are my app installs cheap but my subscriptions flat?
Because the account is optimising for installs and it is succeeding. Meta maximises whatever event you give it, so if that event is the install, it will reliably find people who install readily. That is a different population from people who pay and stay. Swapping creative does not fix it, because the creative is not what selected the audience. Changing the optimisation event, and making sure Meta can actually see the deeper event, is what fixes it.
Can iOS and Android run in the same Meta app campaign?
No. A campaign promotes a single app, every ad set in it has to promote that same app, and Meta's error reference states plainly that iOS 14 campaigns can only promote iOS apps. The split is enforced by the product, so it is not a decision you get to make. What follows from it is the part worth planning for: the two platforms report on different timelines, and Meta may not aggregate conversion metrics such as installs and purchases across iOS 14 and non-iOS 14 campaigns, so a single report covering both can come back empty. Budget for them, and judge them, as two separate operations.
Does this mean ad creative does not matter?
No, the opposite. Meta's Andromeda retrieval system reads your ad's format, hook, tone and subject matter to decide who should see it, which makes creative much closer to targeting than decoration. The argument here is about sequence, not importance. Creative decides who Meta shows you to. The optimisation event decides what Meta is trying to find. Excellent ads pointed at an event that does not predict revenue will acquire the wrong users very efficiently, which is why the event comes first. Fix the event and the signal path, and the same creative starts compounding instead of leaking. For the creative side of the picture, see what the Andromeda update means for lean app teams.
How many ads do I need in a Meta campaign for an app?
Fewer than most advice suggests, and each one should do a different job rather than restate the same claim. Meta's own guidance for iOS 14+ campaigns is to include up to six creative options in the ad set. High volume belongs in the discovery phase, when you are still searching for the angle that lands. Once the angle is proven, additional ads mostly add noise, and adding one resets the ad set's learning. Note that this is a question about volume, not quality: how many concepts to run at once is a different question from how good each one needs to be.
Do Advantage+ app campaigns replace campaign structure decisions?
They replace some of them. Advantage+ app campaigns automate audience, placement, budget and creative selection, and for anyone on iOS 14.5 or later Meta states that manual setup is not supported at all. What you still own are the decisions that matter most: which event the campaign optimises for, which buyer profile it serves, and what it hands the user off to. Automation is not a substitute for those, and it will optimise a badly chosen event faster than a person ever could.
How do I send qualified leads back to Meta for a SaaS product?
Through the Conversions API. As a lead moves through your CRM, send each stage change back to Meta as its own event, not only the final sale, and match it on the Meta lead ID where you have one, or on hashed email or phone if you do not. That loop is open to any account. Conversion Leads is a separate Meta optimisation product on top of it, and it is currently limited to native Lead Ads (Instant Forms). Meta's published eligibility bar is at least 200 leads a month, daily uploads, a target stage that usually happens within 28 days of the lead, and a lead-to-stage conversion rate between 1% and 40%. If you are under that volume, Conversion Leads itself is not available yet, but the principle still is: send back the stage your team accepted as a qualified buyer, and optimise toward that stage however your volume allows.
How long should I leave a Meta app campaign before judging it?
Longer than most teams allow, especially on iOS, because Apple's data arrives late by design. Apple measures in three conversion windows after first launch - days 0 to 2, days 3 to 7, and days 8 to 35 - then adds a random send delay after each window closes: 24 to 48 hours for the first postback, and 24 to 144 hours for the second and third. So a day-two conversion can still take another one to two days to show up, and later windows take longer still. Daily decisions are therefore mostly reactions to incomplete data. Judge on rolling windows sized to that delay, and expect a new campaign to need at least 5-7 days before its numbers start to give you meaningful insights. Android and web usually settle faster because attribution there is deterministic rather than delayed postbacks.
Does any of this work on a small budget?
The signal work matters more at a small budget, not less. A large account can absorb the cost of training on a weak event, because sheer volume eventually teaches the system anyway. A small account cannot - every wasted impression is a bigger share of the total. What changes is scope: fewer buyer profiles, fewer systems, and some platform features with published volume thresholds will not be open to you yet. The order of operations does not change. If you want a view on what your budget can realistically buy, .
