Google Ads + Slack: monthly insights your team uses
Monthly Google Ads reporting has a way of stealing your best hours. You pull numbers, clean them up, try to explain what happened, then still get asked, “So what should we change?”
Marketing managers usually carry the burden, but agency owners and growth leads feel it too. This Google Ads Slack automation turns the last 30 days of performance into a short, readable summary your team can actually use.
Below, you’ll see exactly what the workflow does, what it saves, and how to customize it so your reports sound like your brand (not a generic dashboard export).
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Ads + Slack: monthly insights your team uses
flowchart LR
subgraph sg0["Monthly Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Monthly Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Performance Data"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Prepare Performance Data"]
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Agent - Analyze Performance", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Generate Report"]
n6@{ icon: "mdi:database", form: "rounded", label: "Save Report to Sheets", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Send Report"]
n5 --> n6
n0 --> n1
n4 -.-> n3
n1 --> n2
n6 --> n7
n2 --> n3
n3 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n3 ai
class n4 aiModel
class n6 database
class n1 api
class n2,n5 code
classDef customIcon fill:none,stroke:none
class n1,n2,n5,n7 customIcon
The Problem: Monthly Google Ads reporting is manual and forgettable
Most monthly reports start the same way: exporting performance, sorting it, and trying to spot patterns across hundreds of ads. Then comes the messy part. You translate CTR, clicks, and impressions into something a busy team will act on. It’s slow, and honestly it’s easy to miss the good stuff when you’re tired and rushing to “get the report out.” A day later, the doc is buried in a folder and no changes happen, so you repeat the cycle next month.
The friction compounds. Here’s where it breaks down in real teams:
- You spend about 2–4 hours each month just getting data into a presentable shape.
- Insights are subjective when they’re written from memory instead of patterns in the data.
- Reports land in email or a drive, which means nobody sees them at the right moment.
- Without an archive in Google Sheets, it’s painful to compare month over month and prove progress.
The Solution: A monthly AI report that posts to Slack and logs to Sheets
This workflow runs automatically on the 1st of each month. It queries the Google Ads API for the last 30 days of performance for responsive search ads (impressions, clicks, CTR), then organizes the results into meaningful groupings like categories and messaging themes (think “Free Shipping” or “Premium”). Next, an AI Agent powered by GPT-4o reads the structured performance summary and writes clear takeaways and improvement ideas, like what to scale, what to test, and where waste might be hiding. The workflow then formats everything into a clean Markdown report, saves a new row in Google Sheets for long-term tracking, and posts a digest to your Slack channel so the team sees it immediately.
The workflow starts with a monthly schedule trigger. From there, Google Ads data is fetched via an HTTP request, shaped into an AI-ready prompt, then analyzed by GPT-4o for patterns and recommendations. Finally, the report is archived in Google Sheets and summarized in Slack so it becomes part of the team’s rhythm.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you manage one account with about 900 responsive search ads (the workflow example analyzes 940). A typical manual month-end routine is 60 minutes to export and sanity-check data, another 90 minutes to group themes and write a narrative, then 30 minutes to share it in the right places. That’s roughly 3 hours. With this workflow, setup is done once, then each month the “work” is basically zero minutes: it runs overnight, posts to Slack, and saves to Sheets automatically.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Ads API access to query CTR, clicks, impressions
- Slack incoming webhook to post the team summary
- OpenAI API key (get it from the OpenAI API dashboard)
Skill level: Intermediate. You’ll connect accounts, add a few environment variables, and test one manual run before scheduling it.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A monthly schedule kicks things off. On the 1st of each month, n8n triggers the run automatically, so you don’t need calendar reminders or recurring tasks.
Google Ads data gets pulled and cleaned up. The workflow uses the Google Ads API (via HTTP request) to fetch the last 30 days of impressions, clicks, and CTR, then shapes the response so it’s readable and comparable across ad groups and themes.
AI turns performance into decisions. An AI Agent with GPT-4o reviews the structured summary and writes the “so what,” including what messages are working, what to test next, and where to focus attention.
Results get saved and shared. A formatted Markdown report is archived in Google Sheets for historical tracking, then a Slack message delivers the key takeaways to your channel.
You can easily modify the GAQL query to include extra metrics (like conversions or cost) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set up the monthly schedule so the workflow runs automatically on the first day of each month.
- Add the Monthly Schedule Start node as your trigger.
- Set the schedule rule to use a cron expression with Expression set to
0 0 1 * *. - Confirm that Monthly Schedule Start connects to Fetch Performance Metrics.
Step 2: Connect Google Ads Data Retrieval
Configure the Google Ads API call that pulls performance metrics for the last 30 days.
- Open Fetch Performance Metrics and set Method to
POST. - Set URL to
=https://googleads.googleapis.com/{{$env.GOOGLE_ADS_API_VERSION}}/customers/{{$env.GOOGLE_ADS_CUSTOMER_ID}}/googleAds:search. - Enable Send Body and set Specify Body to
json. - Set JSON Body to
={"query": "SELECT ad_group_ad.ad.id, ad_group_ad.ad.responsive_search_ad.headlines, ad_group.name, metrics.impressions, metrics.clicks, metrics.ctr FROM ad_group_ad WHERE segments.date DURING LAST_30_DAYS AND metrics.impressions > 100 ORDER BY metrics.clicks DESC LIMIT 1000"}. - Credential Required: Connect your googleAdsOAuth2Api credentials.
GOOGLE_ADS_API_VERSION and GOOGLE_ADS_CUSTOMER_ID are set in your n8n instance.Step 3: Set Up AI Analysis and Reporting
Transform the raw metrics, pass them to the AI agent for insights, and generate a markdown report.
- In Shape Performance Insights, keep the existing JavaScript to aggregate CTR and build
analysis_promptfor the AI model. - Configure AI Review Performance with Text set to
={{$json.analysis_prompt}}and keep Prompt Type asdefine. - Ensure OpenAI Chat Engine is connected as the language model for AI Review Performance and set Model to
gpt-4o. - Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine (the parent AI node).
- In Compose Summary Report, keep the JavaScript that parses AI JSON and returns
report_markdown.
Step 4: Configure Output Destinations
Save the report to Google Sheets and send the same report to Slack.
- Open Archive Report to Sheets and set Sheet Name to
Performance Reports. - Set Document ID to
={{$env.GOOGLE_SHEET_ID}}. - Credential Required: Connect your Google Sheets credentials in Archive Report to Sheets.
- Open Dispatch Slack Report and set Text to
={{$json.report_markdown}}. - Credential Required: Connect your Slack credentials in Dispatch Slack Report.
Step 5: Test and Activate Your Workflow
Run a manual execution to verify the end-to-end flow, then activate the schedule for production.
- Click Execute Workflow to run a manual test starting at Monthly Schedule Start.
- Confirm Fetch Performance Metrics returns results and Shape Performance Insights outputs
analysis_prompt. - Verify AI Review Performance produces JSON and Compose Summary Report outputs
report_markdown. - Check that Archive Report to Sheets creates a new row in
Performance Reportsand Dispatch Slack Report posts the report. - Activate the workflow to allow Monthly Schedule Start to run automatically on the first of each month.
Common Gotchas
- Google Ads credentials can expire or need specific permissions. If things break, check the connected Google Ads OAuth credentials in n8n and confirm the account has access to the customer ID first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30–60 minutes if your API access is ready.
No. You’ll mostly connect accounts and paste in a few IDs and keys. The workflow’s code steps are already built; you can use them as-is.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API usage (for this kind of monthly summary, it’s usually a few dollars or less unless you process lots of accounts).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but plan for a bit of setup. You can loop through multiple customer IDs by adjusting the HTTP Request that queries the Google Ads API and using a batch/loop step (Split in Batches) to process each account cleanly. Many teams also customize the “Shape Performance Insights” code step to label each section by account name. You can even post separate Slack messages per account, or one combined executive summary, depending on how your team likes to work.
Usually it’s an OAuth permission issue or the wrong customer ID. Reconnect the Google Ads credential in n8n, confirm the authorized Google user has access to that Ads account, and double-check the API version and customer ID formatting. If you have a large account, the request can time out, so increasing the HTTP request timeout can help. Also watch for rate limits if you expand this to multiple accounts in one run.
A lot—most accounts are fine under the default query limit.
For monthly reporting with real logic, n8n is often the cleaner fit. You can control the GAQL query, reshape data, and run an AI Agent step without fighting platform limitations. Self-hosting also removes the “every step costs an operation” anxiety, which matters when you start iterating. Zapier or Make can be simpler for lightweight notifications, though. Talk to an automation expert if you want help choosing.
Once this is running, your “monthly report” becomes a Slack message and a row in Sheets, not a half-day project. Set it up once, then use the time you get back to actually improve campaigns.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.