Most meta ads dashboard guides start with the same advice: pick the right panels, track spend and ROAS at the top, break out campaigns below it. That advice is not wrong, but it treats the dashboard as a design problem. The design is the easy part. The data underneath it has two separate ways of quietly lying to whoever is reading the dashboard, and neither one shows up as an error.
The first is ordinary and permanent. Meta's own Ads Insights documentation states that insights refresh roughly every 15 minutes and "do not change after 28 days of being reported." Read that the other way around: for the first 28 days after an ad runs, the numbers your dashboard shows for that date range are not final. A campaign's reported conversions from eleven days ago can still move today, with nothing broken and nothing to fix.
Why a meta ads dashboard shows different numbers two days in a row
The 28-day stabilization window is not a bug report, it is how Meta's attribution pipeline works. A click or view today can still convert next week, and the Ads Insights API keeps revising the attributed conversion count for that original ad until the window closes.
Most dashboard builders never read this far into the documentation because the dashboard still loads and the numbers still look plausible. The problem shows up downstream: a client asks why last Tuesday's ROAS in this week's report doesn't match last week's report for the same Tuesday, and the honest answer is that both numbers were correct for the moment they were pulled.
Meta's documentation also caps how far back certain fields go. Meta's developer blog on these limits states hourly breakdowns and unique-count fields are limited to 13 months of historical data, frequency breakdowns to 6 months, while non-breakdown total values stay available for up to 37 months. A dashboard that silently drops a year-over-year hourly comparison because it crossed the 13-month line, instead of showing why the chart went empty, creates the same confusion as the 28-day stabilization issue, just on a longer clock.
What quietly went blank on January 12, 2026
The second problem is a specific, dated breaking change that most "how to build a meta ads dashboard" guides published before it haven't caught up to. Meta's developer blog announced that, starting January 12, 2026, the Ads Insights API would stop returning the 7-day view (7d_view) and 28-day view (28d_view) attribution windows.
That is a real change to what the API will answer, not a formatting update. Before that date, a dashboard could request action_attribution_windows=28d_view and get back a conversion count attributed to anyone who had merely seen the ad in the prior 28 days, even without clicking. After that date, the same request is accepted but the window itself no longer exists on Meta's side.
Here is the part Meta's own announcement does not spell out, and the part that matters most for anyone who already built a dashboard before the change: what happens to a query that still asks for one of the removed windows. Seresa's integration notes on the change found the API "returns a valid response with empty values" rather than an error. A script or dashboard built to request 28d_view keeps running without complaint. It just stops returning a number for that specific metric, and nothing in the response tells you to look.
Building a meta ads dashboard that flags its own blind spots
None of this means Meta Ads data is unreliable to build on. It means a dashboard that only displays numbers, without checking the conditions under which those numbers can silently go stale or empty, is incomplete by design. Three checks close most of the gap:
Confirm the attribution window actually used, not just requested. The Ads Insights API response includes the attribution window attached to each returned value. Comparing that against the window the query asked for catches a silent fallback before a stakeholder does.
Separate "still finalizing" from "final." As an illustration, a dashboard that visually distinguishes the trailing 28 days from everything older, say with a lighter shade or a "preliminary" label, sets the right expectation instead of presenting a moving number with the same confidence as a settled one.
Alert on an unexpected zero, not just a missing field. A metric that returns 0 or empty while spend for the same ad set is clearly nonzero is a stronger signal of a broken query than a metric that is simply absent from the response.
This is the kind of pipeline work that belongs next to the dashboard, not inside a single spreadsheet formula. Our data analytics consulting team builds these checks into the ingestion layer itself, before the data ever reaches a chart, which is a different problem than designing the chart. If the current setup is a manual export into a sheet every Monday, our breakdown of Google Sheets reporting automation covers where that approach runs into its own quota and refresh limits.
Where the Meta data fits in a bigger reporting pipeline
A Meta Ads dashboard rarely lives alone. Most agencies and in-house teams pull Meta data alongside Google Ads, GA4, and CRM data into one blended view, which means a silent attribution gap in the Meta feed can throw off a blended ROAS number without any single source looking broken on its own. Our n8n examples post covers the reporting-aggregator pattern we use to pull multiple ad platforms into one pipeline, which is the same architecture that makes a per-source data-quality check like the ones above actually catch a problem before it reaches a client report.
Building that pipeline, rather than wiring individual exports by hand, is custom integration work. Our workflow automation team builds the scheduled pulls, the attribution-window validation, and the alerting on top of whichever platforms feed a given dashboard, so a change like the January 2026 attribution deprecation gets caught in a monitoring step instead of a client's inbox.
Key takeaways
- Meta's own documentation confirms Ads Insights data keeps changing for up to 28 days after being reported, so a dashboard reading recent date ranges is never showing a fully final number for that window.
- On January 12, 2026, Meta stopped returning the 7-day view and 28-day view attribution windows in the Ads Insights API, a change documented on Meta's own developer blog.
- A query that still requests one of those removed windows does not error. It gets back a valid, empty response, which is why the gap tends to go unnoticed until someone questions a number that quietly dropped.
- Historical data has hard limits too: 13 months for hourly and unique-count breakdowns, 6 months for frequency breakdowns, 37 months for totals without a breakdown.
- A dashboard that checks the attribution window actually returned, flags unfinished date ranges, and alerts on unexpected zeros catches these failures before a client does.
If a meta ads dashboard built a year ago hasn't been checked against this specific change, that is the first thing worth auditing before trusting this month's ROAS number.



