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 →
{
"name": "Zero Risk \u2014 Daily Ops Digest (9am)",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * *"
}
]
}
},
"id": "cron-trigger",
"name": "Daily 9am",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
]
},
{
"parameters": {
"method": "GET",
"url": "={{ $env.ZERO_RISK_API_URL || 'https://zero-risk-platform.vercel.app' }}/api/analytics/performance?days=1",
"options": {
"timeout": 30000
}
},
"id": "fetch-perf",
"name": "Fetch Yesterday Performance",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
480,
220
]
},
{
"parameters": {
"method": "GET",
"url": "={{ $env.ZERO_RISK_API_URL || 'https://zero-risk-platform.vercel.app' }}/api/hitl/pending",
"options": {
"timeout": 30000
}
},
"id": "fetch-hitl",
"name": "Fetch HITL Queue",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
480,
380
]
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineAll",
"options": {}
},
"id": "merge",
"name": "Merge Data",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
720,
300
]
},
{
"parameters": {
"jsCode": "// Compose digest from both sources\nconst perf = $input.all()[0]?.json || {};\nconst hitl = $input.all()[1]?.json || {};\nconst pipelines = perf.pipelines_completed ?? perf.total_pipelines ?? 0;\nconst pipelinesFailed = perf.pipelines_failed ?? 0;\nconst costUsd = (perf.total_cost_usd ?? 0).toFixed(2);\nconst avgSteps = perf.avg_steps_per_pipeline ?? 0;\nconst hitlPending = (hitl.items || hitl.pipeline_qa || []).length;\nconst topAgent = perf.top_agent || 'n/a';\n\nconst lines = [\n `\ud83c\udf05 *Zero Risk \u2014 Daily Digest*`,\n ``,\n `\ud83d\udcca *Yesterday*`,\n `\u2022 Pipelines completed: ${pipelines}`,\n `\u2022 Pipelines failed: ${pipelinesFailed}`,\n `\u2022 Coste total: $${costUsd} USD`,\n `\u2022 Avg steps/pipeline: ${avgSteps}`,\n `\u2022 Top agent: ${topAgent}`,\n ``,\n `\ud83d\udc65 *HITL Queue*`,\n `\u2022 Approvals pendientes: ${hitlPending}`,\n ``,\n `\ud83d\udd17 Inbox: ${process.env.ZERO_RISK_API_URL || 'https://zero-risk-platform.vercel.app'}/dashboard/inbox`,\n `\ud83d\udd17 Mission Control: https://zero-risk-platform.vercel.app`,\n];\n\nreturn [{ json: { text: lines.join('\\n') } }];"
},
"id": "compose",
"name": "Compose Digest",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
960,
300
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.SLACK_WEBHOOK_URL }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={ \"text\": \"{{ $json.text }}\" }",
"options": {}
},
"id": "post-slack",
"name": "Post to Slack",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1200,
300
]
}
],
"connections": {
"Daily 9am": {
"main": [
[
{
"node": "Fetch Yesterday Performance",
"type": "main",
"index": 0
},
{
"node": "Fetch HITL Queue",
"type": "main",
"index": 0
}
]
]
},
"Fetch Yesterday Performance": {
"main": [
[
{
"node": "Merge Data",
"type": "main",
"index": 0
}
]
]
},
"Fetch HITL Queue": {
"main": [
[
{
"node": "Merge Data",
"type": "main",
"index": 1
}
]
]
},
"Merge Data": {
"main": [
[
{
"node": "Compose Digest",
"type": "main",
"index": 0
}
]
]
},
"Compose Digest": {
"main": [
[
{
"node": "Post to Slack",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true
},
"tags": [
{
"name": "zero-risk",
"id": "1"
},
{
"name": "observability",
"id": "7"
},
{
"name": "cron",
"id": "3"
}
],
"triggerCount": 1,
"versionId": "1"
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Zero Risk — Daily Ops Digest (9am). Uses httpRequest. Scheduled trigger; 6 nodes.
Source: https://github.com/emilacho/zero-risk-platform/blob/b91d7e73029d184db13fbe29c410317e2a267070/n8n-workflows/daily-ops-digest.json — original creator credit. Request a take-down →
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