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": "02 \u2014 Approval inbox \u2192 Slack",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 30
}
]
}
},
"id": "trigger-30m",
"name": "Every 30 min",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
]
},
{
"parameters": {
"method": "GET",
"url": "=http://host.docker.internal:4000/api/approvals",
"options": {}
},
"id": "http-approvals",
"name": "GET /api/approvals",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
480,
300
]
},
{
"parameters": {
"fieldToSplitOut": "items",
"options": {}
},
"id": "split-items",
"name": "Split per item",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
720,
300
]
},
{
"parameters": {
"jsCode": "const r = $input.first().json;\nconst item = r.item;\nconst dashboard = ($env.DASHBOARD_URL || 'http://localhost:3000') + '/approvals';\nconst text = `*New script awaiting approval* \u2014 ${r.campaignName || 'campaign'}\\n*${item.topic}*\\n_${item.type} \u00b7 ${r.industryName || '\u2014'} \u00b7 ${item.language.toUpperCase()}_\\n\\n${item.hook}\\n\\nReview: ${dashboard}`;\nreturn [{ json: { text, itemId: item.id } }];"
},
"id": "format",
"name": "Format Slack message",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
960,
300
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.SLACK_WEBHOOK_URL }}",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={ \"text\": $json.text }",
"options": {}
},
"id": "slack-post",
"name": "Post to Slack",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1200,
300
]
}
],
"connections": {
"Every 30 min": {
"main": [
[
{
"node": "GET /api/approvals",
"type": "main",
"index": 0
}
]
]
},
"GET /api/approvals": {
"main": [
[
{
"node": "Split per item",
"type": "main",
"index": 0
}
]
]
},
"Split per item": {
"main": [
[
{
"node": "Format Slack message",
"type": "main",
"index": 0
}
]
]
},
"Format Slack message": {
"main": [
[
{
"node": "Post to Slack",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"active": false,
"versionId": "1",
"tags": [
"social-agent",
"approvals"
]
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
02 — Approval inbox → Slack. Uses httpRequest. Scheduled trigger; 5 nodes.
Source: https://github.com/anthonyonazure/social-agent/blob/main/n8n/workflows/02-approval-slack.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.
Free Support: Setting up and getting the workflow tailord to your needs. One small free adjustment included.
This workflow aims to help you and your team track your expenses with OpenAI It automatically collects your OpenAI organization’s API usage and cost data every few days and saves it to a ready-to-use
This n8n workflow automates Kubernetes root cause analysis (RCA) and incident alerting by integrating with Loki, Prometheus, and Slack. It streamlines log collection, cluster health monitoring, and AI
Keep your leadership team informed with a data-driven, automated morning briefing. This workflow pulls live metrics from HubSpot, Zendesk, and Pipedrive, then uses AI and Neural TTS to generate a prof
Automatically fetch, rank, and summarize the top financial stories from curated RSS feeds each day, then deliver a concise AI-written digest to Telegram and log the run to Google Sheets. Runs on a dai