Skip to main content

Agencies · Client reporting

DashboardPerformance agencies

Client reporting dashboards that agencies stop rebuilding every Monday

Most agency reports are copied out of four ad platforms into a slide deck every week. Here is one dashboard per client, filled by workflows, sent on a schedule, with commentary an account manager approves.

Valnora & Elric team6 min read

Client · Lumen Skincare (illustrative)
Illustrative example
Last 8 weeksAll channelsINR
Ad spend₹18.4L+6% vs previous period
Shopify revenue₹61.2L+11% vs previous period
Blended ROAS3.3×+0.2 vs previous period
Meta ROAS2.1×−0.4 vs previous period
ROAS by week, Google Ads vs MetaGoogle AdsMeta
W1W2W3W4W5W6W7W8

Campaigns this week

CampaignChannelSpendROASStatus
Brand searchGoogle Ads₹1.9L6.8×On track
Vitamin C serum, prospectingMeta₹2.6L1.6×Review
Retargeting, 30 daysMeta₹1.1L3.4×On track
Performance Max, bestsellersGoogle Ads₹2.2L3.1×On track
Illustrative

4 → 1

Places opened to report on one client

Illustrative. Ads, Instagram and store figures sit on one dashboard.

Illustrative

Hours → mins

Weekly report preparation per client

Illustrative. The report is scheduled; the person edits commentary.

Illustrative

0

Reports sent without a person reading them

Every commentary email waits for the account manager’s approval.

Illustrative example. Figures show how the workflow is measured; they are not customer results.

Ask an account manager what Monday morning looks like and the answer is usually the same: export from Google Ads, export from Meta, screenshot Instagram insights, pull orders from Shopify, paste it all into a deck, then write three paragraphs on what it means. Multiply that by fifteen clients and reporting becomes the job, not the work it reports on.

This post walks through a client reporting setup built with Agent Serve Dashboards: one dashboard per client, filled by workflows, sent on a schedule, with commentary drafted by a Relay and approved by the account manager. All figures shown are illustrative.

How it works

From ad platforms to a client-ready report

Workflows pull Google Ads, Meta, Instagram and Shopify figures into tables, each client sees only their own rows, and a Relay drafts weekly commentary that an account manager approves before it is sent.

Data · Collect

  1. 01Google Ads reportsCampaign and ad performance read through the Google Ads block, read only.
  2. 02Meta ads insightsCampaign insights from Meta’s Marketing API, called with the API block.
  3. 03Instagram and ShopifyAccount and media insights, plus orders and revenue from the store.
  4. 04Performance tableOne row per client, channel and day, with a client column for access rules.

Dashboard · Per client

  1. 05Client dashboardSpend, revenue, ROAS, orders and Instagram reach, filtered to one client.
  2. 06Spend and ROAS monitorsAlert the account team when a client’s ROAS drops below an agreed floor.
  3. 07Scheduled reportWeekly PDF or link sent to the client’s contacts.

Relay · Commentary

  1. 08Reporting RelayRuns weekly, reads the client’s numbers and drafts what changed and why.
  2. 09Account manager approvesThe email goes to the client only after the account manager approves it.

Getting every channel into one table

Dashboard panels read workspace Tables, so the first job is one performance table with a row per client, channel and day, and a client column on every row.

  • Google Ads. A scheduled workflow in the workflow builder uses the Google Ads block to read campaign performance, ad group and ad performance, or a custom query, for each client account. The block is read only, which suits reporting.
  • Instagram. The Instagram block reads account and media insights: reach, impressions and engagement for the client’s professional account.
  • Shopify. The Shopify block lists orders, so revenue, order count and average order value land next to the ad spend that drove them.
  • Meta ads. There is no built-in Meta block. The same scheduled workflow calls Meta’s Marketing API insights endpoint with the generic API block, using a token stored as a workspace secret. For questions between reports, add Meta’s official ads server under Settings → Tool connections, a standard way for AI agents to use another product’s tools; Chat, and a Relay allowed to use that connection, can then list ad accounts and read campaign insights.

Agree the definitions before you build. Put spend, revenue and ROAS into named Metrics, so the tile, the chart and the Relay all count the same way. Agencies lose more client trust over two different ROAS numbers than over a bad week.

What the client dashboard shows

Build the dashboard once and filter it by client. Read it top to bottom.

  • KPI tiles. Ad spend, Shopify revenue, blended ROAS and ROAS for each channel, each against the previous period.
  • ROAS by week. Google Ads and Meta side by side, so a slow decline in one channel is visible before it shows in revenue.
  • Campaigns this week. Spend, ROAS and a status per campaign. A rule can mark anything below the client’s agreed ROAS floor as Review.

For D2C clients that sell on cash on delivery, add a column for prepaid versus COD orders. Revenue that later comes back as returns tells a different story from prepaid revenue.

