Why Facebook ad results change days later
Yesterday's Facebook ads ROAS keeps rising because late purchases are credited back to the day of the click. How to read recent days before you act.
Yesterday's Facebook ads ROAS keeps rising because late purchases are credited back to the day of the click. How to read recent days before you act.
Tuesday morning you open Ads Manager and Monday looks bad. The ad you launched on Saturday sits at 1.4x ROAS, under your line. You pause it. On Friday you pull the week for a client report, and the same Monday now reads 2.1x. Nobody touched the ad. Monday just finished counting.
I have made that call. It took me a while to see that the report was still open.
Short answer: Facebook ads results change after the day is over because Meta credits each purchase to the day of the click or impression that earned it, and those purchases keep arriving for days inside the attribution window. Every recent day is still filling up, so the last few days always read worse than they will finally settle.
The takeaways
Yesterday's ROAS keeps going up because Meta files a conversion under the date of the ad interaction, and the purchase can come days later. Someone clicks on Monday and buys on Thursday. Thursday's purchase lands in Monday's row.
Meta's documentation sets the default window at 7-day click plus 1-day view, so a single day can keep collecting purchases for a week. Some events also reach Meta late, like batched server-side events and modeled conversions for people Meta cannot observe directly. Those get written back too.
So every day in the report has a different age. Last Tuesday is finished, yesterday has had one day to collect, and Ads Manager prints them in the same font. (Which window to pick is its own decision, covered in 7-day vs 1-day click.)
Attribution lag punishes the newest ads most, because their entire history is young. An ad that has run for 30 days has maybe 25 finished days and five unsettled ones, so the lag barely moves its average. An ad that launched three days ago is made almost entirely of days that are still filling.
Put the two side by side and the old ad wins on paper before the new one has had a fair read. Rules and gut calls made on recent data lean toward keeping what already runs and cutting what is new, the opposite of what a testing program is for.
Short tests suffer the same way: a three-day test judged on day four is judged on numbers that will still climb. Longer consideration widens the gap. A €15 impulse buy settles fast. A €400 purchase people sleep on does not.
Nobody can give you a universal number. Meta does not publish a fixed settle time, and the true answer depends on how long your own buyers take and how your events reach Meta. A figure you read in a guide describes someone else's account.
You can measure yours in a week. Pick one day and write down its reported purchases and revenue the next morning, then at three days and at seven. Repeat for a few days. The shape repeats: a big jump early, then a climb that flattens.
Where it flattens is your settle time. Everything newer is provisional. The table doubles as a correction factor: if your day-one numbers usually end up a third higher by day seven, you know roughly what a fresh day will become. Redo it after a price change or a switch in how your events are sent.
Read the last few days by comparing days of the same age and judging decisions on settled windows only. Two habits do most of the work.
First, shift your decision window back. If your days settle after four days, make kill and scale calls on a range that ends four days ago. Use the fresh days to catch disasters (a broken link, a runaway spend), never to rank creatives.
Second, compare like with like. Yesterday at one day old against last week's days at one day old tells you something. Yesterday against a finished day tells you mostly about time. For a new ad against an old one, line up their first three days, each read once settled.
When a client asks why Monday looks weak on Tuesday, the answer is one sentence: "Monday is still counting, ask me on Friday."
Attribution lag and the learning phase hit the same ads in the same week, and they push in the same direction. A new ad set is in learning, so delivery is still unstable, and its days are unsettled, so the reported results are low. Two separate reasons for weak early numbers, both temporary.
Meta's documentation says an ad set needs roughly 50 optimization events to exit learning, and significant edits can restart it. That is the expensive mistake. Cutting budget over an unsettled bad day can reset learning, which buys another round of unstable delivery and another batch of young days.
The safer order is boring: let the ad clear learning, let its days settle, then judge it. The longer version is in how long to run Facebook ads before changes.
Adscalr does not model conversion lag and does not restate past days. It reads what the connected account reports, the same numbers you see, so an unsettled Monday is unsettled for it too.
What it has is two guards that blunt the damage. The first is Bayesian shrinkage with format-specific priors: a new ad's thin early score gets pulled toward what its format usually does, so a few weak or lucky days cannot crown or bury it. The second is the learning-phase lockout: no automation rule acts on an ad under 5 days old or under €200 of spend, which keeps automatic kills off the least settled data.
Neither replaces your settle table. They make the early-days mistake harder to automate. The scoring side of this is part of our ad intelligence approach.
This is the thinking behind Adscalr.
See the product →