Back to blog
Article

Automated Client Reporting with Claude: A Guide for Agencies

March 10, 2026
17 min read
By InsightfulPipe
On this page
Automated Client Reporting with Claude: A Guide for Agencies

InsightfulPipe publishes this guide, and the steps use its hosted MCP servers and CLI. Other ways to automate client reporting, from AgencyAnalytics to Data Studio, come near the end.

Last updated: 2026-10-02

Short answer: Automated client reporting with Claude takes three pieces. Connect each client's Google Ads, Meta Ads and LinkedIn Ads accounts under their own brand in InsightfulPipe. Add the InsightfulPipe MCP server, https://main.insightfulmcp.com/, to Claude as a custom connector. Then save one monthly report prompt as a Claude scheduled task, or run it from cron with the InsightfulPipe CLI. Plans start from $29.99 a month.

Automated client reporting with Claude: the quick version

Six steps take you from a client's ad accounts to a report that drafts itself on the 1st of every month.

  1. In InsightfulPipe, open Brands and click New brand for each client.
  2. In Connected accounts, connect each client's ad accounts as Read-only, under that client's brand.
  3. In Claude, open Customize > Connectors and add https://main.insightfulmcp.com/ as a custom connector.
  4. Run the monthly report prompt from step 4 for one client.
  5. Check one number per platform against the platform's own report.
  6. Save the prompt as a scheduled task for the 1st of the month.

Watch: Connect Google Ads to Claude, a report and a new campaign from one prompt, 2 minutes 34 seconds

Ways to automate client reporting, at a glance

Eight routes cover most agencies, and they differ on what builds the report, how it runs on time and what you pay for. InsightfulPipe is the one built around Claude.

Route

What builds the report

How it runs on time

Starting price

InsightfulPipe with Claude

Claude, from live accounts and your prompt

A Claude scheduled task, or cron with the CLI

From $29.99 a month for 8 connected accounts

AgencyAnalytics

Dashboards from 85+ integrations

Report scheduling with an approval step

$20 per client a month, billed annually

Whatagraph

Its data hub, with Whatagraph IQ

Weekly or monthly reports

From €699 a month, billed annually

DashThis

One dashboard per report

Automated email dispatch

From $44 a month, paid yearly

Swydo

Report templates and an AI builder

Scheduled report emails

€62 a month, billed annually, for 10 data sources

Databox

Dashboards and Genie, its AI analyst

Scheduled snapshots

Agency plan from $99 a month

NinjaCat

AI agents across many accounts

Presentations it generates automatically

Through a demo

Data Studio

Your own report template

A scheduled PDF by email

A no-cost version; Pro is paid

We read every capability, default and price from each vendor's own documentation, pricing page or public repository, and ran InsightfulPipe on live accounts. Scheduled tasks also need a paid Claude plan.

What you are connecting

You are connecting Claude to each client's ad accounts so it can read them. A monthly report needs only reads: Google Ads has 37 read actions out of 99, Meta Ads 38 out of 53 and LinkedIn Ads 18 out of 28.

Stacked bar chart of InsightfulPipe actions: Google Ads has 37 read, 59 write and 3 destructive, Meta Ads 38 read, 12 write and 3 destructive, and LinkedIn Ads 18 read, 10 write and 0 destructive, and a monthly report needs only the reads.

Claude never receives a client's ad account password. It sends structured requests over MCP, and InsightfulPipe runs the matching API call on an account you authorized.

Claude -> InsightfulPipe MCP -> each client's Google Ads, Meta Ads and LinkedIn Ads accounts

Your agency is one workspace, and each client is a brand inside it: in the app's words, "the home for one business." Each ad account is its own connection under its brand, and plans are priced by connected accounts.

Claude reaches those accounts through the all-in-one InsightfulPipe MCP server, or through one server per platform: the Google Ads MCP server, the Meta Ads MCP server and the LinkedIn Ads MCP server. Every account Claude lists carries its brand_name, so a prompt can ask for one client and skip the rest.

