Skip to content

Dashboards & KPIs

Agency client reporting: an automated dashboard instead of screenshots

How a marketing agency can automate client reporting with a clear report structure, budget pacing, plan vs actual, explained changes, a white-label portal and chat reports, so account managers stop losing days to screenshots.

DATUMPANELPublished Updated 7 min read

Cover for the agency client reporting article

At a typical agency, month-end means account managers spending days collecting screenshots from ad platforms, merging spreadsheets and writing commentary. Clients don't pay for that time, and the report gets two minutes of attention. An automated client dashboard fixes both problems.

What clients actually want

Clients don't need 40 platform metrics. They want answers:

  1. How much did we spend, and was it on plan?
  2. What did we get in revenue or leads, according to their own CRM and not just the ad platforms?
  3. What changed, and why?
  4. What is the agency doing next?

Report structure

BlockContent
Summaryspend, leads/sales, CPA or ROAS, vs last period and plan
Pacingmonth-to-date spend vs plan, forecast for month end
ChannelsGoogle, Meta, TikTok, LinkedIn: spend, results, CPA/ROAS
Campaignstop performers and laggards, with explanations
Creativesbest ads, with previews
Commentary3–5 sentences: what happened, why, what's next

Pacing and plan vs actual

Pacing is the most useful block for both sides:

Forecast spend = month-to-date spend / days elapsed × days in month

ClientMonthly planActual on the 15thForecastStatus
Client A20,00011,20022,400overspending
Client B15,0006,10012,200underspending
Client C8,0004,0508,100on track

Illustrative. An internal agency dashboard with pacing across all clients lets the account manager spot a problem on the 15th instead of the 30th.

Client data, not just platform data

The strongest retention argument is showing results in the client's own money:

  • for ecommerce, orders and revenue from Shopify or the store backend;
  • for lead gen, CRM leads with quality stages (qualified, deal, paid);
  • for apps, installs and subscriptions from the MMP.

This needs read-only access to the client's CRM or an export, and UTM discipline written into the contract (UTM convention). Combining the ad platforms is covered in cross-channel ad reporting.

A white-label portal

For an agency, the client portal is part of the product:

  • your domain and brand (reports.agency.com), not someone else's tool;
  • separate access per client, so each sees only their own data;
  • roles: client owner, client marketer, agency account manager;
  • no per-viewer licences, which matters once you have dozens of clients (custom dashboard vs BI).

Explaining changes

Numbers without explanation lead straight to "why?" emails. It helps to draft the commentary automatically:

  • the biggest changes by channel and campaign;
  • causes the data can show (rising frequency, CPC shifts, paused campaigns);
  • the manager edits the draft and adds the action plan.

An AI assistant on your data can write that draft from the numbers, with a human reviewing it.

Delivery

  • Weekly in chat: 5 lines plus a link to the portal (automated reports).
  • A monthly PDF from the portal for clients who want a file.
  • Agency alerts: overspend, campaigns with no results, rejected ads.

How much time it saves

That depends on the number of clients and your current process. The main saving is that month-end assembly turns into editing commentary on numbers that are already there. You also get fewer copy-paste errors.

Common mistakes

  • Reports with platform metrics only and no client data.
  • A different template per client, which can't scale.
  • No plan, so nobody can say whether a result is good or bad.
  • Accessing client ad accounts through managers' personal logins.
  • A monthly report that arrives too late to change anything.

Checklist

  • One report template for all clients
  • Budget plans and target KPIs stored in the system
  • Pacing with a month-end forecast
  • Results from the client's own CRM
  • Separate access per client
  • Commentary: what happened, why, what's next
  • Weekly digest plus agency alerts

See an example client portal on the agency page.

Step by step: one pipeline for all clients

Building a separate dashboard per client doesn't scale past a handful. The pattern that does:

  1. One warehouse, one schema, a client_id column on every table. Each client's ad accounts, GA4 property and CRM feed load into the same tables.
  2. A client registry table: client ID, name, ad account IDs, GA4 property ID, currency, time zone, targets (CPA, ROAS, budget), report recipients.
  3. One report template whose queries filter by client_id. New client = new rows in the registry, not new dashboards.
  4. Row-level access so each client's login sees only their rows.
  5. Scheduled delivery of a summary (email or messenger) with a link to the live view.
-- weekly KPI per client against their own targets
SELECT c.client_name, w.week,
       w.spend, w.conversions, SAFE_DIVIDE(w.spend, w.conversions) AS cpa,
       c.target_cpa,
       SAFE_DIVIDE(w.spend, w.conversions) / c.target_cpa - 1 AS cpa_vs_target,
       SAFE_DIVIDE(w.spend, c.monthly_budget * 7 / 30.4) AS weekly_pace
