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 →
{
"updatedAt": "2026-04-13T19:25:24.249Z",
"createdAt": "2026-04-13T19:25:24.249Z",
"id": "dFJP7lBXhEkBrw58",
"name": "\ud83e\uddf9 F2G De-Sloppify",
"description": null,
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23
}
]
}
},
"name": "Daily 11pm",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
100,
300
],
"id": "cf5e82b5-241b-4e92-aa27-ab05adf54e13"
},
{
"parameters": {
"url": "http://host.docker.internal:5678/api/v1/executions?limit=20",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-N8N-API-KEY",
"value": "<REDACTED>"
}
]
},
"options": {}
},
"name": "1. Fetch Executions",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
350,
300
],
"id": "cfc24308-ee08-415f-af58-c5bdeea1e789"
},
{
"parameters": {
"mode": "runOnceForAllItems",
"jsCode": "\nconst execs = .data || [];\nconst today = new Date().toISOString().slice(0,10);\nlet successes = 0, errors = 0, workflows = {};\nfor (const e of execs) {\n if (!e.stoppedAt || !e.stoppedAt.startsWith(today)) continue;\n if (e.status === 'success') successes++;\n else if (e.status === 'error') errors++;\n const wfId = e.workflowId || '?';\n if (!workflows[wfId]) workflows[wfId] = {success: 0, error: 0};\n workflows[wfId][e.status === 'success' ? 'success' : 'error']++;\n}\nconst nl = String.fromCharCode(10);\nlet summary = 'DAILY EXECUTION REVIEW \u2014 ' + today + nl;\nsummary += 'Total: ' + (successes+errors) + ' | Success: ' + successes + ' | Errors: ' + errors + nl;\nfor (const [wf, stats] of Object.entries(workflows)) {\n summary += ' WF ' + wf + ': ' + stats.success + ' ok, ' + stats.error + ' err' + nl;\n}\nreturn [{json: {summary, successes, errors, errorRate: errors/(successes+errors||1)}}];\n"
},
"name": "2. Analyze",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
300
],
"id": "00c5692b-73b1-4c4d-8988-ee15ed523334"
},
{
"parameters": {
"method": "POST",
"url": "http://host.docker.internal:8100/reflect",
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\"workflow\": \"de-sloppify\", \"findings\": [{\"text\": .summary, \"type\": \"review\"}]}) }}",
"options": {}
},
"name": "3. Reflect",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
850,
300
],
"id": "2b2ecdbd-1290-423f-9844-5716aac06850"
},
{
"parameters": {
"mode": "runOnceForAllItems",
"jsCode": "\nconst errorRate = .first().json.errorRate || 0;\nconst summary = .first().json.summary || '';\nif (errorRate > 0.3) {\n return [{json: {alert: true, content: '\u26a0\ufe0f **De-Sloppify Alert**\nError rate: ' + Math.round(errorRate*100) + '%\n' + summary}}];\n}\nreturn [{json: {alert: false}}];\n"
},
"name": "4. Check Threshold",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1100,
300
],
"id": "6024b572-b726-4ba6-ba21-e8c11c2ee120"
},
{
"parameters": {
"method": "POST",
"url": "https://discord.com/api/webhooks/1493012313136173178/v5kIckHlgdjvSPe4y0v0Q-tFitWEef76rNGrYDIIsKTB_FC81u0ZiaF1606sxQBUOyCk",
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\"content\": $json.content || \"De-sloppify: all clear\"}) }}",
"options": {}
},
"name": "5. Alert OPS",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1350,
300
],
"id": "42a9d62c-4522-4264-8a76-610c12bbce0a"
}
],
"connections": {
"Daily 11pm": {
"main": [
[
{
"node": "1. Fetch Executions",
"type": "main",
"index": 0
}
]
]
},
"1. Fetch Executions": {
"main": [
[
{
"node": "2. Analyze",
"type": "main",
"index": 0
}
]
]
},
"2. Analyze": {
"main": [
[
{
"node": "3. Reflect",
"type": "main",
"index": 0
}
]
]
},
"3. Reflect": {
"main": [
[
{
"node": "4. Check Threshold",
"type": "main",
"index": 0
}
]
]
},
"4. Check Threshold": {
"main": [
[
{
"node": "5. Alert OPS",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": false
},
"staticData": {
"node:Daily 11pm": {
"recurrenceRules": []
}
},
"meta": null,
"versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
"activeVersionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
"versionCounter": 4,
"triggerCount": 1,
"shared": [
{
"updatedAt": "2026-04-13T19:25:24.254Z",
"createdAt": "2026-04-13T19:25:24.254Z",
"role": "workflow:owner",
"workflowId": "dFJP7lBXhEkBrw58",
"projectId": "vB3IpiULx2Yon8YS",
"project": {
"updatedAt": "2026-04-12T13:04:13.020Z",
"createdAt": "2026-04-12T13:02:01.729Z",
"id": "vB3IpiULx2Yon8YS",
"name": "Boutchouang NATHAN <boutchouangelija@gmail.com>",
"type": "personal",
"icon": null,
"description": null,
"creatorId": "876988b2-cfb7-489a-b244-b36cdcf76150"
}
}
],
"tags": [],
"activeVersion": {
"updatedAt": "2026-04-13T19:25:24.264Z",
"createdAt": "2026-04-13T19:25:24.264Z",
"versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
"workflowId": "dFJP7lBXhEkBrw58",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 23
}
]
}
},
"name": "Daily 11pm",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
100,
300
],
"id": "cf5e82b5-241b-4e92-aa27-ab05adf54e13"
},
{
"parameters": {
"url": "http://host.docker.internal:5678/api/v1/executions?limit=20",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-N8N-API-KEY",
"value": "<REDACTED>"
}
]
},
"options": {}
},
"name": "1. Fetch Executions",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
350,
300
],
"id": "cfc24308-ee08-415f-af58-c5bdeea1e789"
},
{
"parameters": {
"mode": "runOnceForAllItems",
"jsCode": "\nconst execs = .data || [];\nconst today = new Date().toISOString().slice(0,10);\nlet successes = 0, errors = 0, workflows = {};\nfor (const e of execs) {\n if (!e.stoppedAt || !e.stoppedAt.startsWith(today)) continue;\n if (e.status === 'success') successes++;\n else if (e.status === 'error') errors++;\n const wfId = e.workflowId || '?';\n if (!workflows[wfId]) workflows[wfId] = {success: 0, error: 0};\n workflows[wfId][e.status === 'success' ? 'success' : 'error']++;\n}\nconst nl = String.fromCharCode(10);\nlet summary = 'DAILY EXECUTION REVIEW \u2014 ' + today + nl;\nsummary += 'Total: ' + (successes+errors) + ' | Success: ' + successes + ' | Errors: ' + errors + nl;\nfor (const [wf, stats] of Object.entries(workflows)) {\n summary += ' WF ' + wf + ': ' + stats.success + ' ok, ' + stats.error + ' err' + nl;\n}\nreturn [{json: {summary, successes, errors, errorRate: errors/(successes+errors||1)}}];\n"
},
"name": "2. Analyze",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
600,
300
],
"id": "00c5692b-73b1-4c4d-8988-ee15ed523334"
},
{
"parameters": {
"method": "POST",
"url": "http://host.docker.internal:8100/reflect",
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\"workflow\": \"de-sloppify\", \"findings\": [{\"text\": .summary, \"type\": \"review\"}]}) }}",
"options": {}
},
"name": "3. Reflect",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
850,
300
],
"id": "2b2ecdbd-1290-423f-9844-5716aac06850"
},
{
"parameters": {
"mode": "runOnceForAllItems",
"jsCode": "\nconst errorRate = .first().json.errorRate || 0;\nconst summary = .first().json.summary || '';\nif (errorRate > 0.3) {\n return [{json: {alert: true, content: '\u26a0\ufe0f **De-Sloppify Alert**\nError rate: ' + Math.round(errorRate*100) + '%\n' + summary}}];\n}\nreturn [{json: {alert: false}}];\n"
},
"name": "4. Check Threshold",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1100,
300
],
"id": "6024b572-b726-4ba6-ba21-e8c11c2ee120"
},
{
"parameters": {
"method": "POST",
"url": "https://discord.com/api/webhooks/1493012313136173178/v5kIckHlgdjvSPe4y0v0Q-tFitWEef76rNGrYDIIsKTB_FC81u0ZiaF1606sxQBUOyCk",
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({\"content\": $json.content || \"De-sloppify: all clear\"}) }}",
"options": {}
},
"name": "5. Alert OPS",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1350,
300
],
"id": "42a9d62c-4522-4264-8a76-610c12bbce0a"
}
],
"connections": {
"Daily 11pm": {
"main": [
[
{
"node": "1. Fetch Executions",
"type": "main",
"index": 0
}
]
]
},
"1. Fetch Executions": {
"main": [
[
{
"node": "2. Analyze",
"type": "main",
"index": 0
}
]
]
},
"2. Analyze": {
"main": [
[
{
"node": "3. Reflect",
"type": "main",
"index": 0
}
]
]
},
"3. Reflect": {
"main": [
[
{
"node": "4. Check Threshold",
"type": "main",
"index": 0
}
]
]
},
"4. Check Threshold": {
"main": [
[
{
"node": "5. Alert OPS",
"type": "main",
"index": 0
}
]
]
}
},
"authors": "Boutchouang NATHAN",
"name": null,
"description": null,
"autosaved": false,
"workflowPublishHistory": [
{
"createdAt": "2026-04-13T19:25:24.394Z",
"id": 157,
"workflowId": "dFJP7lBXhEkBrw58",
"versionId": "9c6c16c7-2431-4989-ad8e-f11f1f52823d",
"event": "activated",
"userId": "876988b2-cfb7-489a-b244-b36cdcf76150"
}
]
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
🧹 F2G De-Sloppify. Uses httpRequest. Scheduled trigger; 6 nodes.
Source: https://github.com/BOUTCHOUANG1/n8n-workflow/blob/619f3562fcbdf23d05d3e3fe3588e73a80c0aa31/n8n-workflows/f2g-de-sloppify.json — original creator credit. Request a take-down →
More Web Scraping workflows → · Browse all categories →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.
This template runs two scheduled workflows to govern Microsoft Entra ID (Azure AD) guest accounts by detecting stale users via Microsoft Graph, staging deletions in SharePoint with a 72-hour window, n
Jira-Allure-Auto-Qa. Uses httpRequest, jira. Scheduled trigger; 68 nodes.
Spotify-Sync-Surrealdb-V1. Uses httpRequest, n8n-nodes-surrealdb, spotify. Scheduled trigger; 62 nodes.
As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o