This workflow corresponds to n8n.io template #5478 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
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": "keolDNOyCgI0lx9d",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Virtual Scrum Master using Slack and Asana",
"tags": [
{
"id": "vfJ7DxaB1BnsVQhe",
"name": "Public",
"createdAt": "2025-06-23T09:52:14.318Z",
"updatedAt": "2025-06-23T09:52:14.318Z"
}
],
"nodes": [
{
"id": "fd8146af-2365-417f-ba45-2e2aaba2c33a",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-360,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6499d1f0-be94-4f6f-8f92-07d2e0791230",
"name": "Get Channel Details",
"type": "n8n-nodes-base.slack",
"position": [
120,
660
],
"parameters": {
"resource": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.slack_channel_id }}"
},
"operation": "member",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "1d5ece83-e511-4014-9784-871aa1d6e4f8",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
-80
],
"parameters": {
"color": 4,
"width": 320,
"height": 220,
"content": "## Slack app permissions\n- channels:history\n- chat:write\n- groups:history\n- im:history\n- mpim:history\n- users.profile:write\n- users:write"
},
"typeVersion": 1
},
{
"id": "dee6c253-6969-4ee5-bdac-5d14962c4533",
"name": "Get Asana Project Sections",
"type": "n8n-nodes-base.httpRequest",
"position": [
120,
-20
],
"parameters": {
"url": "=https://app.asana.com/api/1.0/projects/{{ $json.asana_project_id }}/sections",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "asanaOAuth2Api"
},
"credentials": {
"asanaOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "be07ba30-73bb-404e-9fab-d71111b43819",
"name": "Channel History",
"type": "n8n-nodes-base.slack",
"position": [
120,
400
],
"parameters": {
"filters": {
"latest": "={{ $now.minus(1,'days') }}"
},
"resource": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.slack_channel_id }}"
},
"operation": "history",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "93e16b93-acc6-42fb-984a-310904dd6145",
"name": "Tasks Modified Since Yesterday",
"type": "n8n-nodes-base.asana",
"position": [
120,
140
],
"parameters": {
"filters": {
"project": "={{ $json.asana_project_id }}",
"modified_since": "={{ $now.minus(1, 'day') }}"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"asanaOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "7f52982c-e233-47ed-aa62-38bd8b398ceb",
"name": "Tasks Details",
"type": "n8n-nodes-base.asana",
"position": [
360,
140
],
"parameters": {
"id": "={{ $json.gid }}",
"operation": "get",
"authentication": "oAuth2"
},
"credentials": {
"asanaOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c8618827-ce78-4326-87e5-f1f7dc058798",
"name": "Only Content For Analysis",
"type": "n8n-nodes-base.set",
"position": [
740,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0d1da4ff-28a3-44f8-a941-1a7f4e486b05",
"name": "user",
"type": "string",
"value": "={{ $json.user }}"
},
{
"id": "0ffd9ce6-82f5-4f17-897a-ce5fe57f4e11",
"name": "text",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d48e6ec7-e75e-4114-8c76-66bbb2556d8a",
"name": "Keep Details for Analysis",
"type": "n8n-nodes-base.set",
"position": [
740,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2c9d1a78-82b3-45fc-b348-f26d17ffaf83",
"name": "assignee",
"type": "string",
"value": "={{ $json.assignee.name }}"
},
{
"id": "e8c09427-a6c4-4f8d-b318-c29343db8713",
"name": "completed",
"type": "string",
"value": "={{ $json.completed }}"
},
{
"id": "9eda5d85-f960-42a1-bcbc-71cecabc5fca",
"name": "name",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "b0e9392a-0bf7-4aeb-a6c8-588658aa582b",
"name": "completed",
"type": "boolean",
"value": "={{ $json.completed }}"
},
{
"id": "f47f099e-9eda-4fd1-95de-9d04c8504004",
"name": "due_at",
"type": "string",
"value": "={{ $json.due_at }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "7bb85ad0-95d5-4519-9b75-c66d085f46da",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
-80
],
"parameters": {
"color": 3,
"width": 600,
"height": 400,
"content": "## Get Asana content for analysis"
},
"typeVersion": 1
},
{
"id": "4269c398-af3f-4e52-a520-d2e15f3ee8ad",
"name": "All Users on Channel",
"type": "n8n-nodes-base.slack",
"position": [
320,
660
],
"parameters": {
"user": {
"__rl": true,
"mode": "id",
"value": "={{ $json.member }}"
},
"resource": "user",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "b025263c-dd08-4562-bb92-7376decd38f8",
"name": "Loop Over Channel Users",
"type": "n8n-nodes-base.splitInBatches",
"position": [
120,
900
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "6f9a5351-093e-461a-bce6-31bcc6f71f04",
"name": "Get Scrum Master Answers",
"type": "n8n-nodes-base.slack",
"position": [
780,
960
],
"parameters": {
"select": "channel",
"message": "=As Scrum Master I would like to ask you about today and sprint. {{ $json.real_name }} your form is here.",
"options": {
"limitWaitTime": {
"values": {
"resumeUnit": "minutes"
}
}
},
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Asana Project and Slack Channel').item.json.slack_channel_id }}"
},
"operation": "sendAndWait",
"formFields": {
"values": [
{
"fieldType": "dropdown",
"fieldLabel": "Are you on track to deliver sprint goal?",
"fieldOptions": {
"values": [
{
"option": "Yes"
},
{
"option": "No"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Are there any blockers that you need to be resolved?",
"requiredField": true
}
]
},
"responseType": "customForm",
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "9ad81f9b-225f-4621-87b0-0edde4f21c1f",
"name": "Merge Users with Answers",
"type": "n8n-nodes-base.merge",
"position": [
520,
820
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "5b45ba81-8626-47da-beee-d192faa59ee1",
"name": "Only Users and their Answers",
"type": "n8n-nodes-base.set",
"position": [
740,
620
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b4a9d4f5-065c-4989-9955-1d11a94d284a",
"name": "id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "31b0b178-a2bb-4e96-90f0-87e372389b16",
"name": "name",
"type": "string",
"value": "={{ $json.real_name }}"
},
{
"id": "6171a62a-1b91-41f8-b5d9-8f0af2636651",
"name": "answers",
"type": "string",
"value": "={{ $json.data.toJsonString() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e8d4fcdd-0130-41e3-8263-da5a5400467f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
580
],
"parameters": {
"width": 600,
"height": 580,
"content": "## Ask Users Daily ScrumMaster Questions"
},
"typeVersion": 1
},
{
"id": "82976d65-a2e9-4acc-8608-ce32751d2fc5",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
340
],
"parameters": {
"color": 5,
"width": 600,
"height": 220,
"content": "## Get Slack Channel Discussions"
},
"typeVersion": 1
},
{
"id": "eddb5d04-bf67-4799-b4e5-51763733159a",
"name": "Asana Project and Slack Channel",
"type": "n8n-nodes-base.set",
"position": [
-120,
260
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "20bad645-1fab-4d8d-be98-fc1a4bf1ae1b",
"name": "slack_channel_id",
"type": "string",
"value": "slack channel ID here"
},
{
"id": "9c83d0a2-3cc9-401d-99a9-4fd28696a143",
"name": "asana_project_id",
"type": "string",
"value": "Asana integer project ID"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "40bb79a3-d01d-4a83-8f6a-7369d45bfeef",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
680,
-80
],
"parameters": {
"color": 2,
"width": 700,
"height": 900,
"content": "## Select, prepare and parse Data"
},
"typeVersion": 1
},
{
"id": "bf616544-e9c7-4cd0-9498-a253230788da",
"name": "HTML Asana Sections",
"type": "n8n-nodes-base.html",
"position": [
960,
-20
],
"parameters": {
"options": {},
"operation": "convertToHtmlTable"
},
"typeVersion": 1.2
},
{
"id": "940acdf3-499e-4681-8c8a-1c93432055a5",
"name": "HTML Tasks Modified",
"type": "n8n-nodes-base.html",
"position": [
960,
140
],
"parameters": {
"options": {},
"operation": "convertToHtmlTable"
},
"typeVersion": 1.2
},
{
"id": "6201ad7f-d833-47cf-9c0d-b66f2f66abef",
"name": "HTML User Answers",
"type": "n8n-nodes-base.html",
"position": [
960,
620
],
"parameters": {
"options": {},
"operation": "convertToHtmlTable"
},
"typeVersion": 1.2
},
{
"id": "7e3392c9-c77b-490a-93d1-63884fcc88fe",
"name": "HTML Channel History",
"type": "n8n-nodes-base.html",
"position": [
960,
400
],
"parameters": {
"options": {},
"operation": "convertToHtmlTable"
},
"typeVersion": 1.2
},
{
"id": "6ffca0a9-8de9-4f80-a700-b6bc6f2d71dc",
"name": "Virtual Scrum Master",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1700,
280
],
"parameters": {
"text": "=You are a Professional Scrum Master attending daily scrum meeting. Your task is to analyze current project status and report it. Analyze throughtly whole input and process it as real Scrum Master would. Your output should contain spotted problems and proposal of solutions to them.\n\nEspecially consider:\n- if there are any known blockers to sprint or project\n- if there are any bottlenecks that can be solved\n- if there are any cooperations between developers which should be done\n- if there are any tasks that are over due or problematic in any way\n\nPropose solutions to any issues blockers, bottlencks, improvements, tasks or anything else you see that can be improved.\n\n---------------\nProject Table Columns:\n{{ $json.asana_sections }}\n\n---------------\nTasks Changed since Yesterday:\n{{ $json.tasks_modified }}\n\n---------------\nRecent Slack channel history:\n{{ $json.channel_history }}\n\n---------------\nDeveloper notes on meeting:\n{{ $json.developer_answears }}",
"options": {},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "b44cd3f9-c721-481f-986f-cc4d53251006",
"name": "Suggested Model: o4-mini",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1660,
500
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "o4-mini",
"cachedResultName": "o4-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "5d664789-c18e-4e01-a5bf-23b24e4f3fc6",
"name": "Send Summary to Slack",
"type": "n8n-nodes-base.slack",
"position": [
2060,
280
],
"parameters": {
"text": "={{ $json.output }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Asana Project and Slack Channel').item.json.slack_channel_id }}"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "f2cad97a-7f15-4229-9650-457fd0d170c2",
"name": "Merge All Sources of Information",
"type": "n8n-nodes-base.merge",
"position": [
1500,
260
],
"parameters": {
"mode": "combine",
"options": {
"includeUnpaired": true
},
"combineBy": "combineByPosition",
"numberInputs": 4
},
"typeVersion": 3.1,
"alwaysOutputData": true
},
{
"id": "c9dcc0cc-2d45-46b5-bd71-6bfbe2fcf810",
"name": "Asana Sections column name",
"type": "n8n-nodes-base.set",
"position": [
1200,
-20
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "21a8fe11-b8e9-469a-966e-070e28220f6d",
"name": "asana_sections",
"type": "string",
"value": "={{ $json.table }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1fd40d4a-b1e7-44cd-8e15-e2946d465182",
"name": "Tasks Modified column name",
"type": "n8n-nodes-base.set",
"position": [
1200,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "21a8fe11-b8e9-469a-966e-070e28220f6d",
"name": "tasks_modified",
"type": "string",
"value": "={{ $json.table }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d40484c7-c31a-4bf2-be87-41a5b7de7a84",
"name": "Channel History column name",
"type": "n8n-nodes-base.set",
"position": [
1200,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "21a8fe11-b8e9-469a-966e-070e28220f6d",
"name": "channel_history",
"type": "string",
"value": "={{ $json.table }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8cc46617-e094-4299-a30d-8960b2ffda04",
"name": "Developer Answers column name",
"type": "n8n-nodes-base.set",
"position": [
1200,
620
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "21a8fe11-b8e9-469a-966e-070e28220f6d",
"name": "developer_answears",
"type": "string",
"value": "={{ $json.table }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4eabf018-063d-4597-bfdd-d83396395ca4",
"name": "Every Workday Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-360,
340
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 0 9 * * 1-5"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "6ee18d27-ea19-4d9d-8846-2a1217128f60",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1400,
120
],
"parameters": {
"width": 860,
"height": 540,
"content": "## Virtual Scrum Master section"
},
"typeVersion": 1
},
{
"id": "09ca5c5a-f26c-4e85-9381-c74bbe04b0d4",
"name": "Split Columns Manually",
"type": "n8n-nodes-base.code",
"position": [
360,
-20
],
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nvar outitem = [];\nfor (var item of $input.all()) {\n for (const subitem of item.json.data) {\n outitem.push({\n \"gid\": subitem.gid,\n \"name\": subitem.name\n });\n }\n}\n\nreturn outitem;"
},
"typeVersion": 2
},
{
"id": "37d3f5de-8f03-418f-8ace-adea7a52fe40",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
680,
860
],
"parameters": {
"color": 4,
"width": 300,
"height": 300,
"content": "## Use this node to change Scrum Master questions"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "84a06fb0-39cd-4062-94fb-b03a7a7501cd",
"connections": {
"Tasks Details": {
"main": [
[
{
"node": "Keep Details for Analysis",
"type": "main",
"index": 0
}
]
]
},
"Channel History": {
"main": [
[
{
"node": "Only Content For Analysis",
"type": "main",
"index": 0
}
]
]
},
"HTML User Answers": {
"main": [
[
{
"node": "Developer Answers column name",
"type": "main",
"index": 0
}
]
]
},
"Get Channel Details": {
"main": [
[
{
"node": "All Users on Channel",
"type": "main",
"index": 0
}
]
]
},
"HTML Asana Sections": {
"main": [
[
{
"node": "Asana Sections column name",
"type": "main",
"index": 0
}
]
]
},
"HTML Tasks Modified": {
"main": [
[
{
"node": "Tasks Modified column name",
"type": "main",
"index": 0
}
]
]
},
"All Users on Channel": {
"main": [
[
{
"node": "Loop Over Channel Users",
"type": "main",
"index": 0
},
{
"node": "Merge Users with Answers",
"type": "main",
"index": 0
}
]
]
},
"HTML Channel History": {
"main": [
[
{
"node": "Channel History column name",
"type": "main",
"index": 0
}
]
]
},
"Virtual Scrum Master": {
"main": [
[
{
"node": "Send Summary to Slack",
"type": "main",
"index": 0
}
]
]
},
"Every Workday Trigger": {
"main": [
[
{
"node": "Asana Project and Slack Channel",
"type": "main",
"index": 0
}
]
]
},
"Split Columns Manually": {
"main": [
[
{
"node": "HTML Asana Sections",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Channel Users": {
"main": [
[
{
"node": "Merge Users with Answers",
"type": "main",
"index": 1
}
],
[
{
"node": "Get Scrum Master Answers",
"type": "main",
"index": 0
}
]
]
},
"Get Scrum Master Answers": {
"main": [
[
{
"node": "Loop Over Channel Users",
"type": "main",
"index": 0
}
]
]
},
"Merge Users with Answers": {
"main": [
[
{
"node": "Only Users and their Answers",
"type": "main",
"index": 0
}
]
]
},
"Suggested Model: o4-mini": {
"ai_languageModel": [
[
{
"node": "Virtual Scrum Master",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Keep Details for Analysis": {
"main": [
[
{
"node": "HTML Tasks Modified",
"type": "main",
"index": 0
}
]
]
},
"Only Content For Analysis": {
"main": [
[
{
"node": "HTML Channel History",
"type": "main",
"index": 0
}
]
]
},
"Asana Sections column name": {
"main": [
[
{
"node": "Merge All Sources of Information",
"type": "main",
"index": 0
}
]
]
},
"Get Asana Project Sections": {
"main": [
[
{
"node": "Split Columns Manually",
"type": "main",
"index": 0
}
]
]
},
"Tasks Modified column name": {
"main": [
[
{
"node": "Merge All Sources of Information",
"type": "main",
"index": 1
}
]
]
},
"Channel History column name": {
"main": [
[
{
"node": "Merge All Sources of Information",
"type": "main",
"index": 2
}
]
]
},
"Only Users and their Answers": {
"main": [
[
{
"node": "HTML User Answers",
"type": "main",
"index": 0
}
]
]
},
"Developer Answers column name": {
"main": [
[
{
"node": "Merge All Sources of Information",
"type": "main",
"index": 3
}
]
]
},
"Tasks Modified Since Yesterday": {
"main": [
[
{
"node": "Tasks Details",
"type": "main",
"index": 0
}
]
]
},
"Asana Project and Slack Channel": {
"main": [
[
{
"node": "Get Asana Project Sections",
"type": "main",
"index": 0
},
{
"node": "Tasks Modified Since Yesterday",
"type": "main",
"index": 0
},
{
"node": "Channel History",
"type": "main",
"index": 0
},
{
"node": "Get Channel Details",
"type": "main",
"index": 0
}
]
]
},
"Merge All Sources of Information": {
"main": [
[
{
"node": "Virtual Scrum Master",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Asana Project and Slack Channel",
"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.
asanaOAuth2ApiopenAiApislackOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This automation simulates Scrum Master role on daily meetings. Essentially it is an AI Scrum Master using different sources of data.
Source: https://n8n.io/workflows/5478/ — 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.
This workflow generates comprehensive B2B leads, from a selected Business type in ANY CITY IN THE WORLD, including: Company name; Website; Email (enriched with AI Agent); Phone number; Address; Main L
This workflow streamlines academic assessment through a multi-agent AI system that interprets rubrics, grades submissions, checks for plagiarism, performs quality moderation, generates feedback, and e
My workflow 250630. Uses httpRequest, lmChatOpenAi, outputParserStructured, gmail. Event-driven trigger; 37 nodes.
My workflow 7. Uses lmChatOpenRouter, slackTrigger, chatTrigger, agent. Event-driven trigger; 37 nodes.
Automates sales data analysis and strategic insight generation for sales managers and strategists needing actionable intelligence. Fetches multi-source data from sales, marketing, and financial system