How do you build a Meta Ads report your client can trust?

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.

How do you make a Meta Ads report in Ads Manager?

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:

  1. Open Ads Reporting, under Analyze & report in Ads Manager’s main menu. Meta’s own help pages label that menu a little differently from page to page, so look for the closest match. You can also get there from the Export dropdown: under Export data, pick Create custom report.
  2. Create a report. Start from a blank custom report or one of Meta’s suggested templates. To put several ad accounts in one report, open Ads Reporting from your business portfolio (All tools, then Analyze and report) and pick the accounts by name, ID or checkbox.
  3. Choose a layout: a pivot table, a trend line chart or a bar chart.
  4. Add metrics, breakdowns and filters, and set the attribution window. Meta groups metrics into ad performance (reach, impressions), engagement (likes, video views), conversions (website adds to cart) and settings (objective, budget). You can change any of it after you create the report.
  5. Save, then export. A saved report exports as an .xlsx or .csv file. A chart exports as XLSX (formatted or raw data), CSV or PNG. Meta’s pages don’t list a PDF option.
  6. Schedule an email, if you want one. Depending on your version of Ads Reporting, the control is a link under the report name or behind the cog icon. Turn on the schedule email, add subscribers, click apply, then Save.

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.

Which attribution setting should a client report use?

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:

  • Click-through: within 1 or 7 days of a link click on your ad.
  • View-through: within 1 day of someone seeing your ad.
  • Engage-through: within 1 day of an action that isn’t a link click, like a 5-second video play (or 97% of a shorter video).

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.

Why did 7-day view conversions go blank?

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.

When are Meta’s numbers final?

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:

  1. Flag the window on the report. One line in the header does it: “Figures for the last 28 days can still change.”
  2. Pull the last 28 days again on every refresh. Set the report’s date range to reach at least 28 days back, so each scheduled refresh picks up the days that are still moving.
  3. Freeze a month once it’s settled. When a month ends more than 28 days ago, copy it to a history tab and leave it alone. That’s the number you compare against next year.

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.

How far back can a Meta report go?

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:

  • 24 months: a cross-account report in Ads Reporting.
  • 13 months: in the API, breakdowns of unique-count fields (like unique actions) and every hourly breakdown, since January 12, 2026.
  • 6 months: frequency breakdowns in the API, since the same date.
How far back Meta’s numbers goHorizontal bars in months, starting at zero. Totals: 37 months, in Meta’s API and in a single-account report. A cross-account report in Ads Reporting: 24 months. In Meta’s API since January 12, 2026, breakdowns of unique-count fields and hourly breakdowns: 13 months, and frequency breakdowns: 6 months. The last 28 days, under one month, can still change in Meta’s API. Source: Meta developer and help center docs, read October 2026.How far back Meta’s numbers goMonths of history, by where the limit applies0122436 monthsTotals: 37 monthsMeta’s API and a single-account reportCross-account report: 24 monthsAds Reporting, several ad accounts at onceUnique-count and hourly breakdowns: 13 monthsMeta’s API, since January 12, 2026Frequency breakdowns: 6 monthsMeta’s API, since January 12, 2026Still changing: the last 28 daysMeta’s API, before the numbers settleSource: Meta developer and help center docs, read Oct 2026
Blue is how far back you can pull. Red is the part that can still change.

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.

Why doesn’t my report match Ads Manager?

Go down this list before you rebuild anything.

  • It’s something covered earlier on this page. The report counts a different attribution setting than the ad set, the API revised the last 28 days after you pulled, or you’re reading Results as conversions.
  • Reach was added up across days. Reach counts people, and a person reached on Monday and again on Tuesday counts once for the week. Pull reach for the whole period instead of summing days in the sheet.
  • The time zones differ. Meta’s API dates insights in the ad account’s time zone. If you check it against a tool or a teammate that cuts days at midnight somewhere else, a day in one isn’t a day in the other. In a report across several accounts, accounts in other time zones default to the business portfolio’s time zone.
  • An old report has blank “unique” columns. Meta removed a set of metrics labeled unique, like unique adds to cart and unique checkouts initiated, starting October 30, 2024. Reach and unique link clicks stayed.

How do you send a client a Meta Ads report that stays current?

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:

  • Two sentences on what happened this month and what you’ll do next.
  • The attribution line and the 28-day line from above.
  • The date range and the ad account’s time zone.

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.

Other questions about Meta Ads reporting

What is the best tool for reporting Facebook ads?
For one ad account that you read yourself, Ads Reporting inside Ads Manager: it already has your data. For a client, send a Google Sheet or Looker Studio report that SyncWith refreshes on a schedule: it carries your notes and layout, and the client never has to open Ads Manager.
How much does 1,000 views cost on Facebook ads?
That’s CPM, the cost per 1,000 impressions. There’s no fixed price: it moves with your audience and the time of year. To get yours, divide what you spent by your impressions and multiply by 1,000. Or put your numbers into our CPM calculator.
Can I get Meta Ads data into Excel?
Yes. You can export a saved report as an .xlsx file. Meta also still lists Meta Ads Manager for Excel, an add-in for Excel 2016 that builds one report from several ad accounts and can refresh it. It works in Excel only, not in Google Sheets.

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