Quick overview
Catch workflows that run green but do nothing. List each workflow once in a Data Table, and this monitor checks its executions hourly. It flags missing runs, errors, stale successes, and empty output, then sends one Slack digest. No changes to the workflows you watch.
How it works
- Runs every hour on a schedule (or on manual trigger).
- Loads all rows from an n8n Data Table and keeps only the expectations marked as enabled.
- For each enabled workflow, uses the n8n API to fetch its 10 most recent executions.
- Evaluates each workflow for never ran, latest run error, no recent success within the allowed time window, and too few items produced by the specified check node.
- Updates the corresponding Data Table row with the latest check time, status, and item count from the most recent successful run.
- Aggregates all results and, if any workflows have issues, posts a single digest message to a Slack channel.
Setup
- Create an n8n API key and add an n8n API credential (Base URL must include
/api/v1) for reading executions.
- Create and select an n8n Data Table containing columns like
workflow_id, workflow_name, check_node, min_items, max_hours, enabled, last_status, last_checked, and last_items, then add one row per workflow to monitor.
- Ensure the monitored workflows save successful executions and that
check_node matches the target node name exactly.
- Add a Slack credential and set the destination channel (for example
#automation-alerts).
Requirements
- n8n API key (Settings > n8n API) with access to executions
- An n8n plan with Data Tables (n8n Cloud or a recent self-hosted version)
- Slack workspace and credential (or swap in Gmail, Teams, or Discord)
- Monitored workflows set to save successful production executions
Customization
- Change the schedule to every 15 minutes for critical workflows, or daily for low-volume ones
- Point check_node at the last node that writes or sends something, like a CRM write or email send
- Swap SendSlackAlert for Gmail, Microsoft Teams, or Discord
- Use the Data Table as a health dashboard: last_status, last_checked, and last_items update on every run
Additional info
Limitations: it reads the last 10 executions per workflow, so execution pruning limits how far back it can see. A node on an untaken IF branch doesn't appear in execution data, so it counts as 0 items (this is intentional, and how empty branches get caught). Alerts repeat each hour until the problem clears. Tested on n8n Cloud in November 2026 against four failure cases (errored, stale, missing, and empty output) plus three healthy workflows.