Browse the docs

Agent setup guide

Client Report Writer

Monthly: turns each client's KPI sheet into a client-ready report, saved in Notion and emailed after the account manager approves.

Available About 25 min to set up

What it does

Monthly: turns each client's KPI sheet into a client-ready report, saved in Notion and emailed after the account manager approves.

  • Once a month, reads your Clients tab in Google Sheets and, for each client (up to 30), their own KPI sheet.
  • AI compares last month with the month before and the client's goals, and writes a client-ready report: headline, key numbers with changes, wins, misses and next steps, using only the sheet's numbers.
  • Each metric's % change and each derived figure (e.g. cost per lead) are recalculated in code before anyone sees them — never by the AI; anything the AI got wrong is corrected and flagged to the account manager.
  • All drafts wait together in Reviews; the account manager edits them and can hold any report.
  • Each approved report is checked in code (data ready, still marked to send, 1–5 valid recipients, no placeholders left) and by an AI check that only stops numbers that don't match the key numbers, invented results, promises and mentions of AI, quoting the sentence. Then it is saved as a page in your Notion database and emailed to the client, with replies to the account manager.
  • Reports that fail the check, or whose sheet is missing last month, are held and the account manager is emailed why.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Google Sheets and Notion, connected in Settings → Integrations.
  • A Clients tab (Client, Contact, Email, Sheet, Tab, Goals) and one KPI tab per client with a row per month, kept up to date.

What it doesn't do

  • It doesn't pull numbers from ad platforms, Google Analytics or call tracking — they must already be in the KPI sheets.
  • It never emails a client before the account manager approves.
  • It doesn't create charts or PDFs: the report is plain text in the email and in Notion.
  • It never invents results or explanations; when the sheet is missing data, the report is held.
  • It handles up to 30 clients per run (duplicate the agent for more).

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Google Sheets and Notion.
  • Nothing to send: the agent runs on a schedule.
  • About 25 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Google Sheets

Connect the Google account that can open your Clients spreadsheet and every client's KPI sheet (Settings → Integrations → Google Sheets).

3. Connect Notion

Connect the Notion workspace with your client reports database (Settings → Integrations → Notion).

4. Describe your agency's reports

Open “Write the client report” and replace the placeholder with your agency name, tone, KPI definitions and sign-off.

SettingWhat to enterIn step
Agency voice, KPI definitions and sign-offReplace the placeholder with your agency name, the tone you want, how each KPI is defined (e.g. a lead = a form fill or a call over 60 s), anything never to say, and the sign-off. It starts as “[DESCRIBE YOUR AGENCY, REPORT TONE, KPI DEFINITIONS AND SIGN-OFF HERE]” until you replace it.“Write the client report”

5. Pick your client list and KPI account

Open “Read your client list” and pick the account, spreadsheet and tab (columns Client, Contact, Email, Sheet, Tab, Goals); then pick the same account in “Read the client's KPI sheet”.

SettingWhat to enterIn step
Google account (client list)The Google account that can open your Clients spreadsheet. Pick your connected Google Sheets account.“Read your client list”
Clients spreadsheetPaste the link of the spreadsheet with your client list.“Read your client list”
Clients tabThe tab with one row per client, e.g. Clients (columns Client, Contact, Email, Sheet, Tab, Goals).“Read your client list”
Google account (KPI sheets)The Google account that can open every client's KPI spreadsheet (usually the same one). Pick your connected Google Sheets account.“Read the client's KPI sheet”

6. Pick your Notion reports database

Open “Save the report in Notion” and pick your workspace and database.

SettingWhat to enterIn step
Notion workspaceThe Notion workspace your client reports database is in. Pick your connected Notion account.“Save the report in Notion”
Client reports databaseThe Notion database each report becomes a page in (title property “Name”). Share it with Fluxo Flow first: ••• → Connections.“Save the report in Notion”

7. Add the account manager's email

Open “Email it to the client” (Reply-to) and “Tell the account manager it was held” (To) and enter the account manager's address.

SettingWhat to enterIn step
Account manager's email (replies)Clients' replies to the report come back to this address (Reply-to).“Email it to the client”
Account manager's email (held reports)Replace the example address with the account manager (or up to 5, comma-separated) who is told when a report is held instead of sent. It starts as “account-manager@your-agency.example” until you replace it.“Tell the account manager it was held”

8. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

9. Switch the trigger on

Open the trigger, set your time zone (and day, if not the 3rd) and switch the schedule on.

How it works

The agent is a normal workflow with 15 steps (2 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • Monthly, on the 3rd at 9:00 — Runs on a schedule (cron 0 9 3 * *, UTC — change it in the trigger's settings). Runs once a month, after last month's numbers are in your KPI sheets. Set your time zone and day on the trigger.
  • Read your client list — Google Sheets: Read rows. Reads your Clients tab: one row per client with Client, Contact, Email, Sheet (the KPI spreadsheet link), Tab and Goals.
  • Each client — Repeats the steps below for each item (up to 30 per run). Repeats the next three steps for every client row (up to 30 per run).
  • [For each item — “Each client”] Read the client's KPI sheet — Google Sheets: Read rows. Reads the client's KPI tab (the Sheet and Tab from their row): one row per month or per channel, with your own column names.
  • [For each item — “Each client”] Write the client report — AI step (runs on your AI provider key). AI compares last month with the month before and the client's goals, and writes a client-ready report: headline, key numbers, wins, misses and next steps — using only the numbers in the sheet.
  • [For each item — “Each client”] Check the math — Step. Recalculates each metric's % change (value vs. the month before) and each derived figure (e.g. cost per lead) in code — not by AI — writes the correct figures into the report and email, and flags anything the AI got wrong for the account manager.
  • Account manager approves the reports — A person approves or rejects it in Reviews (the run waits). All of this month's drafts wait in Reviews together. The account manager edits any report, sets send to false on any that shouldn't go out, and approves; nothing reaches a client before that.
  • Each approved report — Repeats the steps below for each item (up to 30 per run). Branch: Approved. Repeats the wording check, the code checks, the Notion page and the email for every approved report.
  • [For each item — “Each approved report”] Final check on the numbers and wording — AI step (runs on your AI provider key). AI reads each approved email for numbers that don't match the report's key numbers (typos made while editing), invented results or causes, promised results and mentions of AI. It must quote the exact sentence it objects to. The recipient, send flags and placeholders are checked in code next.
  • [For each item — “Each approved report”] Check before sending — Step. In code: the data was ready, still marked to send, 1–5 valid recipients, a subject and a body with no placeholders left — plus the wording check's verdict. Anything that fails is held and the account manager is told why.
  • [For each item — “Each approved report”] Send it? — Decision: picks the branch to follow. Reports that pass every check are saved and emailed; the rest are held and the account manager is told why.
  • [For each item — “Each approved report”] Save the report in Notion — Notion: Create a page in a database. Branch: Passes. Creates a page in your client reports database with the report's title and full text.
  • [For each item — “Each approved report”] Email it to the client — Sends an email from your workspace's sender. Emails the approved report to the client's contacts from your workspace's sender, with replies going to the account manager.
  • [For each item — “Each approved report”] Tell the account manager it was held — Sends an email from your workspace's sender. Branch: Held. Emails the account manager which report was held and why, so they can fix it and send it by hand.
  • Month's reports done — Kept in the run history. The run history keeps every report and what happened to it.

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
  • For-each loops repeat only the first 3 items.

Go live

  • Open the trigger, set your time zone (and day, if not the 3rd) and switch the schedule on.
  • Scheduled runs start only once the schedule is activated, and can't repeat faster than your plan's minimum interval.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

How do I lay out the sheets?

A Clients tab with the columns Client, Contact, Email, Sheet, Tab and Goals (one row per client; Sheet is the link to that client's KPI spreadsheet, Tab the tab name). Each KPI tab has one row per month (a Month column like 2026-09) and one column per metric (Leads, Spend, Calls, Bookings…). The Google account you connect must be able to open every KPI sheet.

Does it pull numbers from Google Ads or Meta?

No. The numbers must already be in the KPI sheets (typed in, or filled by your own export or Looker Studio extract).

Can the AI get the percentages wrong?

Not in what your client sees: every month-over-month % change and derived figure (like cost per lead) is recalculated in code from the sheet's numbers and written into the report and email. If the AI's math was off, the review screen shows what was corrected.

What if a client's sheet is missing last month?

That report is marked not ready, held after approval, and the account manager gets an email saying what's missing. Nothing is estimated.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • It didn't run at the expected time: the schedule must be activated, and its time is in the trigger's timezone.
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .