Facebook Ads export to dashboard
Reading a Facebook Ads export without double counting Reach.
Export from Ads Manager, drop the CSV here, and the two reporting date columns collapse into one usable axis. Results is read alongside Result indicator so a purchase row and a lead row are never added together, Reach is treated as a deduplicated count rather than something to total, and Frequency is checked against Impressions over Reach so you can see when a file has been sliced too finely.
Prefer the full explorer? Open the app, or start from the generic dashboard builder.
Results is a column with no fixed meaning
Almost every metric in this export means one thing. Results does not. It is whatever the campaign optimized for, and the neighboring Result indicator column is where the meaning lives: actions:offsite_conversion.fb_pixel_purchase on one row and a link click objective on another. Sum the Results column across a mixed account and you have added purchases to leads to video views and produced a number that describes nothing. Cost per result inherits the same problem, since its denominator changes row by row.
The second thing to know before you total anything is that Reach is a person count, not an event count. Facebook deduplicates people within whatever window you exported, so daily Reach summed over ninety days counts the same person up to ninety times. Impressions add up fine. Reach does not. Frequency is simply Impressions over Reach, which means the frequency of a summed range is not the average of the daily frequencies either.
How to export from Facebook Ads
- Open Ads Manager and pick the level Go to the Ads Manager table and choose Campaigns, Ad Sets or Ads with the tabs above it. The level you are on is the level you export, and mixing levels between two files later will not join cleanly.
- Choose your columns and breakdowns Use the Columns menu to build the metric set, then Breakdowns and Time to add a day breakdown. Without a time breakdown the whole date range collapses into one row per ad and there is no trend to chart.
- Set the attribution window before exporting The attribution setting sits in the Columns menu as Comparing Windows or Attribution Setting. It is applied at export time, so the same date range gives different Results under a seven-day click window than under a one-day one.
- Export the table data Use the Reports or Export control at the top right and choose the CSV format rather than XLSX. Ads Manager offers to export only what is on screen or the full table, and the full table is what you want.
- Drop the file here Campaign name, Ad set name and Ad name become three levels of breakdown chips, and the spend line is drawn from Amount spent with the currency read from the header.
The Amount spent column carries the currency in its own header text rather than in the values, which means two ad accounts on different currencies produce headers that do not match. Rename one before merging or the merger will treat them as separate columns.
Try with sample Facebook Ads data (the same columns, 96 rows, no upload needed).
What the dashboard shows
Every panel below is built from a column that is actually in the export, named the way Facebook Ads names it.
- Spend over time. Reporting starts becomes the axis once the two date columns are reconciled, with delivery status available as a filter on top.
- Results by objective. Grouped by Result indicator first, so purchases, leads and link clicks are counted in their own buckets rather than one pile.
- Cost per result, compared fairly. Only within an objective, because a cost per lead and a cost per purchase have nothing to say to each other.
- Reach against Impressions. Shown as two separate figures with Frequency derived from them, and a warning when the export granularity makes Reach uncomparable.
- Creative level ranking. Ad name ranked by CTR and by cost per result, which is the only view that tells you which creative to kill.
- Return on spend. Purchases conversion value against Amount spent, per campaign, for the rows where a purchase objective actually applies.
Reporting starts,Reporting ends,Campaign name,Ad set name,Ad name,Delivery,Amount spent (USD),Impressions,Reach,Frequency,"CPM (cost per 1,000 impressions)",Link clicks,CTR (link click-through rate),CPC (cost per link click),Results,Result indicator,Cost per result,Purchases conversion value
Ads Manager export traps
- Two date columns, not one. Reporting starts and Reporting ends both appear on every row. With a daily breakdown they are the same date; without one they span the whole range and there is no time series to build.
- Results is polymorphic. Its meaning is defined by Result indicator on the same row. A mixed-objective account cannot have its Results column summed, and Cost per result cannot be averaged.
- Attribution is baked in at export. Change the window and re-export the same dates and the Results change. Old files and new files are not comparable unless the window matched, and nothing in the CSV records which one you used.
- Reach is deduplicated people. It cannot be added across days, ad sets or campaigns, because the same person appears in several rows and Facebook has already removed the duplicates within each row only.
- Frequency is a ratio, not a metric to average. It is Impressions divided by Reach for that row. Averaging the column across rows gives a number that matches no real recomputation.
- The CPM header contains a comma. It is quoted in the file, which is correct CSV, but a naive split on commas turns one column into two and shifts every field after it.
Group by Result indicator before you total Results, treat Reach as a count of people rather than a number to add, and write the attribution window down somewhere outside the file. That is most of what separates a useful paid social report from a confident wrong one.
Frequently asked questions
Why do my Results numbers change when I re-export the same dates?
The attribution window is applied when the report is generated, not when the ads ran. If you exported under a one-day click window last month and a seven-day click window today, the same campaign will show more Results in the newer file. Nothing in the CSV records which window was used, so note it alongside the file or you will spend an afternoon hunting a discrepancy that is not real.
Can I add up the Reach column?
No. Reach counts unique people within the period of each row, so the same person who saw your ad on Monday and Thursday appears in both rows. Summing gives you something between Reach and Impressions that is neither. If you need reach for a whole quarter, export the quarter as a single row and let Facebook deduplicate it, then use the daily file only for spend and impressions.
What is the Result indicator column for?
It names what the Results column counted on that row. One campaign optimized for purchases and another for leads both write into Results, and only the indicator tells them apart. Treat it as the unit label for the number beside it. The dashboard groups by it before totaling anything, which is why the Results panel shows several bars instead of one headline figure.
How is Frequency calculated?
Impressions divided by Reach, for that row and that period. Because Reach cannot be summed, Frequency cannot be recomputed from summed columns either, and averaging the Frequency column across rows produces a number with no meaning. Read it per row, or export a single row for the whole period if you want a frequency figure for the campaign as a whole.
Why does my CSV have two date columns?
Ads Manager always writes Reporting starts and Reporting ends because a row can cover any span. With a daily time breakdown the two are identical and either one works as your axis. Without a breakdown they hold the first and last day of the whole export and every row shares them, which means the file has no time dimension at all and you need to re-export with the day breakdown on.
Is my ad spend data sent anywhere?
No. The CSV is parsed by JavaScript in your browser tab and the charts are drawn from memory. An Ads Manager export reveals budget, creative naming and performance, which is exactly the kind of competitive detail nobody should be pasting into an unknown web tool. There is no upload endpoint here and nothing persists once you close the tab.
Related tools
Load a Facebook Ads export and see Results split properly
96 rows across a quarter with three objectives mixed together, a quoted CPM header, deduplicated Reach and a Frequency column that will not average.
Open the sample Facebook Ads dashboard