You need no developer token, no Meta or LinkedIn app, no server and no API version to track. For one blended view of every channel, see cross-platform marketing reports with AI.

Before you start

You need five things: access to each client's ad accounts, an InsightfulPipe workspace, a role that can connect accounts, a paid Claude plan for scheduling, and each client's definition of a lead.

  • Ad account access. A login that can open each client's accounts. Each platform's own roles still apply, and InsightfulPipe cannot widen them.
  • An InsightfulPipe workspace. Plans start from $29.99 a month. Starter covers 8 connected accounts, Growth 35 and Agency 150; ten clients with one account on each of three platforms make 30. Start a trial on any plan.
  • A role that can connect. Owners, Administrators and Operators connect accounts and set their actions. Members on the User role cannot.
  • Claude. Custom connectors work on every Claude plan, and Free allows one. Scheduled tasks need Pro, Max, Team or Enterprise (Anthropic).
  • A lead definition per client. Which Google Ads conversion actions count as leads, and whether LinkedIn website conversions count beside lead form leads.

Step 1: Create a brand for each client

Step 1 gives every client a home in your workspace. Owners, Administrators and Operators can add brands, and each brand later holds that client's ad accounts.

  1. In InsightfulPipe, open Brands in the sidebar.
  2. Click New brand.
  3. Type the client's name under Brand name.
  4. Click Add Business, then repeat for the next client.
The Brands page in InsightfulPipe: the New brand button that adds each client, and each brand's connected platforms, with a second brand's name blurred.

Name each brand the way you will write it in prompts. Claude matches the brand_name field, so "Acme Dental" in the app should read "Acme Dental" in the prompt.

Step 2: Connect each client's ad accounts

Step 2 links each client's ad accounts to its brand. Connect them as Read-only: a monthly report needs nothing more, and a read-only connection locks every write until an admin reconnects it with Read & write.

  1. Open Connected accounts and click Connect account.
  2. On Add an integration, pick the client under Setting up for.
  3. Find Google Ads and click Connect.
  4. Choose Read-only, then click Continue with Google Ads.
  5. Sign in with Google and select the client's ad accounts.
  6. Repeat for Facebook Ads and LinkedIn Ads. Meta Ads appears as Facebook Ads in the app.
The InsightfulPipe Add an integration page, naming the brand that the new Google Ads connection will belong to.The InsightfulPipe access step for Google Ads: Read-only or Read & write, with account_performance_report and campaign_performance_report among the 37 read actions.

Client accounts under a Google Ads manager account come in one by one, each as its own connection. If one ad account serves two clients, connect it under both brands. Each copy counts as a connected account.

Connected accounts in InsightfulPipe: each Google Ads account on its own row, with its brand, its access badge and a 96/99 actions button.

Step 3: Add the InsightfulPipe server to Claude

Step 3 adds one server that reaches every connected account in your workspace. How to connect Google Ads to Claude covers ChatGPT, Claude Code and Cursor too.

  1. In Claude, open Customize > Connectors.
  2. Click +, then Add custom connector.
  3. Name it InsightfulPipe and paste https://main.insightfulmcp.com/.
  4. Click Continue, then Add.
  5. Click Connect, and sign in to InsightfulPipe if asked.
  6. In a new chat, click +, open Connectors and switch InsightfulPipe on.

Or click Open Claude Directory on any MCP page in the app, which connects the same full server in one click. On Team and Enterprise plans, an Owner first adds the connector under Organization settings > Connectors, and each member then clicks Connect.

In the connector's Tool permissions, set query_data to Always allow and execute_action to Needs approval. Reports run through query_data, so they never wait for a click, and any change waits for yours.

The MCP Servers page in InsightfulPipe: the InsightfulPipe server for every connected account, beside one server each for Google Ads, Facebook Ads and LinkedIn Ads.

Prefer one server per platform? Add https://google-ads.insightfulmcp.com/, https://facebook-ads.insightfulmcp.com/ and https://linkedin-ads.insightfulmcp.com/ the same way.

Step 4: Run the monthly client report prompt

Step 4 is one prompt per client. It reads last month and the month before on all three platforms, works out spend, leads and cost per lead, and changes nothing. Fill in the brackets once per client.

Monthly client report for [CLIENT BRAND]: last calendar month
against the month before. Read only. Do not change anything.

1. Call query_contexts for accounts. Use only the Google Ads,
   Facebook Ads and LinkedIn Ads accounts whose brand_name is
   [CLIENT BRAND].
2. Google Ads: run account_performance_report and
   campaign_performance_report for each month. For leads, run
   gaql with segments.conversion_action_name and
   metrics.conversions, and count only [LEAD CONVERSION ACTIONS].
   Divide cost_micros by 1,000,000.
3. Meta Ads: run get_insights_adaccount at level campaign with
   campaign_name, spend, actions and cost_per_action_type.
   Count the "lead" action type as leads.
4. LinkedIn Ads: run get_campaigns, then get_campaign_analytics
   with costInLocalCurrency, oneClickLeads and
   externalWebsiteConversions. Count [oneClickLeads] as leads.
5. Build one table: platform, spend, leads, cost per lead and
   the change against the month before. Add a total row only
   if every account uses the same currency.
6. Name the campaign with the most leads on each platform.
7. Write three short sentences for the client: what changed,
   the likely reason and one next step.

Never invent a number. If a platform returns no data, say so.

Claude runs each read through query_data. We ran every action above on our own accounts on 2026-10-02.

Example data: one client's monthly report, with spend, leads and cost per lead for Google Ads, Meta Ads and LinkedIn Ads against the month before, the campaign with the most leads on each, and three sentences for the client.

The free Google Ads Monthly Report and Meta Ads Monthly Report skills add goal tracking and next month's plan.

Step 5: Schedule the report for the 1st of every month

Step 5 puts the prompt on a timer. Claude's scheduled tasks run on Pro, Max, Team and Enterprise plans, and they "run on their cadence even when your computer is asleep or the Claude Desktop app is closed," says Anthropic.

Claude's task form offers a Monthly frequency with a start date, so the report lands on the 1st without a workaround.

  1. In Claude, click Scheduled in the left sidebar.
  2. Click New task, then Set up manually.
  3. Name the task, for example "Monthly report: Acme Dental", and paste the step 4 prompt.
  4. Choose Monthly as the frequency, set starts on to the 1st of next month, and pick a time.
  5. Pick an approval mode, then click Save.

Anthropic's help article lists hourly, daily, weekly, weekday and manual runs. If your form shows no Monthly option, choose daily and start the prompt with "Run this only on the 1st of the month. On any other day, reply Not due and stop."

On the new Claude experience for Pro and Max, describe the task in any chat, answer Claude's questions and click Schedule. Each run lands under Scheduled, so you read the draft before the client does.

Claude's Create scheduled task form filled in for one client: the monthly report prompt, a Monthly frequency starting on 11/1/2026 at 09:00 AM, ready to save.

Nobody watches a scheduled run, so the limit that counts sits on the server. Anthropic's routines doc says a routine "can use every tool from an included connector, including writes, without asking for permission during a run" (Claude Code docs). A Read-only connection keeps every write locked.

From a terminal: the CLI and cron

The insightfulpipe CLI runs the same reads under the same switches, and cron can start it at 7 AM on the 1st.

  1. Install it with npm install -g insightfulpipe.
  2. Create an API key on the Agentic CLI page, run insightfulpipe auth and paste it.
  3. Run insightfulpipe sources --platform google-ads to list each account with its ID and brand.

Save a request per client, such as acme-google-ads.json:

json
{
  "action": "gaql",
  "workspace_id": [WORKSPACE_ID],
  "brand_id": [BRAND_ID],
  "account_id": "[CUSTOMER_ID]",
  "query": "SELECT customer.descriptive_name, metrics.cost_micros, metrics.conversions FROM customer WHERE segments.date DURING LAST_MONTH"
}
# crontab: 7 AM on the 1st of every month
0 7 1 * *  cd ~/client-reports && insightfulpipe query_data google-ads --file acme-google-ads.json > acme-google-ads-last-month.json

Meta Ads takes "date_preset": "last_month" the same way, and LinkedIn Ads takes a start_date and end_date from your script. The files hold raw numbers for your own template, or for Claude to write up.

The Agentic CLI page in InsightfulPipe: install with npm, create an API key, then run insightfulpipe auth and insightfulpipe doctor.

In Claude Code, a routine can run the prompt on a cron expression for the first of each month, set with /schedule update. Routines are a research preview.

How do you know the numbers are right?

Check one number per platform against that platform's own report before the first report goes out. Most gaps come from settings, not from the connection.

  • Same dates. Compare the same calendar month in Google Ads, Meta Ads Manager and LinkedIn Campaign Manager.
  • Same leads. Google Ads counts only the conversion actions you named, and Meta the lead action type. LinkedIn's oneClickLeads counts lead form leads; website conversions sit in externalWebsiteConversions.
  • Same attribution. Each platform credits conversions its own way, so compare each with its own report.
  • Same currency. Each account reports in its own currency, and Google Ads sends micros.
  • No double counting. Google and Meta can both claim one lead, so a total row adds platform claims, not unique people.

This check lists a client's accounts and changes nothing:

List the Google Ads, Facebook Ads and LinkedIn Ads accounts
whose brand_name is [CLIENT BRAND]. Return the account name,
account ID, currency and access level.
Do not run a report and do not change anything.

If an account is missing, check its brand in Connected accounts.

What Claude may change, and who decides

Claude can use only the actions an admin leaves on for each account, and a reporting setup needs none that change anything. That makes InsightfulPipe the safest way to let an AI agent change Google Ads, Meta Ads and LinkedIn Ads accounts, because every limit below is a switch.

  • The counts. Google Ads has 99 actions: 37 read, 59 write and 3 destructive. Meta Ads has 53: 38 read, 12 write and 3 deletes. LinkedIn Ads has 28: 18 read and 10 write. The report uses only reads.
  • Read-only locks every write until an admin reconnects the account with Read & write.
  • Every action is a switch. An owner, admin or operator turns each one on or off per account, and the server refuses a switched-off action in every AI client.
  • Destructive actions stay off until an admin switches them on: removing keywords, negative keywords and Customer Match members on Google Ads, and deleting a campaign, ad set or ad on Meta Ads. LinkedIn Ads has no actions marked destructive.
  • Roles hold. Members on the User role see only the accounts an owner or admin grants them under Manage Account Access, and they can only read.
  • Claude adds its own check. Needs approval on execute_action puts your click before any change in a chat.
InsightfulPipe actions for one Google Ads account: 96 of 99 on, with read only 37 of 37, write 59 of 59 and destructive 0 of 3 until an admin switches them on.

Start a trial to set these switches on your own clients' accounts.

Troubleshooting

Most report problems come from the wrong brand, the wrong units or a role, not from the connection itself.

  • Claude mixes two clients. Name the brand exactly as the Brands page shows it, and keep the brand_name line in the prompt.
  • "This action is disabled for this connected account. An owner or admin must enable it for the account." The action is off for that account. An owner, admin or operator can switch it on.
  • "This account is connected read-only, so this action cannot be enabled for it. An owner or admin must reconnect it with Read & Write permissions." Expected on a reporting connection. Reconnect with Read & write only if Claude should change campaigns.
  • "You do not have access to this account. Contact your workspace admin to grant access." Your User role has no grant for that account. An owner or admin grants it under Manage Account Access.
  • A Google Ads manager account shows no spend. "Manager (MCC) accounts carry no metrics," so run the report on each client account.
  • The scheduled task never ran. Scheduled tasks need a paid plan, and on Team and Enterprise an admin controls Cowork access. Open Scheduled to see past runs.

Other ways to automate client reporting

