n8n Google Ads Automation: From Daily Pull to AI Action
Build n8n Google Ads automation that pulls daily metrics, flags underperformers with AI, and emails fix recommendations. Cross-channel templates inside.
Every Monday, somewhere, a marketing manager opens Google Ads, copies numbers into a spreadsheet, opens Facebook Ads, copies more numbers, and only then starts thinking. One manager on r/PPC put it plainly: "I literally spend the first half of every Monday just copy-pasting numbers before I can start actual work." The copying isn't the job. It's the tax you pay before the job.
n8n Google Ads automation removes that tax. n8n is an open-source workflow tool, and its Google Ads node plus an OpenAI node can pull yesterday's metrics, decide which campaigns are bleeding, and email you the fix before you've finished your coffee. Not a dashboard you still have to read. An answer.
Most guides stop at the pull. This one goes to the action.
What you can automate
- Pulling daily campaign metrics from Google Ads on a schedule, no manual export
- Merging Google Ads with Facebook Ads so cross-channel spend sits in one view
- Flagging underperforming campaigns automatically instead of eyeballing a sheet
- Generating a specific recommendation per campaign with AI ("pause", "raise bid", "shift budget")
- Emailing an actionable daily report so you act before wasting another day of spend
- Logging history to Google Sheets for week-over-week trend tracking
The official Google Ads integration page (n8n.io) confirms the node exists and connects to 1,000+ services, but it's a hub page with no campaign-analysis or cross-channel examples. The popular AI marketing report template (n8n.io) does pull Google Ads, Analytics, and Meta Ads together and emails a year-over-year table, but it stops at summarization. By its own description it offers no campaign flagging and no optimization recommendations. That last mile is the gap.
The Google Ads optimization pipeline
Schedule Trigger → Fetch Google Ads + Facebook Ads → Normalize
→ OpenAI (flag underperformers + recommend) → Email report
→ Log to Sheets
The shape looks like a reporting workflow. The OpenAI step is what makes it an optimization workflow.
1. Fetch the metrics
A scheduleTrigger v1.2 node fires daily, before work hours. The Google Ads node pulls campaign-level metrics (spend, clicks, conversions, CPA, ROAS) for the prior day. For Facebook, a parallel branch hits the Marketing API. Both use OAuth2 credentials configured once in n8n. Anything the Google Ads node doesn't expose, an httpRequest v4.2 node can query against the Google Ads API directly, so you're never blocked waiting on a connector feature.
2. Normalize into one shape
Google Ads and Facebook report different field names for the same idea. A n8n-nodes-base.code v2 node with jsCode maps both into a common schema: campaign, channel, spend, conversions, cpa, roas. Now a single downstream node can reason across both platforms without caring where a row came from. This normalization step is what makes the AI prompt clean instead of conditional.
3. Let AI flag and recommend
Feed the normalized array to the @n8n/n8n-nodes-langchain.openAi v2.1 node. Prompt it to identify underperformers against your targets and return a recommendation per flagged campaign. The node returns output at $json.output[0].content[0].text — the older n8n-nodes-base.openAi path silently breaks if you lift it from a 2023 tutorial, so check the version. The model writes "CPA on Brand-Search is 3.1x target, pause and reallocate," not just a red cell. That's the difference the summarize-only templates don't deliver.
4. Email the report, log the history
A Gmail node sends the daily report: the flagged campaigns up top, the AI recommendations next, the full table below. A Google Sheets node appends the day's metrics so you build a trend record over weeks. The log is dull and you'll be glad it exists the first time someone asks whether last month's CPA spike was a blip or a pattern.
Resist the urge to hand raw Google Ads and Facebook payloads to the AI and let it sort out the field names. It will, sometimes, and inconsistently. A Code node that maps both into one schema first makes the prompt deterministic and your token count lower. The model should reason about performance, not about whether cost_micros and spend mean the same thing.
Implementation patterns
Pattern 1: Cross-channel single report. Pull both platforms, normalize, report once. A media buyer running Google and Facebook shouldn't open two tabs to answer "where's the waste." One workflow, one email, both channels. The AI marketing report template gets the multi-source pull right; what it lacks is the diagnostic layer on top.
Google Ads + Facebook Ads → Code (normalize) → OpenAI (analyze) → Gmail
Pattern 2: Anomaly alert, not full report. A leaner variant runs more often on a narrow metric set and only fires when spend or CPA crosses a threshold. No daily email when nothing's wrong; a Telegram ping the moment something is. Good for accounts where a runaway campaign can burn the budget by lunch.
Schedule → Fetch metrics → Filter (CPA > threshold) → Telegram alert
Pattern 3: Recommendation log for trend review. Append every AI recommendation to Sheets alongside the metrics. Over a month you can see whether the model keeps flagging the same campaign, which usually means a structural problem the daily fix never addresses. Data that compounds.
n8n nodes you'll use most
| Node | Purpose |
|---|---|
n8n-nodes-base.scheduleTrigger v1.2 | Fires the pull daily before work hours |
n8n-nodes-base.googleAds | Pulls campaign metrics over OAuth2 |
n8n-nodes-base.httpRequest v4.2 | Hits the Google Ads or Facebook API for anything the node skips |
n8n-nodes-base.code v2 | Normalizes both platforms into one schema |
@n8n/n8n-nodes-langchain.openAi v2.1 | Flags underperformers and writes recommendations; output at $json.output[0].content[0].text |
n8n-nodes-base.gmail | Sends the daily actionable report |
Getting started
- Run n8n (self-hosted or Cloud) and create a new workflow.
- Set up the Google Ads OAuth2 credential and test a small report query through the node.
- Add a Facebook Ads branch (node or
httpRequest) if you run both channels. - Add a Code node that normalizes both payloads into one campaign schema.
- Wire the OpenAI node with a prompt that flags underperformers and recommends an action per campaign.
- Add a Gmail node for the report and a Google Sheets append for the history.
- Drop a
scheduleTriggerat the front, set it to fire daily, and run a full test.
The exact normalization shape and the AI recommendation prompt are documented on the Ad Performance Optimizer page.
Browse the marketing automation templates →The Ad Performance Optimizer ships this end-to-end: a daily scheduleTrigger pulls campaign metrics from both Google Ads and Facebook Ads over OAuth2, normalizes them, an OpenAI node flags underperformers and writes per-campaign recommendations, Gmail emails the actionable report, and Google Sheets logs the history for trend tracking. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog plus every template added later, which earns its price if you run more than one of these automations.
The same pull-normalize-analyze backbone underpins broader ad performance automation and the Facebook-specific build in Meta Ads automation. Swap the data source and the analysis layer stays put. For teams whose reporting also covers organic search, the Market Trend Analyzer shows the same schedule-fetch-AI pattern applied to demand signals.
See the AI recommendation layer →Common questions
Can n8n pull Google Ads data without a third-party connector?
What does AI add to Google Ads reporting that a dashboard doesn't?
How often should an n8n Google Ads workflow run?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

How to Build n8n Decision Support Automation with AI Frameworks
A founder spends a week circling a pricing decision. Not because the information's missing. It's all there. The hold-up is that there's no process to run it through. The pros and cons live in three ha…

How to Build n8n Employee Wellness Automation with AI Risk Scoring
Two people resign in the same month, both citing burnout. Nothing in the 1:1 notes flagged it. Nothing in their Slack activity looked off. The signals were there, in the throwaway comments, the slippi…

How to Build n8n Approval Workflow Automation That Auto-Approves and Escalates
A finance lead approves the same refunds every morning. Under $100, customer in good standing, clear reason. Approved, approved, approved. The decision was never hard. It just never got automated, so…