🔬 Send multi-stage SaaS renewal alerts from Google Sheets to Slack

⚡ 33 views · 🔬 Document Extraction & Analysis

Description

Your automated SaaS contract renewal monitor that sends multi-stage Slack alerts 45, 30, 14, and 7 days before each contract expires.

Stop missing renewal deadlines and overpaying on auto-renewals. This workflow monitors your contract calendar in Google Sheets, sends progressive Slack notifications with manual research checklists, and tracks alert history to prevent duplicate notifications. You manage the vendors; it manages the reminders.

This is not a generic reminder bot. It is a production-ready procurement intelligence system designed to give finance and operations teams the advance notice needed to research alternatives, negotiate better terms, and avoid costly auto-renewals.


How the workflow works

The workflow executes in four stages:

1. TRIGGER & SCHEDULE

The workflow runs daily at 9:00 AM using a cron trigger (0 9 * * *). The schedule runs in your configured timezone (default: UTC). A single daily check scans your entire contract portfolio and identifies which renewals are entering their alert windows.

2. LOAD & VALIDATE

Using Google Sheets’ native integration, the workflow reads your contract tracking spreadsheet (columns A-F: Contract Name, Vendor Name, Renewal Date, Annual Cost, Pricing URL, Status). A validation engine checks each row for:

Invalid rows are silently filtered out to prevent workflow crashes from bad data.

3. MULTI-STAGE ALERT LOGIC

A Brain node calculates days-until-renewal using native JavaScript Date objects (no external dependencies). For each contract, it checks four alert windows:

Each window spans 5 days (daysUntil <= alert.days && daysUntil > alert.days - 5) to catch missed runs from weekends or server outages. The workflow only fires once per stage by checking if the Status column already contains that stage marker (e.g., alerted_45d).

Deduplication: A Set-based tracker prevents duplicate alerts if the same contract appears multiple times in your sheet.

4. NOTIFICATION & TRACKING

Success Path: When a contract enters an alert window:

  1. Slack receives a formatted message with:
    • Urgency indicator (🟡/đźź /đź”´/🚨)
    • Contract details (vendor, renewal date, annual cost)
    • ROI calculation (potential savings: 15-25% of contract value)
    • Manual research checklist (vendor pricing URL, competitor search terms)
    • Upgrade CTA with UTM tracking (utm_campaign = contract slug, utm_content = alert stage)
  2. Google Sheets Status column updates to append the alert stage: "Active, alerted_45d"
  3. Next day, the workflow knows this contract was already alerted and won’t send duplicate messages

Empty Path: When no contracts are in alert windows, a daily summary message confirms the workflow ran successfully: ”✅ Daily check complete. Reviewed 12 contracts. No renewals in alert windows.”

Error Path: If Google Sheets/Slack APIs fail, an Error Trigger fires and sends a troubleshooting alert to the same Slack channel with specific fix instructions.


Benefits


Target Audience


Required APIs


Easy Customization

đź”— Nodes Used

Google Sheets, Slack, Schedule Trigger

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup