🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Meta Ads + Google Ads alerts in Slack, logged in Sheets

Lisa Granqvist Partner Workflow Automation Expert

Your ads don’t usually “tank” in a dramatic way. They drift. CTR softens, ROAS slips, spend keeps flowing, and you notice it two days later in a dashboard you didn’t have time to open yesterday.

This is the exact mess performance marketers deal with daily. Agency owners feel it when clients ask, “Why are leads down?” And founders running lean teams get hit too. This ad dip alerts automation catches CTR and ROAS drops automatically, then tells you in Slack and logs the details for reporting.

Below you’ll see how the workflow runs, what results to expect, and what you need to turn “daily checks” into a background system.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Meta Ads + Google Ads alerts in Slack, logged in Sheets

The Problem: Ad performance drops get noticed late

Checking Meta Ads and Google Ads performance sounds simple until it becomes a twice-a-day ritual. You log into two platforms, filter for yesterday, scan CTR, scan ROAS, click into a few campaigns, then try to remember what “normal” looked like last week. It’s mentally loud work. And it’s easy to miss the early warning signs because the numbers only look “a bit off.” By the time it’s obvious, you’ve already spent money learning a lesson you didn’t need to learn.

The friction compounds. Here’s where it breaks down.

  • You rely on memory for benchmarks, so “is this bad?” becomes a daily debate.
  • Teams spot dips in different places (Ads Manager, Google Ads UI, dashboards), which creates inconsistent reactions.
  • Manual checks get skipped on busy days, and busy days are when mistakes get expensive.
  • When a client asks what happened, the history is scattered across screenshots and half-finished notes.

The Solution: Daily Meta + Google monitoring with alerts and a clean log

This workflow runs a daily check for Meta Ads and a separate daily check for Google Ads, then evaluates both using the same logic. It pulls yesterday’s campaign metrics, standardizes the data (so Meta and Google look consistent), and calculates CTR and ROAS against fixed benchmarks you define. If a campaign falls below the thresholds, the workflow flags it and pushes alerts where your team already works: Slack for visibility, Gmail for a more detailed record, and WhatsApp for the “don’t miss this” nudge. After notifications go out, it waits briefly and writes the results into Google Sheets, building a tidy audit trail you can actually use in reporting.

The workflow starts with scheduled triggers for each ad platform. Then a code step evaluates performance dips and an If branch keeps only the campaigns that need attention. Finally, n8n sends the alerts and updates your Google Sheets log once delivery is done.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you manage 12 campaigns across Meta and Google. A typical manual routine is about 3 minutes per campaign once you include logging notes, which is roughly 35-40 minutes a day. With this workflow, the “work” is basically zero: the schedule trigger runs, the checks process in the background, and you only spend time on the 1-3 campaigns that get flagged. Most days that’s 5-10 minutes of focused action instead of a full scan.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Ads to pull campaign performance metrics.
  • Meta Ads API access to retrieve Meta campaign metrics.
  • Google Sheets for the ongoing performance log.
  • Slack to post alerts to your team channel.
  • Gmail to send detailed email notifications.
  • WhatsApp for high-urgency alert delivery.

Skill level: Intermediate. You’ll connect accounts, set thresholds, and review a small code step that calculates CTR/ROAS.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Daily triggers run the checks. One schedule kicks off the Meta pull in the morning, and a second schedule runs the Google Ads pull later in the day (you can align both to your reporting timezone).

Yesterday’s metrics are fetched and standardized. n8n requests Meta performance via HTTP, pulls Google campaigns via the Google Ads node, then uses “Set” steps to normalize fields and apply your benchmark assumptions.

Performance dips are detected automatically. A code step calculates CTR and ROAS and flags underperformers. The If branch keeps only the campaigns that actually need attention, then Split In Batches loops through each flagged item so alerts don’t get jumbled.

Alerts go out, then everything gets logged. Slack gets the fast heads-up, Gmail carries the full details, WhatsApp adds urgency, and after a short wait the workflow updates Google Sheets so you have a clean history for reporting.

You can easily modify the benchmarks to match your account (or even set different thresholds per campaign) 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 two time-based triggers that start Meta and Google Ads monitoring runs each morning and midday.

  1. Select Morning Schedule Trigger and set the rule interval to run at hour 9.
  2. Select Midday Schedule Trigger and set the rule interval to run at hour 10 (minute is empty in the workflow).
  3. Confirm that Morning Schedule Trigger connects to Request Meta Ads Metrics and Midday Schedule Trigger connects to Retrieve Google Campaigns.

Tip: Adjust the trigger hours to match your reporting window so “yesterday” data is fully available.

Step 2: Connect Meta and Google Ads data sources

Configure the data fetch nodes for Meta and Google Ads so performance metrics can be analyzed.

  1. In Request Meta Ads Metrics, set URL to your-facebook-graph-api-endpoint.
  2. In Request Meta Ads Metrics, enable Send Query and Send Headers, and set query parameters: fields to campaign_name,impressions,clicks,spend,actions,action_values, date_preset to yesterday, and level to campaign.
  3. Set the Authorization header in Request Meta Ads Metrics to Bearer [CONFIGURE_YOUR_TOKEN].
  4. Open Retrieve Google Campaigns and connect it to your Google Ads account.
  5. Ensure Retrieve Google Campaigns outputs to Assign Google Benchmarks as shown in the workflow.

Credential Required: Connect your Google Ads credentials in Retrieve Google Campaigns. This node needs credentials but none are configured in the workflow.

⚠️ Common Pitfall: If the Meta Graph API token is missing or expired in Request Meta Ads Metrics, the workflow will fail before benchmarking.

