On this page
Most client report failures at agencies are not design problems. They are definition problems, timing problems, or tracking changes nobody wrote down. A QA checklist and a shared metric definitions template catch those before the client does.
Why report QA fails at agencies
An agency runs many clients, and each one has its own ad accounts, CRM, analytics property, and spreadsheet. Templates get copied from one account to the next and carry old assumptions with them. Definitions drift: “lead” means a form submit in one account and a qualified contact in another. When a number moves, account managers often cannot tell whether the cause is a tracking break, a real change in performance, or a change they made themselves. The report looks finished, but nobody can defend it when the client asks.
Metric definitions template
Write the definitions down once per client, then reuse the structure across accounts. Each row is one metric. The columns are the fields that cause disputes when they are missing. The rows below are examples of how to fill the template, not definitions to copy unchanged into every client file.
| Metric | Definition | Source of truth | Formula | Attribution/window | Owner | Notes |
|---|---|---|---|---|---|---|
| Spend | Total cost for the period across the paid accounts in scope | Ad platform reporting, per account | Sum of platform spend in account currency | Calendar period in the account time zone; no attribution | Account lead | List every account and currency included |
| Leads | Submissions counted by the rule agreed with the client | GA4 or CRM, named explicitly | Count of the agreed event or contact creation | Event or record date; window written down | Account lead | Say which source the client sees |
| Qualified leads | Leads that have reached the client’s qualification stage | CRM lifecycle or stage field | Count of contacts at or past the agreed stage | Stage date; any lookback written down | Client ops and account lead | Changes to the qualification rule must be annotated |
| Cost per lead | Spend divided by leads | Derived from the two rows above | Spend ÷ Leads | Same period and source for both inputs | Account lead | Never mix sources between numerator and denominator |
| Conversions (platform-reported) | Conversions as the ad platform counts them | Ad platform | Platform conversion count | Platform attribution setting, recorded per account | Paid media lead | Label as platform-reported; do not compare directly with CRM counts |
| Revenue | Revenue the client agrees to report | Commerce platform or CRM, named | Sum of agreed order or deal value | Order or close date; refund rule stated | Client finance and account lead | Currency and tax treatment written down |
| ROAS | Attributed revenue for paid media divided by spend | Derived from the two rows above | Attributed revenue ÷ Spend | Same attribution source and window as revenue and spend | Account lead | Show the revenue source next to ROAS |
| Sessions | Analytics sessions for the period | GA4 property named in the template | Count of sessions in the property | Property time zone and filters stated | Analytics owner | Note any filters or excluded traffic |
Attribution windows differ by platform and by account setting, and they can change over time. The template should not assume a default for any platform. Every row that depends on attribution, a lookback period, or a reporting window needs the setting in use, where to check it, and the date it was last confirmed. If the window cannot be written down, the metric is not ready to report.
Pre-send QA checklist
Run this list on every report before it goes to the client. Each item is a yes or a documented exception.
- Date range and time zone match the agreed reporting period in every source.
- Every source has been refreshed after the period closed, and the refresh time is noted.
- Spend totals match the ad platform UI within a tolerance you set in advance and recorded in the template.
- Conversion definitions are the same as last period, or the change is annotated.
- Zero days and spikes are explained, or listed as open questions with an owner.
- Currency is stated and matches the account currency.
- Tracking changes in the period, such as tag, form, or event changes, are annotated on the charts and in the commentary.
- Commentary explains why numbers moved, not only what moved.
- Every link in the report opens to the right destination.
- Client-specific KPIs appear on page one.
Monthly and quarterly checks
The pre-send checklist catches errors in one report. These recurring checks catch the drift that builds up across many reports.
| Check | Cadence | What to confirm |
|---|---|---|
| Definitions review | Quarterly, with the client | Each metric still means what the client thinks it means, and the sign-off is recorded |
| Tracking audit | Quarterly | Tags, events, conversion actions, and CRM stage rules still fire and map the way the template says |
| Access and permissions | Quarterly | Only current staff and client users can reach each ad account, analytics property, and CRM |
| Connector health | Monthly | Every automated pull ran, row counts look as expected, and no source has stopped updating without notice |
| Attribution and lookback settings | Monthly | Platform settings match what the template records for each account |
Handling discrepancies in the report
When two numbers disagree, show both of them. Name each source, state each value, and state the difference. Then explain the likely cause using the definitions and windows in the template: a different attribution window, a time zone shift, deduplication, a filter, or a real change in the business. If the cause is not known yet, say so, name what is being checked, and give the date it will be resolved. Do not quietly adjust a number to match another platform. A silent fix makes the next discrepancy harder to explain, and it hides a tracking problem the team needs to see. If the team decides to change the reported source of truth, annotate the change and restate the prior period on the same basis where that is possible. The reasons numbers diverge are covered in why your numbers never match between platforms.
What to automate and what a human checks
Automation should do the repeatable work: pulling sources, applying the template’s date and currency rules, and flagging anything that breaks a check. A person still decides what a number means and what the client should do about it.
| Task | Automate | Human check |
|---|---|---|
| Scheduled source pulls | Yes, with a log of each run | Confirm the run completed and row counts look plausible |
| Spend and session tie-outs | Yes, against the agreed tolerance | Review any difference above the tolerance and explain it |
| Date range, time zone, currency | Apply the template’s settings consistently | Confirm the period matches what the client agreed to |
| Zero days and spikes | Flag automatically | Decide the cause and write the explanation |
| Tracking-change annotations | Log known tag and event changes | Confirm the annotation appears on the report |
| Commentary | Not automated | Write why the numbers moved and what happens next |
| Link checks | Yes | Spot-check the client-facing destinations |
| Page-one KPIs | Template-driven layout | Confirm the client’s priority KPIs are the ones shown |
For the wider process, read the client reporting workflow for agencies and the client reporting system for agencies. For the stack that feeds the template, see how to set up your agency’s reporting infrastructure. The service is covered on the agency client reporting page, and the industry context is on marketing analytics for agencies. If you want a second pair of eyes on a report before it goes out, book a tracking audit: bring the last report and we’ll check it against the definitions above.
Frequently asked questions
What should a client reporting QA checklist include?
At minimum: the date range and time zone, a refreshed source for every metric, spend tied out to the ad platform within a tolerance set in advance, conversion definitions that are unchanged or annotated, explanations for zero days and spikes, currency, tracking-change annotations, and client KPIs on page one.
What is a metric definitions template?
A metric definitions template is a shared table that records, for each reported metric, its definition, source of truth, formula, attribution or window, owner, and notes. It stops the same metric name from meaning different things across accounts and months.
How should an agency handle a discrepancy in a client report?
Show both numbers and name their sources, then explain the gap using the definition and window in the template. Do not silently change a number to match another source. If the cause is not known yet, say so and state what is being checked.
Can MetricMaven help with client reporting QA?
Yes. We map the source fields, attribution windows, exclusions, and CRM stages behind each client metric, then set up the checklist and definitions template so account teams can run the same QA every reporting cycle.
