Automation Recipe: Automated Forecast Exception Alerts via Zapier
What This Builds
An automated exception alert system that monitors your weekly forecast-vs-actuals data and sends formatted Slack or Teams alerts when specific thresholds are breached — without you having to scan the data manually. Instead of reactive exception management (finding problems in Monday morning reviews), you get proactive notification the moment an exception is significant enough to warrant attention.
Prerequisites
- Zapier account (free: 5 zaps; {{tool:Zapier.price}} for Starter to get more)
- Google Sheets (free) — as the data hub
- Slack or Microsoft Teams for alerts
- Basic comfort with Google Sheets
The Concept
Zapier watches a Google Sheet for new rows (your exception data) and automatically sends a structured alert to Slack or Teams. You — or a Python script from the Level 3 guide — write exception rows to the sheet when thresholds are breached. Zapier picks them up and routes them to the right person.
Think of it as a demand planning fire alarm: instead of you checking every SKU daily, the system checks automatically and only pages you when something genuinely needs attention.
Build It Step by Step
Part 1: Create Your Exception Output Sheet
In Google Sheets, create a sheet called "Exception Alerts." Add these columns:
- A: Date (when the exception was generated)
- B: SKU or Category
- C: Exception Type (Spike, Crash, Sustained Miss, New Low)
- D: Actual Value
- E: Plan / Expected Value
- F: Variance %
- G: Severity (High / Medium / Low)
- H: Owner (who should act on this)
- I: Notes (context if known)
This sheet is the bridge between your data analysis and your alert system.
Part 2: Populate the Sheet (Manual or Automated)
Option A — Manual (start here): After running your weekly data pull, sort by variance and manually paste the top exceptions (variances >20%) into this sheet. Takes 5–10 minutes.
Option B — Python automated (advanced): Use the Level 3 Python data cleaning script as a starting point. Ask ChatGPT to add a step that automatically writes exception rows to a Google Sheets file using the gspread Python library when variance exceeds your threshold.
Start with Option A to get the alerts working, then graduate to Option B once the alert system is proven.
Part 3: Set Up Zapier
Go to zapier.com. Click Create Zap. Set up the trigger:
- App: Google Sheets
- Trigger event: New Spreadsheet Row
- Connect your Google account
- Select your Exception Alerts spreadsheet and sheet tab
Part 4: Configure the Alert Action
Add an action:
- App: Slack (or Microsoft Teams)
- Action event: Send Channel Message (or Send Message)
- Connect your Slack/Teams account
- Channel: Your demand planning or supply chain alerts channel
Format your message. In the message body, map the Sheet columns to a readable format:
🚨 Forecast Exception Alert
SKU/Category: [Column B]
Exception Type: [Column C]
Actual: [Column D] | Plan: [Column E] | Variance: [Column F]
Severity: [Column G]
Owner: [Column H]
Notes: [Column I]
Date: [Column A]
What you should see: A preview of what the alert will look like in Slack/Teams.
Part 5: Add a Filter for Severity
You don't want to get alerted on every minor exception. Add a Filter step between the trigger and the action:
- Only continue if Column G (Severity) = "High"
Or: Only continue if ABS(Column F) > 25 (only alert on variances over 25%).
Part 6: Test and Activate
Click Test Zap — Zapier will send a test alert using the first row of your exception data. Check that it arrives in Slack/Teams and looks readable.
Turn on your Zap. Now, whenever you add a "High" severity row to the Exception Alerts sheet, an alert arrives in Slack within minutes.
Real Example: Monday Morning Exception Management
Setup: You have a weekly process where you export actuals Monday morning. You paste your top exceptions (>25% variance, ≥100 units) into the Exception Alerts sheet during your analysis.
Before automation: You email exception summaries to supply planning and sales manually. Takes 30–45 minutes. People sometimes miss the email or reply-all with questions.
After automation: You paste 6 exception rows into the sheet. Within 2 minutes, each exception appears as a structured Slack alert in the #supply-exceptions channel with the SKU, variance, severity, and the owner's name. The owner sees it directly, responds in the thread. No email needed.
Time saved: 20–30 minutes per week of manual exception communication, plus faster response time because exceptions arrive where people already work (Slack) not in a separate email.
What to Do When It Breaks
- Zap not triggering → Verify the Sheet trigger is "New Spreadsheet Row" (not "New or Updated Row") and the sheet tab name matches exactly
- Alerts flooding the channel → Tighten your filter — increase the variance threshold or add a minimum absolute value condition
- Wrong column mapped to message → Edit the Zap action and re-check the column-to-field mapping
- Duplicate alerts → Add a "Processed" column (Y/N) and filter to only trigger on rows where Processed = blank; mark rows as "Y" after alerting
Variations
- Simpler version: Skip Zapier and use Google Sheets' built-in email notification feature — less powerful but works without a Zapier account. Go to Tools → Notification Settings → "When changes are made"
- Extended version: Add a second Zap that escalates unacknowledged high-severity exceptions (no Slack thread reply within 4 hours) to the demand planning manager
What to Do Next
- This week: Create the Exception Alerts sheet and manually populate it with this week's top exceptions; verify Zapier is sending alerts correctly
- This month: Run the system for 4 weeks and assess: are the right exceptions getting flagged? Are owners responding faster?
- Advanced: Graduate from manual exception entry to Python-automated exception detection using the Level 3 guide's data cleaning script as a foundation
Advanced guide for Demand Planner professionals. These techniques use more sophisticated AI features that may require paid subscriptions.