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
📧 [email protected]
🌐 ynteractive.com
🔗 LinkedIn
🏷️ Tags
slack
marketing automation
budget alert
daily schedule
google sheets
threshold logic
n8n
spend tracking
data summarization