Templates
Facebook Ads report template for clients (attribution setting included)
A Facebook Ads client report should show Amount spent, Results, Cost per result and Purchase ROAS for the agreed dates. It should name the attribution setting behind those numbers, add one line on what changed, and keep payments that cleared on a line of their own. Meta's own help pages call Amount spent approximate and say results can use modeling. So the template writes the setting down and never adds the payment line to Meta's numbers.
Want this live for every client?
This template keeps a payment line because platform columns can't show what cleared. To fill that line from real payments, see Thexly for agencies.
The template
Two blocks. The first is what Meta Ads Manager reports, using Meta's column names so the client can find each one in their own account. The second is what the payment processor recorded.
| Block | Line | What goes here |
|---|---|---|
| Meta (as Meta reports it) | Reporting dates and account time zone | The exact dates, in the ad account's time zone |
| Meta (as Meta reports it) | Amount spent | Meta's figure for the dates |
| Meta (as Meta reports it) | Results | The count, plus the result type (for example, website purchases) |
| Meta (as Meta reports it) | Cost per result | Amount spent divided by Results |
| Meta (as Meta reports it) | Purchases conversion value | The purchase value Meta attributes to the ads |
| Meta (as Meta reports it) | Purchase ROAS | Purchases conversion value divided by Amount spent |
| Meta (as Meta reports it) | Attribution setting | As set on the ad set, written out in full |
| Meta (as Meta reports it) | Reach and Frequency | Optional. Useful when the client asks about creative fatigue |
| Meta (as Meta reports it) | Change note | One thing you changed in the account and the date |
| Payments (from Stripe) | Payments that cleared | Payments for the same dates |
| Payments (from Stripe) | Refunds | Refunds in the same dates |
| Payments (from Stripe) | Note | Not added to Meta's row |
Prefer a sheet? Download the template.
Running Google too? Use the Google Ads report template for clients for that account. It has its own columns and its own date rules.
How to read each Meta line
All of these come from the Meta Business Help Center. Check the wording against your own Ads Manager, because Meta updates these pages.
Amount spent. Meta defines it as "The approximate total amount of money you've spent on your campaign, ad set or ad during its schedule." It "may include amounts already invoiced as well as billable amounts that haven't been invoiced yet." Meta also says "it can take up to 48 hours for ad results to be processed" (Meta help: Amount spent). So export a week's numbers two days after it ends, and say on the report when you pulled them.
Results. This is "The number of times your ad achieved an outcome, based on the objective and settings you selected." It also "may not reflect how you’re billed for your ad" (Meta help: Results). Results means nothing without its type, so the template asks you to name it.
Purchase ROAS. Meta calculates it "as purchase conversion value divided by amount spent." Two warnings come with it. Meta says "statistical modeling may be used to account for some events, as well as for the values assigned to those events." And for ads delivered to devices using iOS 14+, "this metric may not be calculated" (Meta help: Purchase ROAS). If the cell is blank or looks low, check that before you explain a drop.
The attribution setting row
Leave this line out and nobody can read the numbers above it. It decides what counts as a result.
Meta's Results page says: "Meta uses a default attribution setting of 7-day click, 1-day view and 1-day engagement conversion. If you select a different attribution setting, your results will be counted based on the attribution setting you selected" (Meta help: Results).
The view part is the one to explain to a client. Meta's attribution settings page says view-through "Counts events that occurred within 1-day after an impression of your ad" (Meta help: attribution settings). Someone can scroll past an ad without clicking, buy the next day, and the sale can count for the ad. Purchases off Facebook are "attributed back to your ad if they happened within a certain number of days after someone viewed or clicked on your ad," and by default Meta shows them "based on the attribution setting on the ad set level" (Meta help: actions attributed to your ad).
So write the setting in full on every report. If two ad sets use different settings, list both. If someone changes the setting mid-month, put it in the change note. Our guide to the Meta ads attribution window covers what a change does to numbers you already sent.
A filled example
Illustrative example: round numbers for a made-up store. Not a customer and not a benchmark.
| Block | Line | Example |
|---|---|---|
| Meta | Reporting dates | 1 to 30 September, Europe/Dublin, pulled 2 October |
| Meta | Amount spent | €2,500 |
| Meta | Results | 50 website purchases |
| Meta | Cost per result | €50 |
| Meta | Purchases conversion value | €7,500 |
| Meta | Purchase ROAS | 3.00 |
| Meta | Attribution setting | 7-day click, 1-day view and 1-day engagement conversion (Meta's default) |
| Meta | Reach and Frequency | 60,000 and 2.0 |
| Meta | Change note | New video ad added on 15 September |
| Stripe | Payments that cleared | €5,500 |
| Stripe | Refunds | €300 |
Meta's Compare attribution settings feature splits Results by window. Say 10 of the 50 purchases sit in the 1-day view column. Then you can tell the client: "Meta credits the ads with 50 purchases worth €7,500. Ten of those came from people who saw an ad and didn't click. Stripe shows €5,500 in payments for the same dates, less €300 in refunds."
Leave the gap in plain view. It's the line the client will ask about, and you'd rather they hear it from you.
Stop trusting the platforms' math.
Filling the payment row by hand each week? Thexly matches each payment to the campaign visit behind it, so the row is ready when you open the report. Start a 14-day free trial, no card needed.
No card required.
What agencies say about this
On r/FacebookAds, an agency described a client whose dashboard looked great: "client is thrilled, wants to double budget next month." The poster suspected some of those conversions were attribution overlap. One reply put the fix well: "you're not telling them the ROAS is wrong, you're telling them it's incomplete. Platform-reported ROAS and verified backend revenue are measuring different things." (r/FacebookAds, July 2026)
That's what the two blocks in the template do. Meta's ROAS stays on the report. The payment line sits under it with its own label.
Keep Meta and Google apart
A buyer can click a Facebook ad on Monday, search the brand on Google on Thursday and buy. In a thread asking how Meta decides a sale is its own, one reply walked through that exact path: "Meta claims that purchase. Google claims it too. Neither is technically wrong, they're just applying their own attribution rules to the same conversion." (r/FacebookAds, September 2026)
So don't add Meta's purchases to Google's. Report each platform in its own block, and show the payments once for the whole store. More on that: when Meta and Google both claim the same sale.
For what to say in the meeting, see our Facebook Ads reporting guide and the Meta Ads reporting guide.
When a weekly sheet gets heavy
The Meta block is one export. The payment block takes longer: pulling Stripe for the same dates, taking out refunds, then working out which campaigns the money came from. With several clients, that's the part that eats the week.
Want this live for every client?
Send the client a live link instead of this week's PDF: Thexly for agencies.
Which Meta column do your clients ask about most? We'd like to hear.
FAQ