Detect ad spend anomalies and budget pacing with Google Ads, Meta and GA4
Ready for 3.0What this workflow does
This workflow has 23 nodes and runs on a schedule (every day at 08:00) (plus 1 other trigger). Along the way it connects Gmail.
How it runs
Trigger: On a schedule (every day at 08:00) (plus 1 other trigger).
- Workflow Configuration (Edit Fields (Set)): sets 22 fields: sampleMode, dryRun, emailsEnabled…
- Use Sample Data? (If): checks a condition and branches into true / false
- Generate Sample Ad Data (Code): runs custom JavaScript code
- Get Google Ads Campaigns (HTTP Request): calls an HTTP API (POST)
- Get Meta Ads Insights (HTTP Request): calls an HTTP API
- Get GA4 Paid Sessions (HTTP Request): calls an HTTP API (POST)
- Detect Anomalies and Pacing (Code): runs custom JavaScript code
- Combine Platform Data (Merge): merges the data from its input branches
- Emails Enabled? (If): checks a condition and branches into true / false
- Normalize Platform Rows (Code): runs custom JavaScript code
…plus 9 more steps. See the full node list below.
Services it uses
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (9)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Edit Fields (Set)
n8n-nodes-base.set - If
n8n-nodes-base.if - Code
n8n-nodes-base.code - Gmail
n8n-nodes-base.gmail - HTTP Request
n8n-nodes-base.httpRequest - No Operation, do nothing
n8n-nodes-base.noOp - Manual Trigger
n8n-nodes-base.manualTrigger - Merge
n8n-nodes-base.merge
From the author
Quick overview This workflow runs daily to pull Google Ads, Meta Ads, and GA4 performance data, detect spend/ROAS anomalies, budget pacing issues, and tracking gaps, then emails a digest and sends approval-based pause requests via Gmail before pausing…