Capability template for analytics and reporting
Client campaign performance report
At the weekly or monthly reporting cutoff, the analyst gets a client report in the agency's format from the exports supplied: source figures, a drafted narrative, anomalies and discussion points. Gaps stay gaps, and every explanation is labelled a hypothesis.
Listed under
Add it to a workflow in the Fully Powered Planner, beside the teams and roles that will run it. Book a fit call
The outcome
The report arrives as a draft on the analyst's desk once the exports are in, not as an evening of copying figures between tabs. Every figure sits under the source that produced it, with the attribution window that source uses. Nothing is blended: the ad platform's conversions and the analytics tool's transactions are printed side by side, and the gap between them is reported as a gap.
Where a day is missing from an export, the report says so and shows the days it has; a goal that the missing day could change is shown as not calculable for the full window, with the figure on the days available and the bound the arithmetic gives. It never turns a missing day into a zero, and never turns a tracking outage into a bad week. Anything that moved by a lot, or looks odd in a single day, is listed with the facts first and any explanation second, marked as a hypothesis with the check that would settle it.
The analyst verifies the calculations. The account lead reads the narrative, changes it and approves it. The client sees nothing until a person sends it.
Who starts the work, and when
The analyst starts it at the weekly or monthly client-reporting cutoff, once the platform and analytics exports for the period have been pulled. The account lead reviews the narrative and the discussion points before the client call or the send.
What they supply
- The ad-platform exports for the period, one per platform, by day.
- The analytics export for the same days.
- The previous report, or the previous period's figures, for the comparison.
- The client's goals and budget, and the agency's reporting definitions: which conversions count, the attribution window each source uses, the currency.
- Notes on anything that changed in the period: budget moves, launches, pauses, tracking problems.
- The agency's report format. If none is supplied, the capability uses the one in its template.
What comes out
One report, in a fixed order: the reporting window and its gaps, the figures by source, progress against the client's goals, where sources differ, anomalies, a draft narrative, discussion points for the call, open questions and a list of calculations for the analyst to check. Differing periods are compared per day with the day counts printed. A section with nothing to report says so in a line rather than disappearing.
An invented example
Illustrative example with invented data. An invented agency prepares the weekly report for Client A, an invented online shop selling outdoor furniture. The agency, the client, the platforms and every figure below are made up for this example; none of them stands for a real organisation.
What the analyst supplies
Run settings. Reporting window Monday 2 November to Sunday 8 November 2026 (7 days). Cutoff Monday 9 November. Previous period Monday 26 October to Sunday 1 November (7 days), taken from last week's report. Currency USD. The agency's format is the template's default.
Definitions. Search platform ("Platform A"): conversions are completed purchases, 30-day click window. Social platform ("Platform B"): conversions are completed purchases, 7-day click and 1-day view window. Analytics tool: transactions credited to the last non-direct click source. Ratios are built from summed figures.
Client goals. Search return on ad spend of at least 8.00 (Platform A's figures). Social cost per conversion of at most $15.00 (Platform B's figures). Total ad spend for the week within $1,500.00 across both platforms.
Notes from the media buyer. (1) Platform B's conversion tracking was down on 4 and 5 November and fixed on 6 November. (2) The saved date range on the Platform A export ended on 7 November. (3) Nothing else was changed in either account this week.
Platform A export (columns: Date, Campaign, Spend, Impressions, Clicks, Conversions, Conversion value). One campaign, "Search - Outdoor Sets". Six rows; there is no row for 8 November.
- 2 Nov: 120.00, 6,000, 240, 12, 1,440.00
- 3 Nov: 118.00, 5,900, 236, 11, 1,320.00
- 4 Nov: 125.00, 6,200, 250, 13, 1,560.00
- 5 Nov: 130.00, 6,100, 244, 10, 1,150.00
- 6 Nov: 122.00, 6,000, 244, 12, 1,380.00
- 7 Nov: 95.00, 4,700, 190, 8, 920.00
Platform B export (same columns). One campaign, "Social - Outdoor Sets". Seven rows; Conversions and Conversion value are blank on 4 and 5 November.
- 2 Nov: 80.00, 20,000, 300, 6, 600.00
- 3 Nov: 85.00, 21,000, 310, 5, 520.00
- 4 Nov: 82.00, 20,500, 305, blank, blank
- 5 Nov: 84.00, 20,800, 300, blank, blank
- 6 Nov: 160.00, 38,000, 520, 11, 1,150.00
- 7 Nov: 90.00, 22,000, 330, 6, 610.00
- 8 Nov: 88.00, 21,500, 322, 6, 590.00
Analytics export (columns: Date, Source / Medium, Sessions, Transactions, Revenue). Fourteen rows, shown as date: sessions, transactions, revenue.
- search / cpc: 2 Nov 230, 10, 1,180.00; 3 Nov 226, 9, 1,060.00; 4 Nov 238, 11, 1,290.00; 5 Nov 232, 8, 940.00; 6 Nov 233, 10, 1,150.00; 7 Nov 182, 6, 700.00; 8 Nov 226, 9, 1,010.00
- social / paid: 2 Nov 270, 4, 380.00; 3 Nov 280, 3, 300.00; 4 Nov 276, 5, 520.00; 5 Nov 268, 4, 410.00; 6 Nov 470, 7, 760.00; 7 Nov 290, 4, 400.00; 8 Nov 285, 4, 390.00
Last week's report (26 October to 1 November, 7 days, totals only).
- Platform A: spend 735.00, impressions 36,400, clicks 1,456, conversions 70, conversion value 8,050.00.
- Platform B: spend 560.00, impressions 142,800, clicks 2,100, conversions 42, conversion value 4,200.00.
- Analytics, search / cpc: sessions 1,470, transactions 60, revenue 6,900.00.
- Analytics, social / paid: sessions 1,820, transactions 27, revenue 2,700.00.
What comes out
CLIENT PERFORMANCE REPORT: Client A, week of 2 November 2026
DRAFT. Figures await the analyst's check. The narrative awaits the account lead's approval. Nothing has been sent.
For: the analyst and the account lead. Prepared 9 November 2026, from the Platform A export (6 rows), the Platform B export (7 rows), the analytics export (14 rows), last week's report, the definitions, the goals and the media buyer's notes.
Window: Monday 2 November to Sunday 8 November 2026 (7 days). Compared with: Monday 26 October to Sunday 1 November 2026 (7 days), from last week's report.
Definitions: Platform A 30-day click. Platform B 7-day click, 1-day view. Analytics last non-direct click. USD. Ratios are built from summed figures. Changes are per-day averages over the days with data.
REPORTING WINDOW AND GAPS
Platform A: 6 of 7 days. Not available: Sunday 8 November (the saved date range ended 7 November, per the media buyer). Shown as a gap, not zero.
Platform B: spend and clicks 7 of 7 days; conversions and conversion value 5 of 7 days. Not recorded: Wednesday 4 and Thursday 5 November (tracking down, per the media buyer). Shown as not recorded, not zero.
Analytics: 7 of 7 days for both sources.
Previous period: totals only, from last week's report; daily gaps in that week cannot be checked.
SOURCE FIGURES
Platform A, search (30-day click; 6 of 7 days)
Spend $710.00 ($118.33 a day; previous $105.00; +12.7%). Impressions 34,900 (5,817 a day; previous 5,200; +11.9%). Clicks 1,404 (234.00 a day; previous 208.00; +12.5%).
Conversions 66 (11.00 a day; previous 10.00; +10.0%). Conversion value $7,770.00 ($1,295.00 a day; previous $1,150.00; +12.6%).
Click-through rate 4.02% (previous 4.00%; +0.02 points). Cost per click $0.506 (previous $0.505; +0.2%). Cost per conversion $10.76 (previous $10.50; +2.5%). Return on ad spend 10.94 (previous 10.95; -0.1%).
Platform B, social (7-day click, 1-day view; spend 7 of 7 days, conversions 5 of 7 days)
Spend $669.00 ($95.57 a day; previous $80.00; +19.5%). Impressions 163,800 (23,400 a day; previous 20,400; +14.7%). Clicks 2,387 (341.00 a day; previous 300.00; +13.7%).
Conversions 34, on the 5 recorded days (6.80 a recorded day; previous 6.00; +13.3%). Conversion value $3,470.00, on the 5 recorded days ($694.00 a recorded day; previous $600.00; +15.7%).
Click-through rate 1.46% (previous 1.47%; -0.01 points). Cost per click $0.280 (previous $0.267; +5.1%). Cost per conversion $14.79, spend and conversions both from the 5 recorded days (previous $13.33; +11.0%). Return on ad spend 6.90, same 5 days (previous 7.50; -8.0%).
Analytics, search / cpc (last non-direct click; 7 of 7 days)
Sessions 1,567 (223.86 a day; previous 210.00; +6.6%). Transactions 63 (9.00 a day; previous 8.57; +5.0%). Revenue $7,330.00 ($1,047.14 a day; previous $985.71; +6.2%).
Analytics, social / paid (last non-direct click; 7 of 7 days)
Sessions 2,139 (305.57 a day; previous 260.00; +17.5%). Transactions 31 (4.43 a day; previous 3.86; +14.8%). Revenue $3,160.00 ($451.43 a day; previous $385.71; +17.0%).
AGAINST CLIENT GOALS
Search return on ad spend of at least 8.00: 10.94 on 6 of 7 days (Platform A figures). Not calculable for the full window: Sunday 8 November is missing. Met on the 6 days available. Bound: with no conversion value on 8 November, the week falls below 8.00 only if that day's spend is above $261.25.
Social cost per conversion of at most $15.00: $14.79 on the 5 days with conversions recorded (Platform B figures). Not calculable for the full window: conversions are not recorded for 4 and 5 November. Met on the 5 days available, by $0.21. Bound: the week's $669.00 of spend stays within $15.00 a conversion only if 4 and 5 November had at least 11 conversions between them; with none, it would be $19.68.
Total ad spend within $1,500.00: $1,379.00 reported ($710.00 Platform A, 6 days; $669.00 Platform B, 7 days). Not calculable for the full window: Platform A's Sunday spend is missing. Within the budget on the days available. The budget is exceeded only if that spend is above $121.00.
WHERE SOURCES DIFFER
Search, 2 to 7 November (6 days in both): Platform A reports 66 conversions and $7,770.00; analytics records 54 transactions and $6,320.00. Platform A is higher by 12 conversions (22.2% of the analytics figure) and $1,450.00 (22.9%). Platform A counted 1,404 clicks; analytics recorded 1,341 sessions, so Platform A is higher by 63 (4.7%). Not reconciled.
Social, the 5 days Platform B recorded conversions (2, 3, 6, 7 and 8 November): Platform B reports 34 conversions and $3,470.00; analytics records 22 transactions and $2,230.00. Platform B is higher by 12 conversions (54.5%) and $1,240.00 (55.6%). Not reconciled.
Social, clicks against sessions on all 7 days: Platform B counted 2,387 clicks; analytics recorded 2,139 sessions, so Platform B is higher by 248 (11.6%). Not reconciled.
Social, 4 and 5 November: Platform B has no conversions recorded (tracking down, per the media buyer); analytics recorded 9 transactions and $930.00 revenue from social / paid.
Hypothesis: the longer attribution windows on both platforms, including the view window on Platform B, account for part of each difference. To confirm: re-run the platform export on a last-click basis if the platform offers it. Who can check: the media buyer.
ANOMALIES
1. Platform B, Friday 6 November: spend $160.00, 1.89 times the $84.83 average of the other six days. Clicks 520 against an average of 311.17 on the other days; conversions 11 against an average of 5.75 on the other recorded days. Analytics recorded 470 social / paid sessions that day, against an average of 278.17 on the other days. No note covers it.
Hypothesis 1: a budget or bid change was made on that day. To confirm: the platform's change history. Who can check: the media buyer.
Hypothesis 2: spend rose once conversion tracking was restored on that day. To confirm: the platform's hourly spend on 6 November against the time of the tracking fix. Who can check: the media buyer.
No source-level movement of 25% or more in spend, conversions, conversion value or cost per conversion. No other day outside the spend range.
DRAFT NARRATIVE (for the account lead's approval)
Search spent $710.00 over the six days reported (Sunday 8 November is not in the export) and the platform-reported figures are 66 conversions worth $7,770.00, a return of 10.94 against the goal of 8.00. The return for the full window cannot be calculated without Sunday; it stays at or above 8.00 unless Sunday's spend is above $261.25 with no value. Per day, spend was up 12.7% and conversions up 10.0% on the previous week, and cost per conversion was $10.76 against $10.50.
Social spent $669.00, up 19.5% a day, of which $160.00 fell on Friday 6 November. Conversion tracking was down on 4 and 5 November, so social conversions cover five days: 34 platform-reported conversions at $14.79 each, inside the $15.00 goal on those days only; the week would need at least 11 conversions on 4 and 5 November to stay inside it. Analytics recorded 9 social transactions on the two days tracking was down.
Analytics recorded fewer conversions than each platform did on the same days, 54 against 66 for search and 22 against 34 for social. The platforms count over longer windows, which may explain part of the gap; this has not been tested, and the figures are not reconciled here. Total spend is $1,379.00 so far against the $1,500.00 budget, with Sunday's search spend not included.
DISCUSSION POINTS
1. Does the account team's change history show a budget or bid change on Platform B on Friday 6 November? (Anomaly 1.)
2. How should the two days of missing social conversions appear in the client's view? Analytics shows 9 transactions and $930.00 on those days. (Gaps; Where sources differ.)
3. Which source does the client treat as the number of record for sales: the platforms or analytics? (Where sources differ.)
4. When can the search export be re-pulled so Sunday 8 November is included? (Gaps; Against client goals.)
OPEN QUESTIONS
1. Platform A, Sunday 8 November: spend and conversions needed to complete the week and the budget check, from the media buyer, who can re-pull the export with the date range extended.
2. Platform B, 4 and 5 November: no platform conversions exist to add; confirm with the media buyer that they cannot be recovered.
FOR THE ANALYST TO VERIFY
Platform A totals: sum of 6 rows. Cost per conversion 710.00 / 66 = 10.76. Return on ad spend 7,770.00 / 710.00 = 10.94. Per-day spend 710.00 / 6 = 118.33 against 735.00 / 7 = 105.00.
Platform B totals: spend 7 rows, conversions and value 5 rows. Cost per conversion (669.00 - 82.00 - 84.00) / 34 = 503.00 / 34 = 14.79. Return on ad spend 3,470.00 / 503.00 = 6.90.
Spend on the budget line: 710.00 + 669.00 = 1,379.00; 1,500.00 - 1,379.00 = 121.00.
Goals: return bound, (7,770.00 + 0) / (710.00 + S) < 8 when S > 7,770.00 / 8 - 710.00 = 971.25 - 710.00 = 261.25. Cost per conversion bound: 669.00 / 15.00 = 44.6, so at least 45 conversions in the week, 11 more than the 34 recorded; 669.00 / 34 = 19.68.
Source differences: 66 - 54 = 12, 12 / 54 = 22.2%; 34 - 22 = 12, 12 / 22 = 54.5%. Search clicks against sessions: 1,404 - 1,341 = 63, 63 / 1,341 = 4.7%. Social clicks against sessions: 2,387 - 2,139 = 248, 248 / 2,139 = 11.6%.
Friday spend ratio: 160.00 / ((669.00 - 160.00) / 6) = 160.00 / 84.83 = 1.89.
Draft for the analyst's check and the account lead's approval. Nothing has been sent, posted or changed in any account.
The report states only what the supplied exports and notes show. It sends nothing and changes nothing in any account.
Where it fits
- Marketing and advertising, where the account team reports to each client on a fixed rhythm and the analyst is the one who has to trust the figures.
- Professional services, for consultancies and studios that report campaign results to clients as part of a retainer.
- Ecommerce and retail, where the in-house team reports paid media to the owner or the board from the same kinds of exports.
- Analytics and reporting, which owns the definitions, the calculations and the habit of showing the source.
- Marketing and content, whose campaigns the report describes.
- Growth & scaling, when the number of client accounts has outgrown the hours the analyst has each cutoff.
It is a different piece of work from the creator campaign performance report, which ranks influencer partners from a store's own orders. It is not the weekly owner business brief, which covers a whole business, and not quarterly business review preparation, which looks across a quarter and a relationship.
What has to change for your company
Put your own report format in place of the default order of sections. Set the attribution window each platform uses and the conversions your agency counts. Choose the anomaly thresholds: how large a movement is worth a line, and how large a one-day spend swing is worth a question. Decide the comparison period for weekly and monthly reports, and the number of decimals your clients are used to. Decide who is allowed to approve a narrative when the account lead is away, and where the approved report is kept.
What has been checked
Fully Powered AI wrote this capability template. It was editorially reviewed on 10 November 2026. It was run twice on its invented example in Claude on 10 November 2026. The instructions, the output format and the example were revised after the first run, and the second run is the one recorded and published with it. After that run, small wording edits were made following a review, without a new run. It has not yet been tested in a client environment.
Testing in your environment means running it on a past reporting period whose figures your analyst already knows, including a week with a missing day, a week with a tracking outage and a week where the platform and analytics disagree. The analyst recomputes every figure before any report goes further.
The full capability template
Everything above is the outline. The complete capability template is the working version: the roles, the inputs, the procedure, the exceptions and stop conditions, the output format, the reviewer checklist, the acceptance tests, the instructions for an AI assistant and what to customize for your company. It comes with a download and the link to its folder in Fully Powered’s public repository.
Free with an account. Sign in by email: no password and no card.
Next step
Put this capability to work for your team: on your plan, or built with you in a sprint.
Build this in a sprint
In a sprint, Fully Powered adapts this capability template to your rules, proves it on your own work and puts it in the hands of the roles that own it.
Two ways to begin: