Guide
How do you automate weekly PPC client reports without sending them unchecked?
You automate weekly PPC client reports without sending them unchecked by splitting three jobs: pull the numbers on a schedule, draft the write-up from those numbers, and keep a person on the send. A dashboard that emails the PDF on Monday is a scheduled send. A model that writes the so-what still needs a tap. Nothing reaches the client until someone has read it.
By The Concrete team · Published
We make Concrete.
What the job actually is
You automate weekly PPC client reports without sending them unchecked by splitting three jobs people collapse into one word. The data pull fills spend, CPA, ROAS, and CPC. The write-up is the so-what: what happened, why, what's next. The send is the email, PDF, or Slack note the client sees.
Account leads at 2-to-40 person PPC shops, and freelance media buyers with a handful of Google Ads and Meta retainers, still write that Monday report by hand. The dashboard is often already live. The bottleneck is the commentary, and the failure is a summary that goes out before anyone has read it.
A neighboring job is a teammate that executes work across apps, on Viktor alternatives for an agency. The send gate on a client-facing Slack reply is on an AI assistant that drafts and waits for approval.
Which tool wins which job
Fund the row that matches the leak. A white-label dashboard, a pause-before-send toggle, and a drafted so-what in Slack are neighboring jobs.
| Job | Wins it | Why |
|---|---|---|
| White-label dashboards, 85+ connectors, scheduled PDFs | AgencyAnalytics | Core is $20 per client per month billed annually, as of 11 October 2026. Unlimited reports, staff, and client users. Report scheduling and AI Summary are included. |
| Pause a scheduled dashboard report until a person approves it | AgencyAnalytics | Report Approvals pause the send, notify you, and wait. With approval on, the report does not go to the client until you have checked it. |
| Simple white-label dashboards billed by dashboard count | DashThis | Individual is $44 per month billed yearly, or $54 billed monthly, for 3 dashboards and 15 sources. Automated email dispatch is on every plan. |
| Unlimited clients, billed by data source, scheduled PDFs | Swydo | One plan is $69 per month for 10 data sources, then $4.50 each through 100. Unlimited clients, users, and reports. AI summaries and scheduled sends are included. |
| High-volume governed reports with automated PDF emails | Whatagraph | Max starts at €999 per month billed annually, from 50 source credits. Automated emails with PDF. Prime is custom. Both start with a demo. |
| Google Ads and Meta into a Looker Studio report | Looker Studio plus Supermetrics | Looker Studio is no charge; Pro is $9 per user per project per month. Supermetrics Starter is $44 per month billed yearly for one destination and 3 sources. |
| A builder-maintained workflow with a wait before send | n8n | Community Edition is self-hosted and free. Cloud Starter is €20 per month billed annually. Human review can pause a send tool until a person approves. |
| One shared employee across thousands of tools, scheduled tasks | Viktor | Team starts at $50 per workspace per month for 20,000 credits, no per-seat charge. 3,200+ integrations. Scheduled tasks and crons. A priced set of alternatives is on the Viktor roundup. |
| The written so-what in Slack, open asks next to the numbers, a person still sends | Concrete | Drafts each client's weekly report in the agency's Slack. Numbers from Google Ads, Meta Ads, GA4 or a Google Sheet, pulled before the words. Send / Edit / Skip; no auto-send. Design-partner preview; see what it is. |
A scheduled send is not a review
Most reporting tools treat automate as send on a clock. DashThis automated email dispatch, Swydo scheduled reports, Whatagraph automated emails with PDF, and Looker Studio scheduled delivery all email a PDF or a live link on the cadence you set. That is the data-pull job plus the send job, with no stop in between.
AgencyAnalytics can do the same: configure a report once and it sends on your schedule with no further intervention. It also has the gate this prompt is asking for. Turn on report approval and the scheduled report will not send until you have checked it. The product FAQ is exact: it pauses at send time, tells you in the notification inbox that it is ready, and you correct a widget or add context, then approve.
An n8n workflow that emails the PDF with a plain Send node is the same auto-send. The wait has to sit in front of the send tool. n8n's human-in-the-loop for tools pauses before a send, delete, or other irreversible action, and a person approves or denies. A Send Email operation named Send and Wait for Response is different: that email already went out, and the workflow waits on the recipient's reply.
The write-up is a different job from the dashboard
A live dashboard does not write CPC went up, here's why, here's what we're changing. Agency operators say the data pull is the part that is already automated, and the storytelling is still manual. A weekly Swydo or Looker Studio PDF still needs a write-up if the retainer promised one.
AI summaries sit on the dashboard tools now. AgencyAnalytics includes AI Summary on Core. Swydo includes AI-powered report summaries. DashThis includes four preset AI Insights: Summary, Opportunities, Wins, Issues. Those draft a first pass over the widgets. They do not, by themselves, hold the send.
Pull the numbers first, then write the words. A model that editorializes over stale or missing source files will still sound finished. The check that belongs before any client-facing sentence is: do the numbers match the source, and does the so-what match a week that actually dipped.
The caveat that should decide the setup
The failure operators name first is a weekly summary that goes out on its own. One version of that is a scheduled PDF with no approval toggle. The quieter version is a model that writes the narrative and posts it. An auto-posted write-up that smoothed a down week into the same mild optimism is how a team stops trusting the summary. The numbers can be right. The story still has to be allowed to be bad.
A second caveat is where the draft lands. People in a Slack Connect channel can see messages from bots and apps. A half-right so-what in the shared client channel is an unchecked send. Keep the draft in the agency's Slack. Safety of putting an agent in a shared client channel is on the shared-channel page.
Concrete is an AI employee that works in existing Slack channels. Each week it drafts every client's status report in the agency's Slack: what shipped, open asks, what is waiting on the client, and that week's numbers from Google Ads, Meta Ads, GA4 or a Google Sheet. The numbers are pulled before the words are written. The account lead edits and sends it. It never sends a report to a client by itself. Drafts land as Send / Edit / Skip cards. There is no auto-send mode. It is in design-partner preview; the longer thesis is on the vision page. It does not replace a reporting dashboard, change bids or budgets, or alert on ad anomalies overnight.
A practical setup for a 2-to-40 person shop
This is the boring version that holds when the account lead still writes the Monday report. Pin it before the next auto-send.
- Name the three jobs. Pull, write-up, send. A dashboard covers the first. A draft covers the second. A person still owns the third. Automate is not a synonym for email the client.
- Automate the pull. Connect Google Ads, Meta Ads, and GA4, or dump the week into a Google Sheet. AgencyAnalytics, Swydo, DashThis, Whatagraph, or Looker Studio plus Supermetrics all win this row. Do not rebuild the widgets every Monday.
- Turn the send gate on. AgencyAnalytics report approval, or an n8n human-review step in front of the send tool. If the vendor's default is scheduled email, that default is an auto-send until you change it.
- Draft the so-what internally. What happened, why, what's next, plus open asks and what is waiting on the client. Keep that draft in the agency's Slack, not in the Slack Connect channel the client can read.
- A person still sends. Read the numbers against the source. If the week dipped, the write-up has to say so. Send is a tap on the exact text the client will see. Skip drops it. There is no auto-send on the client-facing note.
Questions people ask
Does a scheduled dashboard report wait for a person before it emails the client?
Only if you turn that setting on. AgencyAnalytics can pause a scheduled report at send time, notify you, and wait for approval. DashThis, Swydo, Whatagraph, and Looker Studio scheduled emails go out on the cadence you set. A schedule is a send clock. Approval is a separate gate.
Why do auto-written weekly PPC summaries lose the team's trust?
The numbers can be right and the story still wrong. Models lean positive: a down week gets smoothed into mild optimism. The weekly report exists to say when to worry. Pull the deltas first. Write the so-what second. A person still reads it before the client does.
What is the difference between automating the data pull and automating the send?
The pull fills the dashboard: spend, CPA, ROAS, CPC, from Google Ads, Meta Ads, GA4, or a sheet. The send is the email, PDF, or Slack post the client sees. You can automate the first and keep a person on the second. Most automate-reporting tools default to both.
Can n8n send a weekly client report only after someone approves it?
Yes, if you put human review in front of the send tool. n8n can pause a tool that sends a message until a person approves or denies. A plain Send node emails on the clock. Send and Wait for Response is different: that email already went out, and the workflow waits on the recipient.
Should the weekly write-up post in a Slack channel the client can see?
Keep the draft internal. People in a Slack Connect channel can see messages from bots and apps. A half-right so-what in the shared channel is an unchecked send. Draft in the agency's Slack. A person still sends the client-facing note. Posting it there is the same as sending it.
Sources
- AgencyAnalytics pricing, read October 11, 2026
- AgencyAnalytics: automated marketing reports (approvals FAQ), read October 11, 2026
- AgencyAnalytics: create, customize, and send reports, read October 11, 2026
- DashThis pricing, read October 11, 2026
- Swydo pricing, read October 11, 2026
- Whatagraph pricing, read October 11, 2026
- Looker Studio / Data Studio pricing (Google Cloud), read October 11, 2026
- Looker Studio: schedule automatic report delivery, read October 11, 2026
- Supermetrics pricing, read October 11, 2026
- n8n pricing, read October 11, 2026
- n8n: human-in-the-loop for tools, read October 11, 2026
- n8n: Send Email node (Send vs Send and Wait), read October 11, 2026
- Viktor pricing, read October 11, 2026
If your team already runs its work in Slack, start with one role in one channel. Concrete is an AI teammate that works in your Slack channels and asks a person to approve before anything goes out. It is not a chatbot builder, and it never sends on its own.