AutomationFlowsGeneral › Monitor N8n Workflow Health Daily with Watchflow

Monitor N8n Workflow Health Daily with Watchflow

ByCustomJS @customjs on n8n.io

Ever had a critical n8n workflow fail silently, only to discover it days later? Never again.

Cron / scheduled trigger★★★★☆ complexity11 nodesn8nCustom
General Trigger: Cron / scheduled Nodes: 11 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #14270 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "46X7wVmqUVmJs0Cb",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Watchflow Global Health Monitor",
  "tags": [
    {
      "id": "Z3G9MT4HwiRujRJo",
      "name": "test",
      "createdAt": "2026-03-16T17:44:07.443Z",
      "updatedAt": "2026-03-16T17:44:07.443Z"
    }
  ],
  "nodes": [
    {
      "id": "ff05f5cc-da7d-46ed-9224-d55890535ee1",
      "name": "Get All Workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        624,
        704
      ],
      "parameters": {
        "filters": {
          "tags": "daily",
          "activeWorkflows": true
        },
        "returnAll": false,
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a5dc1b43-4f23-43cc-9287-f146c197a8a2",
      "name": "Get Last Execution",
      "type": "n8n-nodes-base.n8n",
      "position": [
        928,
        704
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "workflowId": {
            "__rl": true,
            "mode": "id",
            "value": "={{ $json.id }}"
          }
        },
        "options": {
          "activeWorkflows": true
        },
        "resource": "execution",
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4947f32f-d4a4-4a6b-b70c-3bf2f69fdc61",
      "name": "Is Successful?",
      "type": "n8n-nodes-base.if",
      "position": [
        1120,
        704
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "success-check",
              "operator": {
                "name": "equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "success"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "694e0ef1-851f-4994-8fd4-abe2739863c9",
      "name": "Watchflow: Ping",
      "type": "CUSTOM.watchflow",
      "position": [
        1424,
        656
      ],
      "parameters": {
        "key": "={{ $('Get All Workflows').item.json.name.toLowerCase().replace(/\\s+/g, '-') }}",
        "data": "={ \"last_execution_id\": \"{{ $json.id }}\", \"finished_at\": \"{{ $json.stoppedAt }}\" }",
        "name": "={{ $('Get All Workflows').item.json.name }}"
      },
      "credentials": {
        "watchflowApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9bf58354-8274-4ca7-8d36-09eabc132f32",
      "name": "Watchflow: Fail",
      "type": "CUSTOM.watchflow",
      "position": [
        1424,
        832
      ],
      "parameters": {
        "key": "={{ $('Get All Workflows').item.json.name.toLowerCase().replace(/\\s+/g, '-') }}",
        "data": "={ \"last_execution_id\": \"{{ $json.id }}\", \"error_details\":  \"{{ $json.data.resultData.error.message }}\"}",
        "name": "={{ $('Get All Workflows').item.json.name }}",
        "error": "={{  $json.data.resultData.error.message }}",
        "operation": "fail"
      },
      "credentials": {
        "watchflowApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7158dd0a-85fc-4646-ba52-6c02a57a7690",
      "name": "Every Day",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        336,
        704
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "9d6bad4d-4ac5-475c-86b2-580fccc6008a",
      "name": "Sticky Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        272
      ],
      "parameters": {
        "width": 556,
        "height": 200,
        "content": "### \ud83d\ude80 Setup & Requirements\n\n1. **Watchflow Node**: Install `@watchflow/n8n-nodes-watchflow` via npm.\n2. **Watchflow API Key**: Signup at `watchflow.io` -> Settings -> API Key.\n3. **n8n API Key**: Go to Settings -> n8n API in your instance.\n4. **n8n API Base URL**: Use `/v1/api` suffix (e.g., `https://n8n.domain.com/v1/api`)."
      },
      "typeVersion": 1
    },
    {
      "id": "fb4d879d-7bfe-4ad6-8490-551aa6ad857a",
      "name": "Sticky Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        528
      ],
      "parameters": {
        "width": 216,
        "height": 100,
        "content": "### \u23f0 1. Daily Health Audit\nInitiates the global scan for all active workflows."
      },
      "typeVersion": 1
    },
    {
      "id": "386eef80-904b-4c3d-be73-afc41ba040f7",
      "name": "Sticky Fetch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        528
      ],
      "parameters": {
        "width": 300,
        "height": 100,
        "content": "### \ud83d\udd0d 2. Dynamic Discovery\nFetches active workflows and inspects their latest status."
      },
      "typeVersion": 1
    },
    {
      "id": "da49a1e5-b3b5-494f-8e12-9627f3b43845",
      "name": "Sticky Eval",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        528
      ],
      "parameters": {
        "width": 248,
        "height": 100,
        "content": "### \u2696\ufe0f 3. Health Evaluator\nDetermines if the last run was successful."
      },
      "typeVersion": 1
    },
    {
      "id": "4038b06a-821b-43c3-b7f0-44397ace07e4",
      "name": "Sticky Watchflow",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1248,
        528
      ],
      "parameters": {
        "width": 298,
        "height": 96,
        "content": "### \ud83d\udce1 4. Watchflow Sync\nBroadcasts health status (Ping/Fail) to your Watchflow dashboard."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5c645f4b-fe5e-4124-a711-2f43d14a9da4",
  "connections": {
    "Every Day": {
      "main": [
        [
          {
            "node": "Get All Workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Successful?": {
      "main": [
        [
          {
            "node": "Watchflow: Ping",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Watchflow: Fail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get All Workflows": {
      "main": [
        [
          {
            "node": "Get Last Execution",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Last Execution": {
      "main": [
        [
          {
            "node": "Is Successful?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Ever had a critical n8n workflow fail silently, only to discover it days later? Never again.

Source: https://n8n.io/workflows/14270/ — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

This template creates a nightly backup of all n8n workflows and saves them to a Google Drive folder. Each night, the previous night's backups are moved to an “n8n_old” folder and renamed with the corr

Move Binary Data, Google Drive, Item Lists +1
General

Code Itemlists. Uses stickyNote, moveBinaryData, googleDrive, itemLists. Scheduled trigger; 33 nodes.

Move Binary Data, Google Drive, Item Lists +1
General

This workflow is perfect for n8n users who want to automatically backup all their workflows 💾 to Google Drive with zero manual effort. Perfect for teams managing multiple workflows or anyone who value

n8n, Google Drive
General

Imagine the sinking feeling: hours, weeks, or even months of meticulous work building your n8n workflows, suddenly gone. A server crash, an accidental deletion, data corruption, or an unexpected platf

Google Drive, n8n, Move Binary Data
General

Datetime Schedule. Uses scheduleTrigger, dateTime, dropbox, stickyNote. Scheduled trigger; 17 nodes.

Dropbox, n8n, Move Binary Data