
Alex Black
Co-Founder / CEO
Your client asks why last month’s conversions changed after you sent the report. Meta Ads reporting means pulling results from Ads Reporting inside Ads Manager, or from Meta’s API, which is what reporting tools read. The API’s numbers can keep changing for 28 days. A client report holds up when it names its attribution setting, flags those 28 days and keeps a fixed copy of finished months.
Get those three right and that awkward email gets a one-line reply.
Meta’s built-in tool is Ads Reporting. It creates, customizes, exports, shares and schedules reports on your ad results. You need administrator, advertiser or analyst access to the ad account. Then:
Two rules in that last step matter for client work. Meta’s scheduling page says “Cross-account reports can’t be scheduled for email,” so only a single-account report goes out on its own. It also says “only people with permissions on the ad account can access the report,” and that anyone else should get an exported file. Meta’s help pages disagree on whether a share link gets around that, so for a client who isn’t on the account, send the file.
The one your ad sets use. Pick anything else and your report won’t match Ads Manager.
Meta sets attribution per ad set. Its standard settings decide how long after an ad a conversion still counts:
Meta’s attribution page doesn’t name a default, so open a few ad sets for each client and check what’s set. If they don’t agree, Meta says results “cannot be compared in the Campaign Overview table” across ad sets with different attribution models, and points you to its Compare Attribution Settings feature.
While you’re in there: the Results column only counts actions tied to the campaign’s objective. Other things your ad led to can show up in other columns, so “results” and “conversions” on the same row can be two different numbers.
The rule we’d follow: write the setting on the report, in words the client can read. Something like “Conversions: 7-day click and 1-day view, as set on the ad sets.” Keep it the same month to month. If you do change it, say so on that month’s report, or the comparison with last month mixes two ways of counting.
On January 12, 2026, Meta’s Ads Insights API stopped returning the 7-day view and 28-day view attribution windows. Meta’s change notice says requests for them “will return no data.” So a sheet or dashboard that asked for either window now has empty columns where those conversions used to be. If your reports never used them, nothing changed for you.
The API still returns 1-day click, 7-day click, 28-day click, 1-day engaged view and 1-day view, plus default values based on each advertiser’s attribution settings.
In Meta’s API, 28 days after they’re reported. Meta’s Insights best practices page says insights “refresh every 15 minutes and do not change after 28 days of being reported,” and that metrics “may continue to update for a couple of days after an ad has completed.”
That’s the first thing to check when a client asks. Say your October report went out on November 3. By then, only data reported up to October 6 had passed the 28-day mark. The 25 days after it were still open, so most of October could change after you hit send.
In the report, that means:
This holds for anything that reads Meta’s API: a Google Sheet, a Looker Studio report, or an AI assistant answering questions about a client’s account through a Facebook Ads MCP server.
Totals go back 37 months, both in Meta’s API and in a single-account report in Ads Reporting. That covers year-over-year. The rest doesn’t come close:
Meta’s January 2026 notice says requests that start before those limits “will return no data.” Reach has its own rule, in place since June 10, 2025: a standard API query with a breakdown that starts more than 13 months back comes back without reach, or fields built on it like frequency. Think reach by age for a campaign two years ago.
Those are Meta’s limits. Its docs do describe slower asynchronous requests (ones that run in the background) that can still return some older breakdown data, up to 10 per ad account per day. We wouldn’t build a client’s year-over-year page on that. Keep your own copy of the breakdowns you report: reach by age or placement, frequency, anything hourly.
One more 2026 change, if you report on US TV markets: since June 22, 2026, the API no longer supports the dma breakdown. Market-level data comes from comscore_market now, so a report broken down by DMA needs updating.
Go down this list before you rebuild anything.
Give each client their own report that refreshes on a schedule. A client reads it without you in the room, so put these at the top:
The summary lines do more work than the charts. Mark Meyerson’s piece on PPC reports in Search Engine Land puts it well: “clients are time-poor. A summary page centralizes insights so readers can get the big picture quickly.”
SyncWith keeps that report current. We pull each client’s Meta data into a Google Sheet on a schedule or into a Looker Studio report through our Facebook Ads connector. Facebook Ads was the most-connected source in our Google Sheets add-on and Looker Studio connectors in Q3 2026: 11,846 new connections and Looker Studio setups, 51% of those with a source recorded. One tip from our help center: if Meta leaves conversions out of a long date range, set an explicit attribution window in the report’s settings. For the build itself, see our walkthroughs on exporting Facebook Ads to Google Sheets and a Facebook Ads dashboard in Looker Studio.
Send a client’s Meta Ads data to Google Sheets on a schedule
Start on the free Hobby plan, with 35 refreshes a month.
Set up Facebook Ads in Google Sheets