Step 3: Set Up Performance Processing

Normalize fields for each platform, then calculate CTR/ROAS and flag dips.

  1. In Assign Meta Benchmarks, map fields using the existing expressions, such as campaign_name to {{ $json.campaign_name }} and platform to META.
  2. In Assign Google Benchmarks, map the same fields and set platform to Google.
  3. Review Evaluate Performance Dip code for thresholds: const MIN_CTR = 2 and const MIN_ROAS = 4.
  4. Confirm Evaluate Performance Dip outputs alert, Performance_Status, and Drop_Reason for downstream routing.
  5. Set Branch on Alert Flag to evaluate {{ $json.alert }} as true.

Step 4: Configure Alert Routing and Notifications

Send alerts when performance drops and keep the original data set for logging.

  1. Confirm Branch on Alert Flag outputs to Iterate Alert Items when {{ $json.alert }} is true.
  2. In Iterate Alert Items, keep the default batch settings to iterate each alert item individually.
  3. Iterate Alert Items outputs to Post Slack Alert, Dispatch Email Alert, and Send WhatsApp Alert in parallel.
  4. In Post Slack Alert, keep the Text message expression and select the target Channel using [YOUR_ID].
  5. In Dispatch Email Alert, set Send To to [YOUR_EMAIL] and keep the Subject as 🚨 Ad Performance Alert: Immediate Attention Required.
  6. In Send WhatsApp Alert, keep Operation set to send and add your WhatsApp connection details.
  7. Leave Rehydrate Items Script as-is to re-fetch data from Evaluate Performance Dip for logging.

Credential Required: Connect your slackOAuth2Api credentials in Post Slack Alert.

Credential Required: Connect your gmailOAuth2 credentials in Dispatch Email Alert.

Credential Required: Add your WhatsApp provider credentials to Send WhatsApp Alert. This node needs credentials but none are configured in the workflow.

Step 5: Log Results to Google Sheets

Delay slightly, then append or update the alert log in Google Sheets.

  1. Keep Rehydrate Items Script connected to Delay Before Log to avoid immediate logging conflicts.
  2. In Update Sheets Log, set Operation to appendOrUpdate.
  3. Select Document ID as [YOUR_ID] and Sheet Name as Ad_Performance_Log.
  4. Confirm column mappings such as CTR{{ $json.ctr }}, Date{{$now.format('yyyy-MM-dd')}}, ROAS{{ $json.roas }}, and Campaign_Name{{ $json.campaign_name }}.
  5. Keep the static values: CurrencyINR and Alert_ChannelSlack,Email,whatsapp.

Credential Required: Connect your Google Sheets credentials in Update Sheets Log. This node needs credentials but none are configured in the workflow.

Step 6: Test and Activate Your Workflow

Validate alert routing, logging, and data formatting before turning on scheduled runs.

  1. Click Execute Workflow and run from Morning Schedule Trigger to simulate the Meta Ads path.
  2. Verify that Evaluate Performance Dip outputs computed ctr, roas, and alert fields.
  3. Confirm that alert items flow through Iterate Alert Items and trigger Post Slack Alert, Dispatch Email Alert, and Send WhatsApp Alert.
  4. Check the Google Sheet to ensure Update Sheets Log writes a row with Performance_Status and Drop_Reason.
  5. Once confirmed, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Ads credentials can expire or require the right account access level. If alerts suddenly stop, check the Google Ads connection inside n8n and confirm the selected customer account is correct.
  • If you’re using Wait nodes or external processing, timing varies. Bump up the wait duration if the Google Sheets log step runs before notification nodes finish and you see missing fields.
  • Slack messages can silently fail if the bot isn’t allowed to post to the channel you chose. Verify the Slack app is invited to the channel and has permission to write messages.

Frequently Asked Questions

How long does it take to set up this ad dip alerts automation?

About 30 minutes if your ad accounts and Slack are already connected.

Do I need coding skills to automate ad dip alerts?

No. You’ll mostly connect accounts and set thresholds. The code step is already written, and you can keep it as-is.

Is n8n free to use for this ad dip alerts workflow?

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 costs from connected services like WhatsApp messaging or any paid Google Ads/Meta API requirements tied to your accounts.

Where can I host n8n to run this automation?

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.

Can I customize this ad dip alerts workflow for different CTR/ROAS targets per campaign?

Yes, but it takes a small adjustment. The easiest approach is to add benchmark fields in the “Assign Meta Benchmarks” and “Assign Google Benchmarks” steps, then have “Evaluate Performance Dip” read those values per item. Common customizations include separate thresholds by campaign type, different alert wording per platform, and logging extra fields like spend or conversions into Google Sheets.

Why is my Meta Ads connection failing in this workflow?

Usually it’s expired access tokens or missing permissions on the Meta app/user you authenticated with. Refresh the credentials in n8n and confirm the ad account has API access. If it fails only some days, it can also be rate limiting or an API response shape change, which will show up in the HTTP Request node’s execution output.

How many campaigns can this ad dip alerts automation handle?

Plenty for most small teams.

Is this ad dip alerts automation better than using Zapier or Make?

Often, yes, if you care about control and cost. This workflow relies on branching, looping through flagged campaigns, and a code-based evaluation step that’s straightforward in n8n but can get awkward (and expensive) in more linear tools. Self-hosting also means you’re not paying per task when volumes rise. Zapier or Make can still win for quick two-app automations with minimal logic, honestly. If you want a second opinion for your setup, Talk to an automation expert.

Once this is running, you stop “checking ads” and start responding to real problems. The workflow handles the scanning and logging so you can focus on fixes that actually move ROAS.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal