The pattern below comes from one account with more than $1.2 million in Meta ad spend. It matches what I have seen across many other accounts I have managed.
ROAS optimization tends to perform better when a user can keep generating revenue over time. When the product is one fixed purchase, like a yearly subscription, the gap closes.
Which bidding fits which app
| How the app makes money | Revenue after the first purchase | Bidding that tends to win |
|---|---|---|
| Weekly subscription | Recurring renewals | ROAS bidding |
| Casual or mobile game | In app purchases | ROAS bidding |
| Coins, credits or packages on top of a subscription | Extra purchases | ROAS bidding |
| Single annual plan | Little or none | Purchase bidding may still compete |
Either way, the table holds only if Meta receives accurate purchase values, which I cover under the requirement below.
Why
Purchase optimization helps Meta find people likely to buy. ROAS optimization helps Meta find people likely to generate more revenue. ROAS bidding only has something to work with when the purchase values Meta receives differ from user to user.
The CPIs can look brutal. Keep your eye on ROAS anyway, because that is the number this campaign is built to move. When I ranked 38 Meta campaigns by day 0 ROAS and by cost per purchase, day 0 ROAS predicted day 28 ROAS better than cost per purchase.
The requirement
Meta has to receive enough accurate purchase value data to optimize on. Check what actually reaches it. In most setups the second week of a weekly subscription never reaches Meta as value, while an extra coin sale does. Verify that in your own event stream instead of assuming it.
Getting that value right is its own piece of work, and it is what signal engineering covers. I went further into optimizing for user value over cheap conversions in How subscription apps scale Meta ads beyond $100K, written for Adapty.