This n8n workflow checks daily ad spend totals from a Google Sheet and sends a Slack alert if spend exceeds $100. It can be scheduled to run automatically or manually triggered for testing. This is perfect for marketing teams who want to monitor budget spikes in near real-time.
✅ Key Features
-
📥 Google Sheets Integration: Pulls raw spend data from a shared spreadsheet.
-
📆 Scheduled or Manual Execution: Can run daily on a schedule or manually for testing.
-
📈 Aggregates Spend: Summarizes daily totals from raw data.
-
🧠 Logic Check: Alerts only when spend exceeds a certain threshold.
-
🔔 Slack Alerts: Sends instant notification to a specified channel.
🧰 What You'll Need
-
Google Cloud Project with Sheets API enabled
-
OAuth2 Credential for Google Sheets
-
Slack Bot Token with permission to post to your workspace
- Your Google Sheet link and tab name
📎 Copy this Sample Google Sheet to Use:
Marketing Data Sheet - Copy Me
🔧 Step-by-Step Setup
1️⃣ Schedule or Manual Trigger
-
Node:
Schedule Workflow or Test Workflow
-
Purpose: Either run daily via a cron-like rule or manually trigger the flow.
2️⃣ Get Google Sheet Data
-
Node:
Get Data
-
What it does: Fetches all rows from your connected sheet.
-
Setup:
- Go to Google Cloud Console
- Create a new project
- Enable Google Sheets API
- Create OAuth2 credentials for a desktop or web application
- Connect your Google account in n8n via OAuth2
- Grant access to the sheet you want to read (ensure it's shared with your OAuth email)
- Use the copied sheet's link when connecting in n8n
3️⃣ Summarize Spend by Day
-
Node:
Sum spend by Day
-
What it does: Groups the dataset by
Date and sums the Spend ($) column
-
Requirements:
- Your sheet must have a header row with
Date and Spend ($) as columns
4️⃣ Sort by Most Recent Date
-
Node:
Sort Dates Descending
-
What it does: Sorts all entries by the
Date field so that the most recent day is first
-
Custom JavaScript:
const items = $input.all();
items.sort((a, b) => new Date(b.json.Date) - new Date(a.json.Date));
return items;
5️⃣ Select Top Result
-
Node:
Keep only Last Day
-
What it does: Captures the top row (most recent day) for evaluation
-
Fields: Sets only
Date and sum_Spend_($) to keep things clean
6️⃣ Check Spend Threshold
-
Node:
Check if Spend over $100
-
What it does: Uses an IF node to compare
sum_Spend_($) against a 100 threshold
-
Logic:
sum_Spend_($) > 100
7️⃣ Send Slack Notification
8️⃣ No Action if Under Budget
-
Node:
Do Nothing. Under 100
-
Purpose: This path simply ends the flow with no action if spend is below the threshold
👤 Created By
Robert Breen
Automation Consultant | AI Workflow Designer | n8n Expert
📧 robert@ynteractive.com
🌐 ynteractive.com
🔗 LinkedIn
🏷️ Tags
slack marketing automation budget alert daily schedule google sheets threshold logic n8n spend tracking data summarization