{ "name": "n8n Monitoring Dashboard - Poller", "nodes": [ { "parameters": { "content": "## Setup\n1. Create an \"HTTP Header Auth\" credential named \"n8n API Key\" (header X-N8N-API-KEY = your n8n API key).\n2. Create an \"HTTP Header Auth\" credential named \"PocketBase Admin\" (header Authorization = \"Bearer \").\n3. PocketBase base URL is pre-set to http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io \u2014 no change needed.\n4. Collections already created in PocketBase.\n5. Activate this workflow when ready.", "height": 200, "width": 300, "color": 4 }, "id": "24bccdfd-9f10-497e-b2bc-580f6315ccd2", "name": "Sticky Note 67b8b148", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -1056, 272 ] }, { "parameters": { "rule": { "interval": [ { "field": "minutes" } ] } }, "id": "d3ef4a9b-7f14-4c2c-a0ea-14eeeea28ceb", "name": "Every 5 Minutes", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ -992, 320 ] }, { "parameters": { "url": "https://wfdash.n8n.apphub.co.za/api/v1/workflows", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "options": {} }, "id": "d69f9f84-9a58-42c7-8a03-ab14618b9eeb", "name": "Fetch n8n Workflows", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ -688, 176 ], "credentials": { "httpHeaderAuth": { "id": "6H3KsAmWrPkxYDvZ", "name": "N8N_API" } } }, { "parameters": { "fieldToSplitOut": "data", "options": {} }, "id": "7b3c2540-f6d5-48e7-b321-ae5dfebcb5f4", "name": "Split Workflows Array", "type": "n8n-nodes-base.splitOut", "typeVersion": 1, "position": [ -400, 176 ] }, { "parameters": {}, "id": "b4a435aa-355e-4560-9867-39fdc9ad6a8d", "name": "Workflows Sync Done", "type": "n8n-nodes-base.noOp", "typeVersion": 1, "position": [ 1104, 176 ] }, { "parameters": { "url": "http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/workflows/records", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendQuery": true, "queryParameters": { "parameters": [ { "name": "filter", "value": "=(n8n_id=\"{{ $json.id }}\")" } ] }, "options": {} }, "id": "89d63965-a993-49f7-bb2d-d96dc8f98c74", "name": "Check Workflow Record Exists", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 208, 176 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "loose", "version": 1 }, "conditions": [ { "leftValue": "={{ $json.totalItems }}", "operator": { "type": "number", "operation": "gt" }, "rightValue": 0 } ], "combinator": "and" }, "options": {} }, "id": "ebbb0f2b-3994-468a-8d91-3066b64e9c2d", "name": "Workflow Record Exists?", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ 512, 176 ] }, { "parameters": { "method": "PATCH", "url": "={{ \"http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/workflows/records/\" + $json.items[0].id }}", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "={{ { \"name\": $(\"Split Workflows Array\").item.json.name, \"active\": $(\"Split Workflows Array\").item.json.active, \"n8n_updated_at\": $(\"Split Workflows Array\").item.json.updatedAt } }}", "options": {} }, "id": "59e14242-6059-4bce-b220-14db1c0b2ebe", "name": "Update Workflow Record", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 800, 80 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } }, { "parameters": { "options": {} }, "id": "b6f0ba87-7db6-40df-b7df-bba2cccb00a2", "name": "Workflows: One At A Time", "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ -96, 176 ] }, { "parameters": { "method": "POST", "url": "http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/workflows/records", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "={{ { \"n8n_id\": $(\"Split Workflows Array\").item.json.id, \"name\": $(\"Split Workflows Array\").item.json.name, \"active\": $(\"Split Workflows Array\").item.json.active, \"n8n_updated_at\": $(\"Split Workflows Array\").item.json.updatedAt } }}", "options": {} }, "id": "2d1eecf4-3161-4e7b-ba48-27f847151d9d", "name": "Create Workflow Record", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 800, 272 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } }, { "parameters": { "url": "https://wfdash.n8n.apphub.co.za/api/v1/executions", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendQuery": true, "queryParameters": { "parameters": [ { "name": "limit", "value": "50" }, { "name": "includeData", "value": "true" } ] }, "options": {} }, "id": "14fcdffc-a949-4a02-b6be-c5574fe075b6", "name": "Fetch n8n Executions", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ -688, 576 ], "credentials": { "httpHeaderAuth": { "id": "6H3KsAmWrPkxYDvZ", "name": "Header Auth account" } } }, { "parameters": { "fieldToSplitOut": "data", "options": {} }, "id": "d3b19216-a785-495a-b42d-28f9ac3569d3", "name": "Split Executions Array", "type": "n8n-nodes-base.splitOut", "typeVersion": 1, "position": [ -400, 576 ] }, { "parameters": {}, "id": "1efb39c7-4fd6-4c43-83f7-1dda5bfcb81e", "name": "Executions Sync Done", "type": "n8n-nodes-base.noOp", "typeVersion": 1, "position": [ 1104, 576 ] }, { "parameters": { "url": "http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/executions/records", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendQuery": true, "queryParameters": { "parameters": [ { "name": "filter", "value": "=(n8n_execution_id=\"{{ $json.id }}\")" } ] }, "options": {} }, "id": "9e9f478e-2208-4ce4-a010-52ba2ff3bdde", "name": "Check Execution Record Exists", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 208, 576 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "loose", "version": 1 }, "conditions": [ { "leftValue": "={{ $json.totalItems }}", "operator": { "type": "number", "operation": "gt" }, "rightValue": 0 } ], "combinator": "and" }, "options": {} }, "id": "aad63ade-7f8b-4147-a424-452d836f8431", "name": "Execution Record Exists?", "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ 512, 576 ] }, { "parameters": { "method": "PATCH", "url": "={{ \"http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/executions/records/\" + $json.items[0].id }}", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "={{ { \"status\": $(\"Split Executions Array\").item.json.status, \"started_at\": $(\"Split Executions Array\").item.json.startedAt, \"stopped_at\": $(\"Split Executions Array\").item.json.stoppedAt, \"workflow_n8n_id\": $(\"Split Executions Array\").item.json.workflowId, \"error_message\": ((() => { try { return JSON.parse($('Split Executions Array').item.json.data || '{}')?.resultData?.error?.message || ''; } catch { return ''; } })()) } }}", "options": {} }, "id": "95424108-0bcd-4445-a666-5ea8bbc2337d", "name": "Update Execution Record", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 800, 480 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } }, { "parameters": { "options": {} }, "id": "9ad39eac-3880-44b0-9254-04c7fec77760", "name": "Executions: One At A Time", "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ -96, 576 ] }, { "parameters": { "method": "POST", "url": "http://pocketbase-fftm1vu8twxfixup17v82xwe.169.239.180.130.sslip.io/api/collections/executions/records", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "specifyBody": "json", "jsonBody": "={{ { \"n8n_execution_id\": $(\"Split Executions Array\").item.json.id, \"workflow_n8n_id\": $(\"Split Executions Array\").item.json.workflowId, \"status\": $(\"Split Executions Array\").item.json.status, \"started_at\": $(\"Split Executions Array\").item.json.startedAt, \"stopped_at\": $(\"Split Executions Array\").item.json.stoppedAt, \"error_message\": ((() => { try { return JSON.parse($('Split Executions Array').item.json.data || '{}')?.resultData?.error?.message || ''; } catch { return ''; } })()) } }}", "options": {} }, "id": "28f98c6d-0c0d-4aa0-b4ed-3918e8122c2e", "name": "Create Execution Record", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 800, 672 ], "credentials": { "httpHeaderAuth": { "id": "HC4oQ8isTW3CEuSC", "name": "POCKETBASE" } } } ], "pinData": {}, "connections": { "Every 5 Minutes": { "main": [ [ { "node": "Fetch n8n Workflows", "type": "main", "index": 0 }, { "node": "Fetch n8n Executions", "type": "main", "index": 0 } ] ] }, "Fetch n8n Workflows": { "main": [ [ { "node": "Split Workflows Array", "type": "main", "index": 0 } ] ] }, "Split Workflows Array": { "main": [ [ { "node": "Workflows: One At A Time", "type": "main", "index": 0 } ] ] }, "Check Workflow Record Exists": { "main": [ [ { "node": "Workflow Record Exists?", "type": "main", "index": 0 } ] ] }, "Workflow Record Exists?": { "main": [ [ { "node": "Update Workflow Record", "type": "main", "index": 0 } ], [ { "node": "Create Workflow Record", "type": "main", "index": 0 } ] ] }, "Update Workflow Record": { "main": [ [ { "node": "Workflows: One At A Time", "type": "main", "index": 0 } ] ] }, "Workflows: One At A Time": { "main": [ [ { "node": "Workflows Sync Done", "type": "main", "index": 0 } ], [ { "node": "Check Workflow Record Exists", "type": "main", "index": 0 } ] ] }, "Create Workflow Record": { "main": [ [ { "node": "Workflows: One At A Time", "type": "main", "index": 0 } ] ] }, "Fetch n8n Executions": { "main": [ [ { "node": "Split Executions Array", "type": "main", "index": 0 } ] ] }, "Split Executions Array": { "main": [ [ { "node": "Executions: One At A Time", "type": "main", "index": 0 } ] ] }, "Check Execution Record Exists": { "main": [ [ { "node": "Execution Record Exists?", "type": "main", "index": 0 } ] ] }, "Execution Record Exists?": { "main": [ [ { "node": "Update Execution Record", "type": "main", "index": 0 } ], [ { "node": "Create Execution Record", "type": "main", "index": 0 } ] ] }, "Update Execution Record": { "main": [ [ { "node": "Executions: One At A Time", "type": "main", "index": 0 } ] ] }, "Executions: One At A Time": { "main": [ [ { "node": "Executions Sync Done", "type": "main", "index": 0 } ], [ { "node": "Check Execution Record Exists", "type": "main", "index": 0 } ] ] }, "Create Execution Record": { "main": [ [ { "node": "Executions: One At A Time", "type": "main", "index": 0 } ] ] } }, "active": false, "settings": { "executionOrder": "v1", "binaryMode": "separate", "availableInMCP": true }, "versionId": "2509116a-170f-4eda-b3d5-93dc714ac8d1", "meta": { "aiBuilderAssisted": true, "builderVariant": "mcp", "instanceId": "05bcfa3b50919141d3600718ff4b7b2b52a3883525b05573a27ba5ef437ac7fb" }, "nodeGroups": [], "id": "cM8YciHiEwpslh1y", "tags": [] }