FROM mart.client_weekly w
JOIN ref.clients c USING (client_id)
WHERE w.week = DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY), WEEK(MONDAY))
ORDER BY cpa_vs_target DESC;

Sorting by distance from target gives the account team a morning list: the clients at the top need attention first.

Worked example: a monthly report page

Illustrative structure for a lead-generation client:

BlockContent
Summary (3 sentences)"Leads 214 (+12% MoM) at CPA 380 (target 400). Qualified rate 41%. Next month: shift 15% of budget to search."
Goal trackingleads, CPA, qualified leads, cost per qualified lead vs target
Channelsspend, leads, CPA, qualified rate by channel
What we did3–5 changes made this month and their effect
Next steps2–3 planned actions with expected impact
Appendixcampaign-level table, for the client's marketer

"Cost per qualified lead" (using the client's CRM status) is the line that turns the conversation from clicks to business. It requires the client's CRM feed, which is worth asking for at onboarding.

Data access at onboarding: a checklist

  • Ad accounts shared with the agency's manager account (read access at minimum)
  • GA4 property: Viewer or Analyst role, plus the BigQuery export if available
  • CRM: an export or API access for lead status and revenue (only the fields needed)
  • Targets agreed in writing: CPA or ROAS, budget, what counts as a qualified lead
  • Report recipients and frequency
  • A data processing agreement where personal data is involved

Keeping reports honest

Clients trust reports that also show what didn't work. A short "what didn't work" line each month, such as "the video test raised CPA by 30%, stopped on day 9," costs nothing and makes the good numbers more believable. Avoid switching metrics between months to show a better picture. If a metric definition changes, say so in the report and show both versions for one period.

Scaling: what breaks at 20+ clients

ProblemSymptomFix
Connector costs per accountthe tool bill grows with every clientpull from platform APIs into your own warehouse, or negotiate per-workspace pricing
Token and access churnreports silently go empty when a client revokes accessa freshness check per client, alert the account manager
One-off customisationseach client's dashboard drifts from the templateallow configuration (targets, metrics shown) in the registry, not code changes
Currency and time zonescross-client totals are meaninglessreport agency-level totals in one currency with documented rates

Keep an internal "all clients" view for the agency itself: spend under management, clients behind target, accounts with stale data. It's the screen the agency owner opens first.

FAQ

Can we connect clients with different platforms and currencies?

Yes. Data is mapped to one schema, currencies are converted at the daily rate, and each client sees the report in their own currency.

How do we keep one client's data from another?

With data-level access control, so each client user only sees their own dataset. The agency gets separate roles on top of that.

Can clients edit the report themselves?

Usually just filters and periods. The structure stays the same for everyone so the agency can scale.

How is this better than a Looker Studio template?

Per-client access, agency branding, chat reports, pacing across all clients, and a join with each client's CRM in the warehouse.

Tags: agenciesreportingwhite-label

Author

DATUMPANEL — Business data analytics

DATUMPANEL is an independent data analyst based in Ukraine. I build dashboards for business owners, set up GA4 and the BigQuery export, and run data pipelines and Telegram auto-reports for e-commerce, service businesses, SaaS and agencies, from data audit to decisions.

Message on Telegram[email protected]Open the demo

Keep reading

  • Dashboards & KPIs11 min read

    Business dashboards: how to build one people actually open

    What a business dashboard is, the layers underneath it, which metrics belong on the first screen, realistic timelines, and how to avoid building yet another pretty report nobody uses.

    Pillar guide

  • Dashboards & KPIs7 min read

    Dashboard design: 12 rules so people actually use it

    Practical rules for business dashboard design (hierarchy, chart choice, comparisons, colour, accessibility, mobile), with typical mistakes and a pre-launch checklist.

  • Dashboards & KPIs6 min read

    Service business analytics: bookings, utilisation and no-shows

    The metrics salons, studios, schools, repair shops and local services need (bookings, schedule utilisation, no-shows, cost per booking, revenue per staff member, repeat visits) and how to pull them from booking tools, your CRM and ads.

Want this kind of analytics for your business?

Tell me what data you have and which questions it can’t answer yet. I reply the same day with a plan, a timeline and the quick wins.

Or reach me directly:

Open the demo →

Send a request

I reply within one business day.

What are you interested in
Industry
A few more details · optional
Approximate budget · optional
When to start · optional
Data sources you have · optional

By submitting, you agree to the Privacy policy — your contact details are used only to reply to this request.