The last five days of your monthly report are the least true part of it
I delivered a client's June report on July 2. One five-day segment at the end of the month showed 156% return on ad spend, platform-reported, on a Performance Max campaign with brand excluded.
I pulled the same segment again on July 15. Same spend. Same clicks. Same campaign, nothing touched in between. It read 264%.
The campaign did not get better. The report got older.
Conversions get filed under the day of the click, not the day they happen
This is the mechanic that makes month-end reads unreliable, and it is easy to miss because it sounds like a technicality.
When someone clicks an ad on June 29 and buys on July 4, Google Ads does not record that sale on July 4. It files it back against June 29, the day of the click. Google's own reporting documentation is explicit that conversions are reported on the ad interaction date, which is why Ads and analytics tools that use conversion date will never quite agree.
So June 29 is not finished on June 30. It is not finished on July 2 either. It keeps filling in for as long as the conversion window stays open.
This account's primary purchase action ran a seven-day click window. When I read June 26 through 30 at month close, those clicks were between two and six days old. Almost none of them had reached the end of their window. I was reading a period that had barely started resolving and presenting it as a result.
The error has a direction, and it is always the same one
If this were noise, it would not matter much. Noise averages out and you learn to ignore it.
Backfill is not noise. Revenue arrives late, so recent periods always read low on ROAS and high on cost per acquisition. Never the reverse. Google's documentation on conversion lag makes the same point in one line: lag distorts recent data more than older data.
That means every fresh read is biased pessimistic, and the bias is strongest at the exact edge of the reporting period.
Worth separating this from a problem I wrote about in the attribution windows piece, because they look similar and are not. That piece was about conversions arriving after the window closes, which the platform never counts at all. This is about conversions arriving inside the window but after you looked. One is permanent loss. The other is a timing error you inflicted on yourself by reading too soon.
Every monthly report is weakest exactly where attention lands
Here is why this is worse than a rounding problem.
A monthly report ends at the end of the month. That is not an arbitrary place for immature data to sit. It is the part everyone reads hardest, because the last week is where you look for momentum, for whether the recent change worked, for what is happening now. The oldest data in the report is the most settled and the least interesting. The newest data is the least settled and the most scrutinized.
It compounds when you are testing. Change a bid strategy on the 25th, read the report on the 2nd, and the entire post-change period is the youngest data in the file. You will judge the change on the five days least capable of telling you anything, and the direction of the error will make almost any change look worse than it was.
I have watched decisions get made on that, and the pattern is consistent: something new gets cut for underperforming, the number was going to mature into acceptable, and nobody circles back to check because the campaign is already off.
What to do about it, concretely
Four changes, in order of how much they help.
Measure your own lag before you set any rule. Segment your campaigns by days to conversion, or pull the lag distribution in your attribution reports. You are looking for how long it takes the bulk of conversions to land. Every rule below is calibrated off that number, and it varies enormously by business. A $25 impulse purchase and a $500 considered one behave nothing alike.
Do not judge a spend change in less than your average lag. If your buyers take a week, a three-day read tells you about your tracking, not your campaign.
Expect meaningful movement out to roughly twice your average lag. In this account, the average ad-involved journey ran about seven days and the number was still moving thirteen days after month close. Two weeks is not a paranoid recheck horizon. It is the horizon.
Label maturity on the report itself. I flag any period that has not cleared the conversion window as attribution-incomplete, in the deck, on the slide, next to the number. It costs one line and it prevents the specific failure where someone screenshots a fresh figure and it becomes the accepted truth of what happened.
The habit underneath all of it
A number does not become true because a reporting period ended. Calendars are an accounting convenience. Customers do not know when your month closes and they do not finish deciding on the 30th so your dashboard can settle.
The useful reframe is that every performance number carries an age, and age changes what it means. The same figure that is unreliable on July 2 is solid on July 15, unchanged, because the thing that changed was not the data but how much of it had arrived.
That is most of what measurement work actually is. Not better dashboards, but knowing which numbers are ready to be believed and which ones are still filling in. It is a large share of what my analytics and reporting engagements come down to. If you are making budget calls off month-end reads right now, tell me what you're working on and I will tell you how much your numbers are still moving.