Each client sees only their own rows

Row-level policies on the client column decide what each person sees in tables, dashboards, exports and scheduled reports. An account manager sees their book of clients. The agency lead sees everything. A client contact who signs in as a read-only member sees only their brand.

This matters most in scheduled reports. One dashboard serves fifteen clients, and the access policy, not a copy of the dashboard, keeps each report to one client’s data.

Scheduled reports instead of decks

Set a weekly scheduled report on the dashboard for each client: a PDF, PNG or link sent to the client’s contacts, including external email addresses. Daily and monthly schedules work the same way, so a fast-moving launch can get a daily snapshot while a retainer client gets a monthly summary.

How to measure it

Illustrative

4 → 1

Places opened to report on one client

Illustrative. Ads, Instagram and store figures sit on one dashboard.

Illustrative

Hours → mins

Weekly report preparation per client

Illustrative. The report is scheduled; the person edits commentary.

Illustrative

0

Reports sent without a person reading them

Every commentary email waits for the account manager’s approval.

Illustrative example. Figures show how the workflow is measured; they are not customer results.

A Relay drafts the commentary

Numbers alone do not tell a client what to do next. Create a Relay, an AI coworker with its own instructions, called Reporting. Give it a weekly schedule with the agency’s time zone, the performance table and the metrics bound to it, and instructions such as: explain the three biggest changes, name the likely cause from the data, and suggest one decision for the client call.

What the solution produces

Weekly commentary drafted by the Relay (illustrative)

Memo

Blended ROAS rose to 3.3× this week, led by brand search and Performance Max.

Meta prospecting for the vitamin C serum fell to 1.6×. Frequency is up and the same two creatives have run for five weeks.

Shopify orders rose 9%, but average order value fell after the bundle offer ended on day 3.

Suggested for the call: refresh Meta prospecting creative and decide whether to bring the bundle back.

Draft email to the client · waiting for the account manager

The Relay drafts the email in Assist mode. Relays never send email without an approval, so the account manager sees the exact message, edits it if needed and approves it. Approvals expire after 24 hours by default, so a forgotten draft does not go out late. Set the recipient policy to an allowlist of client domains, up to 20, so the Relay cannot write to anyone else.

Alerts between reports

Weekly reports are too slow for a campaign that breaks on a Tuesday. Add Monitors on blended ROAS and daily spend per client. They re-check as often as every five minutes and alert the account team by email, in the app or in Slack. A monitor alert can also start the Relay, which drafts a short note on what moved, for the account manager to read before calling the client.

Controls and governance

Row-level access

Row-level policies narrow what each person sees in tables, dashboards, exports and scheduled reports.

Approvals before action

Relays never send email or book meetings without an approval, under any autonomy setting. An approval covers the exact payload the reviewer saw and expires if nobody decides.

Roles and permission groups

Admin, write and read roles per workspace, plus permission groups that limit which models, blocks and integrations a team can use.

Audit trail

Proposals, approvals, declines and executed actions are written to the workspace audit log, which admins can export.

Run logs

Every workflow run records each block’s inputs, outputs and errors, so a reviewer can trace how a result was reached.

SSO and SCIM

Sign in through your identity provider with SAML 2.0 or OIDC, and provision people with SCIM.

More on how Agent Serve handles access, data and audit on the security page.

Start with one client

Pick a client with clean tracking and a patient contact. Run the dashboard alongside your current deck for two weeks, and check every tile against the platform’s own numbers. Once they match, switch that client to the scheduled report and add the next one. For creative work behind those campaigns, see the creative production line.

Questions teams ask

Can the workflow change budgets in Google Ads?

No. The Google Ads block reads reports only: customers, campaigns, ad groups, performance and custom queries. Budget and bid changes stay in Google Ads with your team.

Do clients need an Agent Serve login?

Not to receive reports. Scheduled reports go to external email addresses as a PDF, PNG or link. If a client contact signs in as a read-only member, row-level access limits them to their own rows.

How fresh are the numbers?

Panels read the performance table, so they update as the workflows write new rows. Data from a connected warehouse can refresh every 15 minutes or be queried live. Treat it as near-real-time, not second by second.

Before you start

What you need

  • Read access to each client’s Google Ads account, Instagram professional account and Shopify store
  • A Meta Marketing API access token per client, stored as a workspace secret
  • One performance table with a client column, and agreed definitions of spend, revenue and ROAS
  • Client contact emails and a send day for the weekly report
  • A Relay recipient policy set to an allowlist of client domains
  • A named account manager per client to approve commentary

Written by the Valnora & Elric team.

Figures, dashboards and sample outputs in this article are illustrative examples, not customer results. This article is for information only and isn't legal or regulatory advice.

Enterprise access

Put AI agents to work across your team

Agent Serve is available to teams by invitation. Tell us what you want to build and we will set up your workspace with you.