Templates
PPC report template: Google Ads and Meta in one client sheet
A PPC report template for clients puts each ad platform in its own block: Google Ads with Cost and Conv. value, Meta with Amount spent and Purchases conversion value. Under them goes one line of payments that cleared for the same dates. Keep the platform totals side by side, but never add them, because both platforms can claim the same sale. Copy the sheet below and fill one block per platform.
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
Three blocks, top to bottom. Each line uses the column name the client will see in that platform. The spend lines are typed in by hand from each platform.
| Block | Line | What goes here |
|---|---|---|
| Header | Dates and time zone | One date range for every block, and the time zone you used |
| 1. Google Ads (Google-reported) | Cost | From Google Ads |
| 1. Google Ads (Google-reported) | Conversions | From Google Ads |
| 1. Google Ads (Google-reported) | Conv. value | From Google Ads |
| 1. Google Ads (Google-reported) | Conv. value / cost | From Google Ads |
| 1. Google Ads (Google-reported) | Settings note | Which conversion actions count, and any change to them |
| Between blocks | Do not add | Do not add Block 1 and Block 2 values |
| 2. Meta Ads (Meta-reported) | Amount spent | From Meta Ads Manager |
| 2. Meta Ads (Meta-reported) | Results | From Meta Ads Manager, with the result type |
| 2. Meta Ads (Meta-reported) | Purchases conversion value | From Meta Ads Manager |
| 2. Meta Ads (Meta-reported) | Purchase ROAS | From Meta Ads Manager |
| 2. Meta Ads (Meta-reported) | Attribution setting | As set on the ad sets |
| 3. Payments (Stripe) | Payments that cleared | Same dates as the header |
| 3. Payments (Stripe) | Refunds | Same dates |
| 3. Payments (Stripe) | Total ad spend | Cost plus Amount spent, typed in from each platform |
| 3. Payments (Stripe) | Payments ÷ total ad spend | Payments after refunds, divided by total ad spend. Label it "blended, from payments" |
| Footer | Change note | What you changed on either platform, with dates |
Prefer a sheet? Download the template.
Spend is the one figure you can add across platforms, because each platform's spend is money that left the account. Conversion value can't be added. That's the whole point of the "do not add" row.
Only one platform on the account? Use the Google Ads report template for clients or the Facebook Ads report template. They go deeper on each platform's own columns.
A filled example
Illustrative example: round numbers for a made-up store. Not a customer and not a benchmark.
| Block | Line | Example |
|---|---|---|
| Header | Dates and time zone | 1 to 31 October, Europe/Dublin |
| 1. Google Ads | Cost | €3,000 |
| 1. Google Ads | Conversions | 60 |
| 1. Google Ads | Conv. value | €9,000 |
| 1. Google Ads | Conv. value / cost | 3.0 |
| 1. Google Ads | Settings note | Purchase is the only primary action; no change this month |
| Between blocks | Do not add | Do not add Block 1 and Block 2 values |
| 2. Meta Ads | Amount spent | €2,000 |
| 2. Meta Ads | Results | 40 website purchases |
| 2. Meta Ads | Purchases conversion value | €6,000 |
| 2. Meta Ads | Purchase ROAS | 3.00 |
| 2. Meta Ads | Attribution setting | 7-day click, 1-day view and 1-day engagement conversion |
| 3. Payments | Payments that cleared | €10,500 |
| 3. Payments | Refunds | €500 |
| 3. Payments | Total ad spend | €5,000 |
| 3. Payments | Payments ÷ total ad spend | 2.0 (blended, from payments) |
| Footer | Change note | Moved €500 from Meta prospecting to Google brand search on 14 October |
Look at what the "do not add" row stops. Google claims €9,000 and Meta claims €6,000. Added together, that's €15,000 and a combined ROAS of 3.0. The payments that cleared, after €500 of refunds, come to €10,000. On that, €5,000 of spend returns 2.0.
The gap is €5,000 of value that at least one platform is crediting to itself. Some of it may be the same orders claimed twice. Some may be timing, or values that don't match what was charged. The template doesn't decide which. It shows the client both views and labels them.
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.
No card required.
Why the platform totals aren't summed
Each platform counts by its own rules. Google says its main conversion columns "are calculated based on the time of the click, not the time of the conversion" (Google Ads help: conversion columns). Meta counts under the ad set's attribution setting, and its default is "7-day click, 1-day view and 1-day engagement conversion" (Meta help: Results). A buyer who sees a Meta ad, then clicks a Google ad and pays can fit both rules at once.
It comes up in agency threads. In an r/GoogleAnalytics thread about a client on both platforms, one reply said: "Platform ROAS often is way off with multiple platforms claiming the same sale." Another put the split well: "Platform stats are useful for optimising within the platform. For a campaign on multiple platforms you need something that can see multiple platforms." (r/GoogleAnalytics, April 2026)
That's how the blocks are meant to be read. Blocks 1 and 2 are for decisions inside each platform. Block 3 is the one number that covers both. More on the overlap: when Meta and Google both claim the same sale.
Monthly vs weekly version
The monthly version is the full sheet above.
For a weekly send, keep the header, Cost and Conv. value from Google, Amount spent and Purchases conversion value from Meta, the payments line and the change note. Drop the settings note and attribution setting unless something changed that week. If it did, that line goes first.
Two lines matter more weekly than monthly. The time zone, because a short range shifts a lot when one platform reports in another zone. One agency that automated its Monday reports warned: "also watch out for timezones on Monday morning runs, that one bit us hard." And the change note. In the same thread, another reply said: "We need to provide what actions/ optimizations were performed in order to achieve the performance and next steps for the campaign." (r/DigitalMarketing, April 2026)
For what to say about each block in the meeting, see our PPC reporting guide.
When a two-platform sheet gets heavy
Blocks 1 and 2 are two exports. Block 3 is where the work is: Stripe for the same dates, refunds taken out, spend from both platforms typed in, then the question of which campaigns the money came from. Across several clients, it adds up fast.
Want this live for every client?
Send the client a live link instead of this week's PDF: Thexly for agencies.
Which block do your clients read first? We'd like to hear.
FAQ