Dedicated reporting tools build dashboards and send them on a timer. Here is what each one publishes about itself, checked on 2026-10-02.

  • AgencyAnalytics charges $20 per client a month, billed annually, for reports from 85+ integrations, with scheduling and an approval step. Its MCP brings that data into Claude and ChatGPT (AgencyAnalytics).
  • Whatagraph starts at €699 a month, billed annually, for 50 source credits. Its MCP reads Whatagraph's data hub, and changes are marked "coming soon" (Whatagraph).
  • DashThis starts at $44 a month, paid yearly, for 3 dashboards, with automated email dispatch and an MCP connector (DashThis).
  • Swydo charges by data source: €62 a month, billed annually, covers the first 10, and each connected account counts as one (Swydo).
  • Databox sells an Agency plan from $99 a month with 20 data sources and Genie, its AI analyst (Databox).
  • NinjaCat sells an AI agent platform for multi-account marketing, with pricing through a demo (NinjaCat).
  • Data Studio, as Google now calls Looker Studio, emails a PDF of a report on a schedule. Google Ads has a Google connector; Meta Ads and LinkedIn Ads need third-party community connectors (Google).
  • Windsor.ai and Supermetrics connect marketing data to Claude through their own MCP servers (Windsor.ai).

Rollstack, Vendasta, Satuit and Improvado also rank for the term. They automate BI slide decks, sell an AI workforce to agencies serving local businesses, serve asset managers, and sell one AI agent across marketing data. For Google Ads in particular, the best Google Ads MCP servers compares 12 servers from each vendor's own documentation.

InsightfulPipe takes a different route. Claude writes each report from the client's live accounts, on your schedule, and every action it could take sits behind a switch you control.

HAVE QUESTIONS?

Frequently asked questions

Automated client reporting pulls each client's numbers on a schedule and turns them into a report without manual exports. With InsightfulPipe, Claude reads each client's ad accounts and writes the report from one saved prompt.

Sources (checked 2026-10-02)

We checked each third-party claim on its own page on 2026-10-02, and took our action counts from our own MCP pages.

Related articles

How to Connect X Ads to Claude
Blog

How to Connect X Ads to Claude

To connect X Ads to Claude, connect X Ads in InsightfulPipe, add https://x-ads.insightfulmcp.com/ as a custom connector in Claude, then click Connect and sign in to InsightfulPipe if asked.

Read article
How to Connect Snapchat Ads to Claude
Blog

How to Connect Snapchat Ads to Claude

To connect Snapchat Ads to Claude, connect Snapchat Ads in InsightfulPipe, add https://snapchat-ads.insightfulmcp.com/ as a custom connector in Claude, then click Connect and sign in to InsightfulPipe if asked.

Read article
How to Connect TikTok Ads to Claude
Blog

How to Connect TikTok Ads to Claude

To connect TikTok Ads to Claude, connect TikTok Ads in InsightfulPipe, add https://tiktok-ads.insightfulmcp.com/ as a custom connector in Claude, and click Connect.

Read article
Claude Skills for Marketing: Run Them on Live Ad Data
Blog

Claude Skills for Marketing: Run Them on Live Ad Data

InsightfulPipe publishes 71 free Claude marketing skills, plus connectors from $29.99 a month that run them on live Google Ads, Meta, LinkedIn and GA4 data, with a switch for every action.

Read article
Claude Code for Marketing: Connect Google Ads, Meta, GA4 and More with MCP or a CLI
Blog

Claude Code for Marketing: Connect Google Ads, Meta, GA4 and More with MCP or a CLI

InsightfulPipe connects Claude Code to Google Ads, Meta Ads, GA4 and 47 more platforms: one claude mcp add command for questions in a session, or the insightfulpipe CLI for scripts and scheduled reports, with every action switched on or off per account.

Read article
Best Google Search Console MCP Servers in 2026 (12 Compared)
Blog

Best Google Search Console MCP Servers in 2026 (12 Compared)

The best Google Search Console MCP server in 2026 is InsightfulPipe. It connects Search Console to Claude, ChatGPT and Cursor with a Google sign-in, and an admin switches each of its 10 actions on or off per property.

Read article

Ready to connect your data?

Join hundreds of agencies and brands using InsightfulPipe to connect marketing data to AI.

Start a trial today.