Skip to content
All resources
Meta Ads Reporting Attribution Agency Operations

Delayed Conversions and Ads Reporting: Why Numbers Change

The DashOps Team October 16, 2026 7 min read

You pull a report on the third of the month, send it to your client, and everything looks fine. Later that month they open the dashboard themselves and the numbers for last month have gone up. More purchases. Better cost per result. A campaign you described as underperforming now looks acceptable. Nothing was fixed and nothing was edited. The numbers simply kept moving after you stopped looking at them.

This is delayed conversions, and it is one of the quickest ways for an agency’s Meta Ads reporting to lose credibility. It is not a bug in your reporting, it is not Meta being unreliable, and it is not something you can switch off. But it is something you can account for, and once you build your reporting rhythm around it, the awkward conversation disappears.

Why last month’s numbers are still changing

A conversion in Meta Ads is not recorded at the moment it happens. It is recorded against the day the person saw or clicked the ad, which can be days earlier. That single design decision is what makes historical numbers move.

Three separate mechanisms are at work:

  • The attribution window. Meta’s default setting credits a conversion to an ad when the purchase or lead happens within seven days of a click, or within a day of a view. So an ad that ran on the first of the month can still be assigned a purchase that happens on the eighth, and that purchase gets written back to the first, not the eighth. Pull a report on the third and that sale does not exist yet in your data. Pull the same report on the tenth and it does.
  • Reporting lag. Even inside the window, the event has to reach Meta and be processed. Conversions API events, offline events uploaded in a batch, and pixel events that fire on a slow page can all land after a delay.
  • Retroactive restatement. Meta reviews traffic quality and can adjust impressions, clicks and results after the fact. It means a number is never truly frozen, even once the attribution window has closed.

Add these together and you get the behaviour agencies find unnerving: the further back you look, the more settled the data is, and the closer you get to today, the more provisional it becomes.

The two mistakes this causes

Reporting too early. A report generated on day one or day two of the new month is showing a month that has not finished settling. Every lead-generation or ecommerce campaign with a considered purchase will be understated. You will report a cost per result that is worse than reality, and when the client checks later they will see a better number and reasonably ask why your report was wrong.

Optimising on incomplete data. Of the two, this is the one that costs money rather than credibility. You look at yesterday’s numbers, see almost no conversions on a new ad set, and pause it. But a fresh ad set at the start of a week has almost none of its conversion window elapsed. You are not reading poor performance, you are reading an incomplete row.

How to build reporting that survives it

You do not need to solve this. You need to make it visible and predictable.

Pick a reporting date and never move it. If you always report on the seventh for the previous month, every report has the same amount of settling time behind it, and month-to-month comparisons are honest. If one month is reported on the second and the next on the twelfth, you have made your own trend line unreliable. This is covered as a step in the monthly ads reporting checklist.

State the pull date on the report itself. Every report you send should carry the date and time the data was retrieved. It costs nothing, and it turns “your report was wrong” into “the report was accurate as of the seventh, and the window has since closed”. In DashOps, PDF and Excel reports are generated on demand, so the snapshot is fixed at the moment you pull it. Put that moment somewhere the client will see it.

Say the attribution setting out loud. Put the window you are reporting on in the report, in plain words: results are credited to the day the ad was clicked or viewed, with a click window of seven days. A client who has never had this explained will assume a conversion is counted on the day it happened, because that is the intuitive reading.

Separate the settled period from the live one. In a monthly report, the previous month is settled enough to draw conclusions from. The current month-to-date is not. Label it as such, or leave it out of the headline comparison entirely.

Judge new campaigns on a full window, not a partial one. Give a new ad set enough elapsed time for its conversion window to have run before you call it. Anything shorter is a guess dressed up as data.

What this means for weekly and daily reporting

The shorter the reporting period, the larger the proportion of it that is unsettled. In a monthly report pulled a week into the new month, every day of that month has had its click window elapse. In a report covering the last seven days, the most recent days have had almost none of theirs.

That does not make weekly reporting useless, it changes what it is for. A weekly view is for spotting direction and catching problems, not for final verdicts on cost per result. Delivery metrics are recorded on the day they happen rather than credited backwards, so impressions, clicks and click through rate are the most dependable things to watch at that cadence. Conversion metrics on the most recent days should be treated as a floor rather than a final figure. A weekly digest works best when it is framed as an early signal, with the monthly report as the record. DashOps can send one per ad account on a daily, weekly or monthly cycle.

Daily checking has the same issue in a more extreme form. Yesterday’s conversion numbers are the least complete numbers you will ever look at.

Handling the client conversation

When a client notices numbers have changed, the worst response is to sound surprised. The best response is to have already told them.

Add one sentence to the top of every report explaining that results are credited back to the day of the click or view, so figures for recent days continue to fill in for a short period afterwards. Say it once, in the same place, every month. Presented up front as an explanation of how the platform works, it reads as expertise. Presented after a client has caught a discrepancy, it reads as an excuse.

If a client compares your report against what they see when they log in themselves, expect differences. They are looking at a different pull date, and possibly a different attribution setting or date preset. The fix is the same: a fixed reporting date, a stated pull time, and a stated attribution window.

What to do next

Three concrete changes, in order of how much they help:

  1. Set a fixed reporting date for every client and put it in your calendar as a recurring commitment. This alone removes most of the inconsistency in your own trend data, and it costs nothing to adopt.
  2. Add the pull date and attribution window to your report template so every future report carries them without you thinking about it.
  3. Stop making pause and scale decisions on data younger than a full conversion window. Move those decisions to your fixed weekly review instead of doing them ad hoc.

If your reports are assembled by hand, a fixed date is harder to hold to, because a busy week pushes the reporting job later and the date drifts. Scheduled client reports, sent by email on a day you set once, hold the date for you, and it is worth reading about automating Meta Ads reports if you have not already set that up. For how this fits into the wider monthly process, start with the guide to building a Meta Ads monthly report.

Frequently asked questions

Why do my Meta Ads numbers change after I've already sent the report?
Meta credits a conversion back to the day the person clicked or viewed the ad, not the day the conversion happened. With a seven day click window, a purchase can be assigned to an ad that ran a week earlier. If you pull your report before that window has closed, those conversions are not in your data yet. When they land, they are written back to the earlier date, so a period you already reported on gains results. Reporting lag and Meta's retroactive adjustments move the figure too.
How long should I wait before pulling a monthly Meta Ads report?
Long enough for the attribution window on the final days of the month to have elapsed. With the default seven day click window, that means waiting at least a week into the new month. The exact date matters less than consistency: pick one, apply it to every client and every month, and never move it. A report always pulled on the same day gives you comparable figures month to month, which is worth more than a report that is occasionally a day fresher.
Does this mean weekly Meta Ads reports are unreliable?
Not unreliable, but different in purpose. In a report covering the last seven days, the most recent days have had almost none of their click window elapse, so conversion figures for those days should be read as a floor rather than a final number. Delivery metrics like impressions, clicks and click through rate are recorded on the day they happen, so they are the most dependable thing to watch weekly. Use the weekly view to spot direction and catch problems early, and treat the monthly report as the record.
My client sees different numbers when they log in themselves. Why?
The most likely explanation is a different pull date. Your report is a snapshot from the moment you generated it, and their view is live, so any conversions that landed in between will show for them and not for you. Different date presets and different attribution settings can widen the gap further. The fix is to put the pull date and time on every report and state the attribution window you are reporting on, so both sides know what they are comparing.
Can I turn off delayed conversions or use a shorter attribution window?
You can choose a shorter attribution window, but it does not remove the effect. It shortens the settling period while also crediting fewer conversions to your ads, so performance looks worse for a reason that has nothing to do with how the campaigns ran. Keeping one consistent window across all your reporting, stating which one you use, and building the settling period into your schedule is more useful than trying to engineer the delay away.

See it in your own dashboard

DashOps brings Meta Ads reporting, campaign management, and white-label client portals into one place. Pick the plan that fits how you run ads.

Keep reading

Get in touch

Tell us about your setup or ask a question and we usually get back to you within one business day. Running more than 20 ad accounts? We will tailor a custom plan for you.

DashOps
Product updates

Get more from every Meta Ad

New features, product news, and practical Meta Ads tips, straight to your inbox.

Subscribe to product updates

Join our newsletter for new features, tips, and the occasional Meta Ads playbook. We may also send you an invite to our community. No spam, unsubscribe anytime.

We use your email to send these updates, and we may also use it to send you an invite to our community. When you subscribe, we also report the sign-up to Meta, and to Google if your browser has a Google Analytics cookie, as our Privacy Policy explains.