
Most teams treat a ROAS drop as a campaign problem. They adjust creative, shift budgets, tweak audiences. Sometimes it helps. Often it does not, because the problem started somewhere the campaign view does not show.
The most common root cause is not what the algorithm decided. It is what the algorithm was given to work with.
The check most teams skip
Before touching anything in an account with declining ROAS, compare two numbers.
Ad platform reported purchases for the past seven to fourteen days. And actual backend orders for the same period.
A gap of up to 10% is within normal range. A gap of 25% or more means the ad platform has been optimizing from a severely incomplete picture of your real conversions. It has been making budget and targeting decisions based on a fraction of what actually happened.
That gap does not close with a creative refresh or an audience adjustment. It closes when the signal is restored. Start with a conversion tracking audit before touching the campaign.
Most teams never run this check. They go straight to the campaign.
Why the gap exists
Conversion data gets lost before it reaches ad platforms in ways that are silent and cumulative.
iOS restrictions prevent browser pixels from capturing purchases made on Apple devices where users opted out. Safari's tracking prevention shortens cookie windows and drops events. Ad blockers block pixels from firing entirely. Server-side implementations drift over time as checkout flows change, new payment providers are added, or site updates break the identifier chain.
None of these failures announce themselves. Events Manager still shows activity. The pixel still fires. Match rates quietly decline and the platform receives fewer usable signals per day without anyone flagging it.
What to look at after the gap
If the conversion gap is significant, three things are worth checking before anything else.
Match rate. On Meta, look at Event Match Quality in Events Manager. Below 6 means the platform cannot connect most events to real user profiles. On TikTok, match rate is shown directly as a percentage. Below 50% is a problem. On Snap, look at matched versus modeled conversions. A high modeled share means Snap is estimating, not measuring.
Event contents. An event firing is not the same as an event being useful. Check that hashed email, hashed phone, and click IDs are included in each purchase event. Events arriving with only IP address and user agent give the platform very little to work with.
Event timing. Platforms weight recent signals more heavily. Conversion events sent in batches hours after purchase carry less optimization value than events sent in real time.
What changes when the signal is clean
Jarir Bookstore saw a 205% increase in purchases visible to Meta and a 182% improvement in ROAS after restoring their conversion signal. Same campaigns. Same budgets. Same creative.
Baytonia saw an 80% increase in ROAS and a 44% reduction in cost per purchase on TikTok after fixing signal delivery.
In both cases the campaigns had not changed. What changed was what the algorithm could see. With complete signals, it built a more accurate model of real buyers and found more of them efficiently.
The order matters
Diagnose the signal before diagnosing the campaign.
If the conversion gap is large and match rates are low, campaign changes are adjustments to a system that cannot see correctly. They add complexity without fixing the root cause.
Clean signal first. Then evaluate the campaign.
The algorithm is only as good as the data it trains on. Give it a complete picture and it does its job well. Give it a partial one and it does the best it can with what it has. Those are very different outcomes.
If your ROAS has declined and you have not checked your conversion gap and match rate, that is the starting point.




