This workflow corresponds to n8n.io template #5049 — 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 →
{
"id": "5rr11oY3PWtqx8az",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Slack Bot N8N Integration Hub",
"tags": [
{
"id": "XuoVybTXeUXuim6G",
"name": "\u2705 Live",
"createdAt": "2025-06-08T07:59:43.586Z",
"updatedAt": "2025-06-08T07:59:43.586Z"
},
{
"id": "RiQR5FfzNZyblqRY",
"name": "\ud83d\udee0\ufe0f Utility",
"createdAt": "2025-06-08T08:02:50.794Z",
"updatedAt": "2025-06-08T08:02:50.794Z"
},
{
"id": "TEMBBqocz4kZADTv",
"name": "\ud83d\udce4 Submitted Workflows",
"createdAt": "2025-06-08T07:38:04.084Z",
"updatedAt": "2025-06-08T07:38:04.084Z"
}
],
"nodes": [
{
"id": "b62c6302-387e-4ef3-af4c-92c87fdfef1b",
"name": "n8n Data Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-140,
-360
],
"parameters": {
"path": "874768ff-6631-42a8-8c49-25b63ead3fec",
"options": {},
"httpMethod": "POST",
"authentication": "basicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "6e22fc14-5eb0-4dab-944f-e527b10292a2",
"name": "Slack - Data Acknowledgment",
"type": "n8n-nodes-base.slack",
"position": [
80,
-360
],
"parameters": {
"text": "=Data Input \ud83d\udce5 : {{$json.body.data || $json.data || 'No data provided'}}\n\n\u2705 Data received and processed successfully! Your automation request has been submitted.",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "A12B1C1DEFG"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "48d837e7-626e-472b-b528-8b75ad2d86a5",
"name": "n8n Button Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-140,
-80
],
"parameters": {
"path": "fa872cfc-abe3-481d-ab7c-74f78d83a070",
"options": {},
"httpMethod": "POST",
"authentication": "basicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "16390c39-acbd-437a-ae90-be702e67bed6",
"name": "Process Button Action",
"type": "n8n-nodes-base.function",
"position": [
80,
-80
],
"parameters": {
"functionCode": "// Process approval/rejection action\nconst webhookData = items[0].json;\n\n// Extract data from the webhook payload\nconst body = webhookData.body || webhookData;\nconst action = body.action;\nconst user = body.user || {};\nconst timestamp = body.timestamp || Date.now();\n\n// Create response based on action\nlet message = '';\nlet emoji = '';\nlet status = '';\n\nconst userDisplayName = user.name || user.id || 'Unknown User';\n\nif (action === 'approve') {\n emoji = '\u2705';\n status = 'APPROVED';\n message = `${emoji} *Request ${status}*\\n\\n` +\n `\ud83d\udc64 *Approved by:* ${userDisplayName}\\n` +\n `\u23f0 *Time:* ${new Date(timestamp).toLocaleString()}\\n` +\n `\ud83c\udfaf *Action:* Request has been processed successfully and approved for execution.\\n` +\n `\ud83d\udccb *Next Steps:* The automation workflow will proceed with the approved action.`;\n} else if (action === 'reject') {\n emoji = '\u274c';\n status = 'REJECTED';\n message = `${emoji} *Request ${status}*\\n\\n` +\n `\ud83d\udc64 *Rejected by:* ${userDisplayName}\\n` +\n `\u23f0 *Time:* ${new Date(timestamp).toLocaleString()}\\n` +\n `\ud83d\udeab *Action:* Request has been rejected and will not be processed.\\n` +\n `\ud83d\udccb *Next Steps:* No further action will be taken for this request.`;\n} else {\n emoji = '\u26a0\ufe0f';\n status = 'UNKNOWN';\n message = `${emoji} *Unknown Action Received*\\n\\n` +\n `\ud83d\udc64 *User:* ${userDisplayName}\\n` +\n `\u23f0 *Time:* ${new Date(timestamp).toLocaleString()}\\n` +\n `\u2753 *Action:* ${action || 'undefined'}\\n` +\n `\ud83d\udccb *Status:* Unable to process this action type.`;\n}\n\n// Return processed data\nreturn [{\n json: {\n ...webhookData,\n processedMessage: message,\n emoji: emoji,\n status: status,\n processedAt: new Date().toISOString()\n }\n}];\n"
},
"typeVersion": 1
},
{
"id": "bbb48629-5773-42d6-a3f7-10f87fbb439c",
"name": "Slack - Button Acknowledgment",
"type": "n8n-nodes-base.slack",
"position": [
300,
-80
],
"parameters": {
"text": "={{$json.processedMessage}}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "A12B1C1DEFG"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "63a966d9-4eab-4736-9cac-74f79f1f680e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-460
],
"parameters": {
"width": 760,
"height": 280,
"content": "## DATA_WEBHOOK "
},
"typeVersion": 1
},
{
"id": "82e8b699-3e70-4ffe-8f18-e32d15b3fc67",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-160
],
"parameters": {
"color": 4,
"width": 760,
"height": 280,
"content": "## BUTTON_WEBHOOK"
},
"typeVersion": 1
},
{
"id": "81cd3810-cc40-436c-b3a6-2c651eccf014",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
-460
],
"parameters": {
"width": 380,
"height": 240,
"content": "\ud83d\ude80 SLACK BOT N8N INTEGRATION HUB\n\n\ud83d\udccc Purpose: Complete Slack automation workflow\n\ud83d\udd17 Handles: Data submission + Approval workflows\n\u26a1 Features: Real-time responses, dual webhooks\n\n\ud83c\udfaf Use Cases:\n\u2022 Employee approval requests\n\u2022 Data collection & processing\n\u2022 Interactive team workflows\n\u2022 Automated decision routing"
},
"typeVersion": 1
},
{
"id": "1aff3893-1619-43b2-9c89-37e086189716",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
-200
],
"parameters": {
"width": 380,
"height": 200,
"content": "\ud83d\udee0\ufe0f QUICK SETUP GUIDE\n\n1\ufe0f\u20e3 Configure webhook URLs in Slack bot\n2\ufe0f\u20e3 Set Slack channel ID in response nodes\n3\ufe0f\u20e3 Update Slack credentials\n4\ufe0f\u20e3 Test with /automation command\n\n\ud83d\udd10 Optional: Enable Basic Auth for security\n\ud83d\udcd6 Full docs: https://github.com/iam-niranjan/slack-n8n-integration-hub"
},
"typeVersion": 1
},
{
"id": "c82d2e8a-34f2-4699-a1b0-c605797390e4",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
20
],
"parameters": {
"width": 380,
"height": 260,
"content": "\ud83d\udcc2 COMPLETE SOURCE CODE\n\n\ud83c\udf1f GitHub: https://github.com/iam-niranjan/slack-n8n-integration-hub\n\n\ud83d\udce6 Includes:\n\u2705 Slack Bot source code\n\u2705 Environment setup guide\n\u2705 Authentication examples\n\u2705 Troubleshooting docs\n\n\u2b50 Star the repo if helpful!"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "fef3bea8-23c9-4266-8a10-0aa072e25a74",
"connections": {
"n8n Data Webhook": {
"main": [
[
{
"node": "Slack - Data Acknowledgment",
"type": "main",
"index": 0
}
]
]
},
"n8n Button Webhook": {
"main": [
[
{
"node": "Process Button Action",
"type": "main",
"index": 0
}
]
]
},
"Process Button Action": {
"main": [
[
{
"node": "Slack - Button Acknowledgment",
"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.
httpBasicAuthslackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This repository demonstrates a powerful Slack Bot Socket App that seamlessly integrates with n8n for automation workflows. This is just a showcase of what's possible when combining Slack's interactive capabilities with n8n's automation power - the possibilities are truly endless!
Source: https://n8n.io/workflows/5049/ — 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.
HR teams, IT Operations, and System Administrators managing employee onboarding at scale. It’s perfect if you use Odoo 18 to trigger account requests and need Redmine + GitLab accounts created instant
This workflow is a complete, production-ready solution for recovering abandoned carts in Shopify stores using a multi-channel, multi-touch approach. It automates personalized follow-ups via Email, SMS
Slack lacks a native bulk delete feature. Users must delete messages manually, which is time-consuming and inefficient for large volumes.
This workflow automates end-to-end research analysis by coordinating multiple AI models—including NVIDIA NIM (Llama), OpenAI GPT-4, and Claude to analyze uploaded documents, extract insights, and gene
Are you tired of the repetitive dance between git push, creating a pull request in GitHub, updating the corresponding task in JIRA, and then manually notifying your team in Slack, or Notion?