How to send a weekly Google Ads report to Slack
The fastest free way to get a weekly Google Ads report into Slack is a Google Ads script that queries last week's numbers and posts them to a Slack incoming webhook, scheduled to run every Monday. If you would rather not touch code, schedule a Google Ads report by email and forward it to a Slack channel's email address (a paid Slack plan feature). If you want the numbers explained, not just listed, have an AI coworker read Google Ads and draft the summary for someone to check. All three are below, with the trade-offs.
What should a weekly Google Ads report in Slack include?
Keep it short enough to read in the channel. A useful weekly post has:
- Spend, conversions, and cost per conversion for the last 7 complete days, with the change from the week before.
- The top campaigns by spend, and any campaign whose cost per conversion moved sharply.
- Budget pacing for the month, if you work to a monthly budget.
- One or two lines of interpretation: what changed and what you plan to do.
Use completed days. Conversions arrive late, so the most recent day or two will look worse than they will end up. Our weekly client report template shows how agencies lay out the same numbers for a client.
Which way of sending Google Ads reports to Slack should you use?
| Scheduled email to a channel | Google Ads script + webhook | AI coworker | |
|---|---|---|---|
| Setup effort | 10 minutes, no code | 30 to 60 minutes, some JavaScript | Connect the account, then ask in Slack |
| What lands in Slack | An email with the report attached or linked | A formatted message you design | A written summary with the numbers it used |
| Slack plan needed | Paid (channel email addresses) | Any (incoming webhooks) | Depends on the tool |
| Interpretation | None | Only what you code | Drafted for a person to check |
| Cost | Free | Free | Free plan or paid, depending on the tool |
Verified Oct 2026 against Google Ads Help: create and manage reports, Google Ads scripts overview, Google Ads scripts: third-party APIs, Slack incoming webhooks, and Send emails to Slack.
How do you schedule a Google Ads report by email and send it to Slack?
- In Google Ads, open Report editor in the Campaigns menu and open or build the report you want, for example campaign performance for the last 7 days.
- Select the email and schedule icon, pick recipients, choose a weekly frequency and a format such as CSV, and save. Google says reports for individual accounts begin running at 3 AM in the account's time zone (Google Ads Help).
- In Slack, open the channel, click its name, open the Automations tab, choose Send emails to this channel, and click Get Email Address (Slack Help). This needs a paid Slack plan.
- Google Ads only sends scheduled reports to people who have access to the account, so send it to yourself and add a forwarding rule in your inbox that forwards it to the channel address.
This works, but the result is an attachment nobody opens in Slack. It is best as an archive, not as the update itself.
How do you post Google Ads numbers to Slack with a script?
Google Ads scripts are JavaScript that runs inside Google Ads, can query reports with Google Ads Query Language, and can be scheduled hourly, daily, weekly, or monthly (Google for Developers). They can also call outside services with UrlFetchApp, and Google's own docs use a Slack webhook as the example (Slack example).
- Create a Slack app, turn on Incoming Webhooks, and pick the channel. Slack gives you a URL tied to that one channel; you cannot change the channel or bot name from the script (Slack docs).
- In Google Ads, go to Tools, then Bulk actions, then Scripts, and create a new script. Paste a version of the code below and replace the webhook URL.
- Click Preview to check the output, authorize the script, and set the frequency to weekly, Monday, early morning.
// Google Ads script: post last week's top campaigns to Slack
const SLACK_URL = 'https://hooks.slack.com/services/XXX/YYY/ZZZ'; // your incoming webhook
function main() {
const rows = AdsApp.search(
'SELECT campaign.name, metrics.cost_micros, metrics.clicks, metrics.conversions ' +
'FROM campaign WHERE segments.date DURING LAST_7_DAYS AND metrics.impressions > 0 ' +
'ORDER BY metrics.cost_micros DESC LIMIT 10');
const lines = [];
while (rows.hasNext()) {
const r = rows.next();
const cost = Number(r.metrics.costMicros) / 1e6;
lines.push('- ' + r.campaign.name + ': ' + cost.toFixed(2) + ' spend, ' +
r.metrics.clicks + ' clicks, ' + Number(r.metrics.conversions).toFixed(1) + ' conv.');
}
const text = '*Google Ads, last 7 days: top campaigns by spend*\n' + lines.join('\n');
UrlFetchApp.fetch(SLACK_URL, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ text: text })
});
}
Treat the webhook URL like a password: anyone who has it can post to that channel. Cost is returned in micros (millionths of your account currency), which is why the script divides by one million. Extend it with a second query for the previous week if you want week-over-week changes.
How can an AI coworker write the weekly Google Ads summary?
Scripts move numbers; they do not tell you that cost per conversion rose because one campaign's search terms drifted. An AI coworker can read the account, compare weeks, and draft the explanation for a person to check before it goes to a client or the team.
Geniusly is an AI coworker for your team in Slack. It reads the accounts you connect (Gmail, Google Drive, Google Sheets, Slack, GitHub, Linear, and Google Ads) and prepares a brief, report, status update, or handoff for a person to review. Connected apps are read-only by default, except Google Sheets edits you explicitly ask for, and Slack messages beyond its reply are posted only after your approval. Anyone in a channel it has been invited to can ask it for work, it can run a task once, daily, or weekly, and it has a Free plan.
Its integrations page lists Google Ads as a read-only connection used for campaign performance summaries, and notes that live-read verification for Google Ads is still pending, so check the first few reports against the Google Ads interface. A typical request in Slack: "Every Monday at 8, summarize last week's Google Ads spend, conversions, and cost per conversion by campaign, compare with the week before, and add the numbers from the client tracker in Google Sheets." The Google Sheets integration covers the tracker side, and the free weekly client report generator gives you a layout to copy.
Frequently asked questions
What is the simplest free way to connect Google Ads to Slack?
A Google Ads script that posts to a Slack incoming webhook. Google's own developer docs use Slack as the example. If you cannot write code, schedule a report email and forward it to a Slack channel's email address.
How often can a Google Ads script run?
Google Ads scripts can be scheduled hourly, daily, weekly, or monthly, or run on demand. Hourly is the most frequent option.
Can I send a scheduled Google Ads report straight to a Slack channel email?
Not directly. Scheduled reports go to users with access to the Google Ads account. Send the report to yourself and forward it to the channel's email address, which requires a paid Slack plan.
Why do last week's conversions change after the report is sent?
Conversions are often recorded days after the click, so recent days fill in later. Report on completed days and expect small revisions the following week.
