Chapters · 10
How to automate client reporting in 4 steps
Pull, check, write, approve: automate what follows rules, let AI draft sentences, and keep judgment with a person. The common mistake is to automate step 1, skip step 2 and send wrong numbers faster.
- Pull the data on a schedule, with each number's dates and source.
- Check the numbers against a fixed list before anyone writes.
- Write the narrative from the client's goals, targets and scope.
- Approve and send: one named person signs off, and the sent version is kept.
| Step | Automate fully | AI may draft | A person does |
|---|---|---|---|
| 1. Pull | The scheduled pull and its record of dates, sources and currency | Nothing | Maps new accounts to the right client; fixes broken connections |
| 2. QA | Rule checks: dates, gaps, currency, totals, anomalies | Nothing (the model never does the math) | Judges every flag |
| 3. Narrative | Figures, their change and target, made by code | "What happened" sentences around those figures | Why, what we did, what is next, the ask |
| 4. Approve and send | Schedule, delivery, record of who approved | Nothing | Reads, edits, approves |
How long does client reporting take? Why the published numbers disagree
One report often takes under an hour to build; a client's month takes longer, and the big monthly figures shared online trace to no survey we could find.
| Figure as published | What it measures | Who was asked | Status |
|---|---|---|---|
| 52% under 30 minutes on client reporting; 26% about 45 minutes on a single report; 19% 1 to 2 hours on a client report; 78% 45 minutes or less "with AgencyAnalytics" (AgencyAnalytics, 2023) | Building one report | 121 agencies, mostly US; the vendor's audience, many of them customers | Verified, publisher's page |
| 46% build a report in under 30 minutes; secondary write-ups add 73% under an hour (AgencyAnalytics, 2026) | Building one report | 473 agency professionals who answered; the vendor's audience | Verified from secondary summaries |
| 1.5 to 4 hours per client for a manual report (AgencyAnalytics guide) | A manual report | No sample | Vendor estimate, no method |
| Hours per client per month, credited to an "AgencyAnalytics 2024 benchmark" | A client's month | Not found on AgencyAnalytics' pages | Unverified; figure not repeated |
| Hours per client per month, credited to an AgencyAnalytics "2025 State of Agency Reporting Survey" | A client's month | No such survey found | Unverified; figure not repeated |
| Hours per client per month, credited to "Fluent, June 2025" | A client's month | Original not found | Unverified; figure not repeated |
| Billable hours a month, credited to an AgencyAnalytics analysis | Told both as hours lost and as hours saved | Method not seen | Unverified; figure not repeated |
We name the unsourced claims so you can spot them, without their figures.
Three things explain the spread:
- The unit. One report's build is not a client's month, which adds checks, commentary, the call and follow-up questions.
- Who answered. The surveys reach a reporting vendor's audience, many already automated, so they likely show the fast end.
- Provenance. The big monthly figures are copied between pages with credits that do not resolve. Do not price a retainer on them.
Time three of your own clients for one month with the worksheet below.
Step 1: Pull the data with its dates and sources
Pull every client's numbers on a schedule, and store beside each number its date range, time zone, currency, source account and pull time.
Decide the report package before connecting anything: one KPI set per service and one template, filled per client. For paid media that usually means spend, conversions, cost per result or ROAS against target, and budget pacing; see how performance agencies set theirs up.
Keep three things written down:
- The account map. Client, platform, account ID, owner. A wrong row puts one client's numbers in another client's report.
- The pull line, at the foot of every report: "Google Ads account 123-456-7890, 1 to 31 October, account time zone, USD, pulled 1 November 06:00."
- The gap list. What no connector covers (offline sales, a CRM export, the client's spreadsheet) goes in one sheet with an owner and a due day.
Pull late, or pull twice, to allow for conversion lag. Google Ads' standard Conversions column credits a conversion to the date of the ad click, so last month's figure can rise after the month closes; its "by conv. time" columns count by conversion date instead (Google Ads Help). The default click-through window for a new conversion action is 30 days (Google Ads Help). If your tool drafts on the 1st, re-check totals on the day you approve.
Step 2: Client report QA, the 14 checks before any words
Run the same checks on every report before anyone writes. Automate the tests; a person judges every flag.
| # | Check | How to test | Who |
|---|---|---|---|
| 1 | Date range | Every source covers the same first and last day, in one stated time zone | Automate |
| 2 | Complete days | No missing days; flag zero spend on a live campaign | Automate |
| 3 | Currency | One total per currency, never a sum across two | Automate |
| 4 | Attribution windows | Conversions use the window the report states (Meta sets it per ad set, Google Ads per conversion action) | Automate the read; a person picks the window |
| 5 | Platform against analytics | Platform and GA4 conversions shown side by side, never added | Person, once per client |
| 6 | Totals across platforms | A total adds only platforms that report that metric the same way | Automate |
| 7 | Last month | Last month's figures match what the client saw, or the restatement is explained | Automate |
| 8 | Comparison base | Month-on-month and year-on-year compare the same days and accounts | Automate |
| 9 | Targets and budget | Every figure with a target shows it; spend shown against budget | Automate |
| 10 | Anomalies | A change beyond your threshold (say 25% month on month) has a written cause | Automate the flag; a person writes the cause |
| 11 | Tracking breaks | A fall to zero, a one-day spike, a renamed conversion action, a window the API no longer returns | Automate the flag; a person confirms |
| 12 | Account map | Every account ID in the pull belongs to this client | Automate |
| 13 | Metric names | Each metric has the name and definition the client agreed | Person once, then automate |
| 14 | Would I defend this number? | The approver traces the three figures the client will quote to their source | Person |
Check 11 is the easiest to miss. From 12 January 2026, Meta's Ads Insights API stopped returning the 7-day view and 28-day view windows (Meta for Developers, 2025): nobody at the agency changed anything, yet a report that asked for them came back empty. Check 14 matters most: if you cannot say where a number comes from without a laptop, it stays out.
Download the number-QA checklist (Markdown)
Step 3: Write the narrative from goals, targets and scope
The numbers say what moved; only your records say why. Write five parts, knowing where each one's context comes from.
| Part | The question | Where the context comes from | Who writes it |
|---|---|---|---|
| What happened | Did we hit the agreed goal? Which two or three numbers moved? | Checked figures against the targets set at onboarding | AI may draft around code-made figures |
| Why | What caused it? | Account change log, call notes and decisions, client events (a sale, a stock-out, a site change) | A person; AI only with a record to cite |
| What we did | What was delivered? | Completed tasks and deliverables, against the scope sold | Pulled from the task list; a person edits |
| What is next | What we will do next month, and why | The plan, the scope left, the test queue | A person |
| What we need from you | Which decision or input, by when? | Open approvals, client dependencies, missing assets | A person, with a date |
Five rules keep it honest:
- Start from the business goal. 55% of agency professionals said "Can you connect marketing performance to revenue?" is the question clients ask most, and 10% of agency leaders cite attribution or ROI clarity as a reason clients leave (AgencyAnalytics, 2026). Open with leads, sales or revenue against target, then the channels.
- No cause without a record. If the "why" cannot point to a change, a call or a client event, write "we are checking" and say when you will know.
- No number typed by hand or by a model; figures come from the pull.
- One ask, with a date. Five asks usually get none answered.
- Out-of-scope asks leave the report and become a change request (see how to handle out-of-scope requests).
If the goals were never written down, start with the intake in our onboarding checklist.
Download the narrative framework (Markdown)
Step 4: Get a named approval, then send
One named person, usually the account lead, approves each report after the checks pass, and the approval is kept with the sent version.
- Name the approver per client, not "the team". The analyst signs off the checks; the account lead signs off the words.
- Approve what the client will read: the three headline figures, every "why", and the ask.
- Freeze the sent version, so next month compares against what the client saw.
- Send a link, then talk through the ask on the call.
How AI-written client reports go wrong, and the check that catches each
AI fails at reports in predictable ways, and each failure has a rule or check that catches it.
| Failure | What it looks like | The check that catches it |
|---|---|---|
| Invented (hallucinated) cause | "CPA rose on seasonal demand", with no record behind it | Every "why" cites a record, or it is cut |
| Wrong date range | October compared with 1 to 28 September | Checks 1 and 8: code sets the period, not the prompt |
| Mixed currencies | USD Google Ads spend added to AED Meta spend as "total spend" | Check 3: one total per currency |
| The model's own math | A percentage change worked out on the wrong base | The model never writes a number; code fills every figure |
| Wrong client | Another client's account or result in the draft | Check 12 |
| Good news by default | "Performance remained strong" in a month the goal was missed | Check 14; "what happened" starts from goal against target |
Worked example: hours saved for an agency with 18 retainers
Example, not a measurement: a 12-person performance agency with 18 retainers times its reporting for one month.
| Step | Minutes per client before | After | Saved per client | Saved across 18 clients |
|---|---|---|---|---|
| Pull and paste | 60 | 5 | 55 | 990 min (16.5 h) |
| Number QA | 20 | 15 | 5 | 90 min (1.5 h) |
| Narrative | 45 | 20 | 25 | 450 min (7.5 h) |
| Approve and send | 15 | 10 | 5 | 90 min (1.5 h) |
| Total | 140 | 50 | 90 | 1,620 min (27 h) |
At a loaded cost of $55 an hour, 27 hours is $1,485 a month, or $17,820 a year. Setup takes 12 hours for the template plus 2 hours per client to connect and map accounts: 12 + (18 × 2) = 48 hours, earned back in under two months (48 ÷ 27 = 1.8).
Two things are deliberate. The "before" of 140 minutes sits inside AgencyAnalytics' estimate of 1.5 to 4 hours per client for a manual report (AgencyAnalytics guide). And QA barely shrinks: automation moves minutes from copying to judging. If your "after" shows QA at zero, you automated the risk too.
Download the time-saved worksheet (CSV)
Which client reporting tools do which part
Pick by the step that hurts most. RevSmith makes this guide and appears in it. We list it where it fits and say where it does not.
| Category | Examples | Good at | Where it stops | Billed by (checked 4 November 2026) |
|---|---|---|---|---|
| Client reporting tools | AgencyAnalytics, Whatagraph, Swydo, DashThis | Many connectors, branded dashboards, scheduled reports | The why, scope and work live elsewhere | Client count (AgencyAnalytics); data sources (Swydo) |
| BI with connectors | Looker Studio with Supermetrics or similar | Flexible charts on any metric you connect | You maintain every chart; connectors can need re-authorizing | User and project (Looker Studio Pro) |
| Automation tools | Zapier, Make, n8n | Moving data and sending on schedule; glue for the gap list | QA and narrative are yours to build | Task, credit or execution (Zapier, Make) |
| AI assistants and agents | Claude, ChatGPT, reporting tools' AI features | Fast first drafts and analysis | Can miscalculate or guess causes unless figures come from code | Seat or usage |
| An AI operating system | RevSmith | The report beside the client's goals, scope, work and approvals | Fewer connectors than a reporting tool | Terms set during onboarding |
If branded client dashboards are your main need, a dedicated reporting tool fits better; our comparison with AgencyAnalytics says where each wins. For the AI side, see the AI tools agencies use, sorted by job and what AI agents can safely do on client accounts.
Where RevSmith fits (and where it does not)
RevSmith builds in step 1's scheduled pull, step 3's "what happened" draft and step 4's approval and send. Of step 2, it keeps money per currency (check 3) and adds a total only from apps that report that number (part of check 6). It is onboarding its first agencies; none of this is a customer result.
- Pull. RevSmith reads nine sources: Google Ads, Meta Ads, GA4, Search Console, LinkedIn Ads, TikTok Ads, HubSpot, Shopify and Google Sheets. The daily pull needs no AI.
- Figures and words. Code makes every figure on the report; AI only writes the words around them, and a line with a number the code did not make is dropped. The words are plain, not the client's voice, so a person adds the why and what is next before approving.
- Approval. On the 1st of each month RevSmith drafts last month's summary and never sends it. A person (the client's account manager, or an Owner or Admin) approves it or writes it by hand, and approving freezes the main dashboard as that month's report.
- Send. Send emails each client contact their own private link to the report, with no sign-in, after the agency's "send to client" policy. Download PDF prints the frozen report.
- Dashboards. Built once from 20 block kinds (or six ready-made ones), shown on every client with that client's numbers.
Where it does not fit yet: the nine daily reads are tested on a pretend copy, not yet on a live account, and LinkedIn Ads and Shopify need RevSmith's own app registered first. The AI summary is tested only with a stand-in model, not a real one. It is not white-label: the dashboard shows your agency's logo and name, but the report email comes from RevSmith. And it is not a reporting-only tool: it does not rebuild every connector one has.
If you want reports beside each client's goals, scope and approvals, that is the job of an AI operating system for agencies; if dashboards are all you need, it is more than you need. How reporting works inside RevSmith shows the screens.
Sources
- AgencyAnalytics, "Trends In Agency-Client Reporting | 2023 Benchmarks Report", 2023. 121 agencies, mostly US; AgencyAnalytics' own audience, many of them customers. https://agencyanalytics.com/blog/marketing-agency-benchmarks-client-reporting-trends. 52%, 19%, 78% (S108, Verified-primary); 26% (S76, Verified-primary).
- AgencyAnalytics, 2026 Marketing Agency Benchmarks Report, 30 June 2026. 494 agency professionals (45% owners or leaders; 64% US, 13% Australia, 8% UK, 7% Canada), February to April 2026; the vendor's audience, self-reported. https://agencyanalytics.com/agency-benchmarks-2026 and https://agencyanalytics.com/blog/agency-benchmarks-2026-attribution. 76% and 70% (S73), 42% and 58%, the latter from the 2025 survey of 226 (S66), 55% (S72), 10% (S78): Verified-primary. 46% and 73% of 473 who answered (S74, Verified-secondary). Unit: professionals, not agencies (S69, Changed).
- AgencyAnalytics, "Client reporting benchmarks" guide, undated. No sample; vendor estimate. https://agencyanalytics.com/blog/client-reporting-benchmarks. 1.5 to 4 hours per client (S75, Verified-secondary, vendor estimate).
- Claims checked and not used, no sample or method found (S77, Unverified; their figures are not repeated on this page): the "AgencyAnalytics 2024 benchmark" credit (https://builts.ai/blog/how-to-automate-client-reporting/); the "2025 State of Agency Reporting Survey" credit (https://ustechautomations.com/resources/blog/marketing-agency-client-reporting-automation-howto-2026); the "Fluent, June 2025" credit (original not found); the billable-hours credit to an AgencyAnalytics analysis (a post on dev.to by alessandrobinda114; S77 holds the address).
- Meta for Developers, "Ads Insights API metric availability updates", 16 October 2025, and "2025 Out-Of-Cycle Changes". Platform documentation, not a survey. https://developers.facebook.com/blog/post/2025/10/16/ads-insights-api-metric-availability-updates/ and https://developers.facebook.com/docs/marketing-api/out-of-cycle-changes/occ-2025. 7-day view and 28-day view windows removed from 12 January 2026 (S149, Verified-primary).
- Google Ads Help, "About conversion windows", seen in search results 4 November 2026. Platform documentation. https://support.google.com/google-ads/answer/3123169. 30-day default click-through window (S150, Verified-primary).
- Google Ads Help, "Understand conversions by time with new columns", seen in search results 4 November 2026. Platform documentation. https://support.google.com/google-ads/answer/9549009. Click date against conversion date (S151, Verified-primary).
- Jon Loomer, "Meta Ads Attribution Setting: A Complete Guide", seen in search results 4 November 2026, with other practitioner guides that agree; Meta's own help page did not appear. https://www.jonloomer.com/meta-ads-attribution-setting-a-complete-guide/. Meta's attribution setting is chosen per ad set (S152, Verified-secondary).
- Vendor pricing pages, billing units only, checked 4 November 2026: https://agencyanalytics.com/pricing, https://www.swydo.com/pricing, https://zapier.com/pricing, https://www.make.com/en/pricing. List prices conflict between sources for some of these tools, so none is quoted.
- 76% of 494 agency professionals rated accurate reporting "extremely important" for keeping clients, up from 70% in 2025 (AgencyAnalytics, 2026).
- 42% of the same respondents named reporting and performance summaries as where AI adds the most value; in the 2025 survey of 226, content led at 58% (AgencyAnalytics, 2026).
- 52% of 121 agencies spent under 30 minutes on client reporting, and 19% spent 1 to 2 hours on a client report (AgencyAnalytics, 2023).
- The widely shared figures for reporting hours per client per month, credited to AgencyAnalytics surveys and to "Fluent", trace to no survey we could find (our check, 4 November 2026).
- From 12 January 2026, Meta's Ads Insights API stopped returning 7-day view and 28-day view attribution windows (Meta for Developers, 2025).
Frequently asked questions
How do I automate client reporting?
In four steps. Pull each client's numbers on a schedule with their dates, currency and source. Run a fixed QA checklist on every number. Draft the story from the client's goals and scope, with code making every figure. Then one named person approves, and the sent version is kept.
How long does client reporting take per client?
Building one report often takes under an hour: in AgencyAnalytics' 2023 survey of 121 agencies, 52% spent under 30 minutes and 19% spent 1 to 2 hours. A client's whole month takes longer, once checks, commentary and the call are added, but the popular hours-per-client-per-month figures trace to no survey we could find. Time three of your own clients instead.
What should a monthly client report include?
Five parts: what happened against the agreed goal (the executive summary), why (with the record behind each cause), what you delivered, what you will do next, and what you need from the client by a date. Put the period, sources and pull time at the foot.
Can AI write client reports, and can I trust the numbers?
AI can draft the words; it should not produce the numbers. Models can get arithmetic wrong, invent causes and drift on date ranges. The safe design: code computes every figure, the model writes sentences around figures it is given, any sentence with a number the code did not make is dropped, and a named person approves before anything reaches the client.
Why don't clients read our reports?
A report gets read when it answers the client's own question. In AgencyAnalytics' 2026 survey, 55% of agency professionals said "Can you connect marketing performance to revenue?" is the question clients ask most. So open with leads, sales or revenue against target, give each move a cause with its record, and end with one ask and a date.
How do I check the numbers before a report goes out?
Use one checklist on every report: the same period and time zone for every source, no missing days, one total per currency, stated attribution windows, platform and analytics conversions kept apart, totals recomputed from their parts, and a cause for any big change. Then ask: could you defend each headline number without opening a laptop?
How often should you send client reports?
Monthly suits most retainers, on a fixed day the client can count on. Weekly reports make sense only when budgets or launches move week to week; keep them to three figures, one sentence each, one ask. Send the report before the review call, so the call is spent on decisions, not reading numbers aloud.
How do I scale client reporting from 5 to 50 clients?
Standardize before you automate: one KPI set per service, one template, one account map, one QA checklist and one named approver per client. Then automate the pull and checks, so a new client means mapping accounts, not building a report. Keep a change log and call notes per client, so no "why" is written from memory.