August 4, 2026
Your Facebook ads ROAS looks bad. You might still be profitable.
Most people kill a Facebook ad campaign for the wrong reason. They open Ads Manager, see a ROAS of 0.8, and turn it off. On the surface that looks obvious. You put in a dollar and got 80 cents back. But for a lot of businesses, that number is lying to you, and turning the campaign off is the actual mistake.
Here is the short version. Day one ROAS only tells the truth when a customer pays you most of what they are ever worth on the first purchase. The moment your real money comes from repeat purchases, subscriptions, or in app spending, ROAS in Ads Manager stops being a measure of profit. It becomes a measure of how impatient your reporting is.
Why ROAS lies, especially for apps
Say your app charges 2 dollars for the first purchase and most of the revenue comes later, from renewals and upgrades. Meta only sees that first 2 dollars. So even a genuinely profitable campaign shows a ROAS well under 1, because the platform is comparing your full ad spend against a tiny slice of what that customer will actually pay you.
This is why so many app and subscription businesses think their ads do not work. The ads are fine. The measurement window is wrong. You are judging a customer relationship on the first five minutes of it.
The number that actually matters
Stop asking “what was my ROAS today” and start asking two simpler questions:
- What does it cost me to acquire a paying customer? That is your cost per purchase, or CPA.
- What is that customer worth to me over their lifetime? That is your LTV.
If your cost per purchase is lower than your LTV, you are making money. That is the whole game. Everything else is noise.
A real example from an account I worked on. The business was running an astrology app and the ads looked like a disaster on the surface, a ROAS below 1 and the founder ready to shut it all down. Once we fixed the tracking and could finally see lifetime value, the picture flipped. We drove the lowest cost per purchase down to around 5 dollars against a customer LTV of 22 dollars. Acquiring a customer for 5 dollars who is worth 22 is not a failing campaign. It is a profitable, scalable one that surface ROAS was hiding.
Broken tracking makes this ten times worse
There is a second problem sitting underneath the first. Even if you know to look at CPA and LTV, you cannot trust either number if your tracking is broken. And on Meta today, tracking breaks constantly.
The usual suspects:
- Conversions API (CAPI) is not sending clean server side events, so Meta is missing or double counting purchases.
- SKAdNetwork is collapsing your iOS data into a delayed, aggregated blur.
- A tool like RevenueCat is set up wrong, so subscription and renewal events never make it back to the ad platform.
- Web pixels are firing on the wrong pages or not deduplicating against server events.
When any of that is off, your ROAS is not just pessimistic, it is fiction. You are optimising a live ad budget against numbers that do not reflect what really happened. Fixing this is usually the single highest leverage thing a struggling account can do, and it is the part most people skip because it is technical and boring.
How to actually check if your ads are profitable
Before you pause anything, run this quick gut check:
- Find your true cost per purchase. Not cost per click, not cost per add to cart. What does one paying customer actually cost you right now?
- Estimate your real LTV. Look at repeat purchase rate, renewals, and average revenue per customer over 3 to 6 months, not day one.
- Compare the two. If CPA is comfortably below LTV, the campaign is working, even if Ads Manager shows a scary ROAS. The LTV to CAC calculator does this in about a minute, and the breakeven ROAS calculator will tell you the number you actually have to beat.
- Sanity check your tracking. Do a test purchase and confirm it shows up correctly in Events Manager, in CAPI, and in your analytics tool. If it does not, fix that before you trust a single number.
If you do those four things and your acquisition cost still sits above what a customer is worth, then yes, you have a real problem. But now you are solving the right one.
The red flags that actually matter
Surface ROAS is a bad alarm. These are the signals worth reacting to:
- Your cost per purchase is climbing and your LTV is not.
- New customers are cheap but they never come back, so LTV is thin. On subscription apps this usually traces back to what you told Meta to optimise for.
- Your tracking cannot even tell you a clean cost per purchase, which means you are flying blind.
Those are real reasons to change course. A low day one ROAS on a repeat purchase business is not.
Bottom line
ROAS in Ads Manager is a snapshot taken far too early. For any business where the real money arrives after the first purchase, it will make healthy campaigns look broken and push you to turn off ads that were quietly making you money. Fix your tracking so you can see the truth, then judge every campaign on one thing: does it cost you less to acquire a customer than that customer is worth.
If your ads are live but the numbers do not make sense, that is usually a tracking and measurement problem, not an ads problem, and it is exactly the kind of thing I dig into on a teardown call. Get the measurement right and a lot of “failing” accounts turn out to be winners.
Ads live but the numbers do not make sense? That is what I fix.