This workflow corresponds to n8n.io template #10113 — 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": "sdscHTBWVasg6N7Q",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Nicereply Feedback Router to MS Teams directly to your team",
"tags": [],
"nodes": [
{
"id": "23e23c40-e27e-49ac-b585-45d3b4ba3186",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-2176,
-112
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtMinute": 1
}
]
}
},
"typeVersion": 1.2
},
{
"id": "d3798055-beaa-444c-8604-f3475507234d",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
-1216,
-112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "2048c105-4569-4041-bbcd-50d7a5765b61",
"operator": {
"type": "dateTime",
"operation": "after"
},
"leftValue": "={{ $json['Survey Date'] }}",
"rightValue": "={{$now.minus({hours: 24})}}"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "c02fbd26-2d0c-455c-8fe2-caa1f37f9b05",
"name": "Send to Support",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
1056,
-624
],
"parameters": {
"teamId": {
"__rl": true,
"mode": "list",
"value": "YOUR_TEAM_ID",
"cachedResultName": "Your Team"
},
"message": "=We\u2019ve received feedback for <b>Support</b>!</br>\n{{ $json.Respondent }} thinks our service was <b>{{ $json.Happiness }}</b>",
"options": {},
"resource": "channelMessage",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_CHANNEL_ID",
"cachedResultUrl": "https://teams.microsoft.com/l/channel/YOUR_CHANNEL_ADDRESS",
"cachedResultName": "Client Feedback"
},
"contentType": "html"
},
"typeVersion": 2
},
{
"id": "66371a7a-15cc-4107-95d8-0661056dc3bf",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
-1792,
-112
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "9afc1693-b9f0-4784-bc67-7f87d7ed1127",
"name": "Send to Support1",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
1072,
-112
],
"parameters": {
"teamId": {
"__rl": true,
"mode": "list",
"value": "YOUR_CHANNEL_ID",
"cachedResultName": "Your Team"
},
"message": "=We\u2019ve received feedback for <b>Support</b>!</br>\n{{ $json.Respondent }} thinks our service was <b>{{ $json.Happiness }}</b> and says \"{{ $json['Long Answer'] }}\" ",
"options": {},
"resource": "channelMessage",
"channelId": {
"__rl": true,
"mode": "list",
"value": "YOUR_CHANNEL_ID",
"cachedResultUrl": "https://teams.microsoft.com/l/channel/YOUR_CHANNEL_ADDRESS",
"cachedResultName": "Client Feedback"
}
},
"typeVersion": 2
},
{
"id": "859383d7-7458-43cb-854b-116348239c2c",
"name": "Get Feedback",
"type": "n8n-nodes-base.httpRequest",
"position": [
-2000,
-112
],
"parameters": {
"url": "https://api.nicereply.com/responses",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBasicAuth"
},
"typeVersion": 4.2
},
{
"id": "d4b25cb3-ac4f-49be-8540-f7150d9f00fc",
"name": "Edit Feedbacks",
"type": "n8n-nodes-base.set",
"position": [
-1600,
-112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "81f496f5-04c4-479d-a336-2cb0e2fe96c7",
"name": "Respondent",
"type": "string",
"value": "={{ $json.from }}"
},
{
"id": "c9816a04-14a9-4ea5-bae2-9db002943df3",
"name": "Ticket Number",
"type": "string",
"value": "={{ $json.ticket_id }}"
},
{
"id": "0b22d469-1114-445e-8131-6f0ec5eb59e0",
"name": "Survey Date",
"type": "string",
"value": "={{ $json.created_at }}"
},
{
"id": "1a6d8be1-d3a1-40da-b159-83087e2742ca",
"name": "Happiness",
"type": "number",
"value": "={{ $json.answers[0].scale.value }}"
},
{
"id": "2c1db29d-971a-4d78-a6d8-50146b6818ae",
"name": "Long Answer",
"type": "string",
"value": "={{ $json.answers[1].open_ended.value }}"
},
{
"id": "c39b0590-5694-46b3-a091-b287c2ff603a",
"name": "SurveyID",
"type": "string",
"value": "={{ $json.survey_id }}"
},
{
"id": "6af43297-76b0-403e-a9c0-872e6d98425b",
"name": "AgentID",
"type": "string",
"value": "={{ $json.feedback_object_id }}"
},
{
"id": "78234859-3d8e-4aeb-aeb1-d2b76c074bde",
"name": "Agent Name",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5d965b3b-56d0-4ede-a9d3-92f46eb1e4a8",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-160
],
"parameters": {
"width": 1380,
"height": 440,
"content": "## Sending feedback with comment\n"
},
"typeVersion": 1
},
{
"id": "ca7f03ba-d4dc-4e85-be0b-307a193d9435",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-736
],
"parameters": {
"width": 1380,
"height": 548,
"content": "## Sending feedback without comment\n"
},
"typeVersion": 1
},
{
"id": "5d3aa8b4-1738-407d-ac6b-90960a58602b",
"name": "Without Comment",
"type": "n8n-nodes-base.if",
"position": [
-560,
-112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c74f8d6b-5c7f-4068-89a9-91095619448f",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $('Change survey ID according Nicereply').item.json['Long Answer'] }}",
"rightValue": ""
},
{
"id": "f3d8e054-fcea-4df5-bcf4-420c16706b44",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "126b4388-cda4-477c-8d79-3434cec3abcc",
"name": "Happiness Value",
"type": "n8n-nodes-base.switch",
"position": [
448,
-416
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Great!",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4e31a572-8a68-4138-8e4a-a679e95f0128",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "OK",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9ad6714e-f826-4179-9107-235e2c10bb84",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Bad",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "10bb8ec7-15b9-415e-9814-4b7d9e65d113",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "2621467d-ddc6-4cb6-8c1b-724fc47239cc",
"name": "Switch - Type of Team",
"type": "n8n-nodes-base.switch",
"position": [
176,
-384
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Team A",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "afd403f7-326f-4b3e-99c0-0d20c23ccae0",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Team B",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f1db99e8-c9ab-4918-b7b7-fd8339ead484",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Team C",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "61774ada-3d49-466b-8368-0fe3fc925fc0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "3f2daf3b-48b5-48e5-b030-9b84182bd66f",
"name": "Switch - Type of Team1",
"type": "n8n-nodes-base.switch",
"position": [
192,
16
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Team A",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "afd403f7-326f-4b3e-99c0-0d20c23ccae0",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Team B",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f1db99e8-c9ab-4918-b7b7-fd8339ead484",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Team C",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "61774ada-3d49-466b-8368-0fe3fc925fc0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.SurveyID }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "aaaaec91-21cf-423e-b929-d89bea4a8c80",
"name": "Happiness Value2",
"type": "n8n-nodes-base.switch",
"position": [
432,
-16
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Great!",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4e31a572-8a68-4138-8e4a-a679e95f0128",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "OK",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "9ad6714e-f826-4179-9107-235e2c10bb84",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "Bad",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "10bb8ec7-15b9-415e-9814-4b7d9e65d113",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Happiness }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "ba021d5d-cc8a-4ae2-8dd1-12a41786286c",
"name": "Send to Team Lead",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
1072,
112
],
"parameters": {
"chatId": {
"__rl": true,
"mode": "id",
"value": "19:user@example.com"
},
"message": "=We\u2019ve received feedback for <b>Support</b>!</br>\n{{ $json.Respondent }} thinks our service was <b>{{ $json.Happiness }}</b> and says \"{{ $json['Long Answer'] }}\" ",
"options": {},
"resource": "chatMessage"
},
"typeVersion": 2
},
{
"id": "e921ba32-6a36-46e6-b4ee-943d6bf3e278",
"name": "Send to Team Lead1",
"type": "n8n-nodes-base.microsoftTeams",
"position": [
1072,
-400
],
"parameters": {
"chatId": {
"__rl": true,
"mode": "id",
"value": "19:user@example.com"
},
"message": "=We\u2019ve got some feedback!\n{{ $json.Respondent }} thinks we are <b>{{ $json.Happiness }}</b> ",
"options": {},
"resource": "chatMessage"
},
"typeVersion": 2
},
{
"id": "79831865-3c1b-4791-bc9f-c243797a6fbd",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3008,
-752
],
"parameters": {
"width": 720,
"height": 1392,
"content": "## Nicereply Feedback Router to MS Teams directly to your Team \n**Try out using a native Easy Redmine node to automatically process and route feedback based on comments and team structure.**\n\n### About Workflow \nThis workflow helps organizations efficiently manage client feedback collected via Nicereply. By automating the routing of feedback to the correct internal teams based on sentiment and the presence of comments, the workflow ensures that the right people see the right feedback at the right time\u2014without any manual sorting.\n\n### Use Case \nIdeal for companies receiving regular customer satisfaction feedback and looking to distribute it instantly to responsible teams. Whether feedback contains a comment or not, it is evaluated and routed to MS Teams channels based on team type (e.g., Support, Docs, Consulting). Customers can customize this setup for as many teams as needed, allowing flexible scaling across departments.\n\n### How it works \n- Schedule Trigger \n=> Runs automatically at defined intervals (e.g., daily) to initiate feedback collection \n- Query/filter logic \n=> Retrieves survey results from Nicereply using a saved Survey ID \n- AI Transformations\n=> Splits the feedback into individual entries \n**Change survey ID according to NiceReply** \u2014 Updates survey IDs based on specific mapping rules. \n \u27a1\ufe0f *This step will later include an AI Transform that remaps raw SurveyID values from Nicereply to readable survey names.* \n **Example instructions:** \n Change values of SurveyID \n exampleID:abcd-123-abcd-123 \u2192 Documentation \n **Example input/output:** \n - Input: `\"SurveyID\": \"362ea713-8867-47fe-bcbf-7394b7ce419a\"` \n - Output: `\"SurveyID\": \"Documentation\"` \n=> Edits entries and assigns survey IDs using internal mapping logic \n=> Adjusts the happiness value based on sentiment analysis \n**Change happiness value** \u2014 Adjusts sentiment or happiness score. \n \u27a1\ufe0f *This step will include an AI Transform that converts numeric satisfaction ratings (1\u20133) into descriptive text values for clearer internal communication.* \n **Example instructions:** \n Change Happiness value to \"great\" if 3, \"okay\" if 2, \"bad\" if 1 \n **Example input/output:** \n - Input: `\"Happiness\": 1` \u2192 Output: `\"Happiness\": \"bad\"\n- Final output step \n=> Routes feedback to the appropriate MS Teams channels using conditional logic. \n\n### How to use \n- In Nicereply, locate your Survey ID and enter it into the workflow\u2019s mapping step \n- Customize the team types, sentiment thresholds, and MS Teams channel names to match your org\u2019s structure \n- Duplicate or expand the logic branches if you want to add more departments (Team A, Team B, Team C etc.) and modify message formats \n- Test with a limited dataset before full deployment\n\n### Requirements \n- MS Teams access \n \u2192 Required for sending messages to designated team channels. \n- API permissions \n \u2192 Necessary for connecting to Nicereply and posting messages via Teams APIs.\n\n### Need Help? \n- Reach out through n8n community => https://community.n8n.io/u/easy8.ai\n- Contant our team directly => Easy8.ai\n- Visit our youtube channel => https://www.youtube.com/@easy8ai \n"
},
"typeVersion": 1
},
{
"id": "ae4fa0af-348e-401d-a928-2e6a50ad92eb",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2256,
-752
],
"parameters": {
"color": 7,
"width": 2336,
"height": 1040,
"content": "## Daily Feedback Processing Workflow \n\n1. **Schedule Trigger** \u2014 Starts the workflow on a scheduled basis \n2. **Get Feedbacks** \u2014 Retrieves feedback data from NiceReply source \n3. **Split Out** \u2014 Separates the feedback data into individual entries \n4. **Edit Feedbacks** \u2014 Modifies feedback entries as needed \n5. **Change survey ID according to NiceReply** \u2014 Updates survey IDs based on specific mapping rules. \n6. **Filter** \u2014 Filters last 24 hours feedback entries for processing \n7. **Set Empty Respondent to \"Unknown Client\"** Code node \u2014 if respondent = null, set respondent value to Unknown client \n8. **Change happiness value** \u2014 Adjusts sentiment or happiness score. \n9. **Without Comment** \u2014 Determines if the feedback has a comment or not \n10. **Switch \u2013 Type of Team (Without Comment)** \u2014 Routes feedback without comments by team type \n11. **Happiness Value1 (Without Comment)** \u2014 Branches further by happiness score \n12. **Send to Support / Team Lead / Management / Docs / Consulting (Without Comment)** \u2014 Sends messages to MS Teams channels based on type and value \n13. **Switch \u2013 Type of Team (With Comment)** \u2014 Routes feedback with comments by team type \n14. **Happiness Value2 & Happiness Value3 (With Comment)** \u2014 Branches further by happiness score \n15. **Send to Support / Team Lead / Management / Docs / Consulting (With Comment)** \u2014 Sends messages to MS Teams channels based on type and value \n\n---\n\n\ud83d\udca1 *All AI Transform steps (5, 7, and 8) include example instructions, input/output samples, and explanation of their intended purpose to simplify configuration during workflow setup.*\n\n"
},
"typeVersion": 1
},
{
"id": "2cb55117-1c45-4377-ac8b-98607d2e0485",
"name": "Change survey ID according Nicereply",
"type": "n8n-nodes-base.aiTransform",
"position": [
-1408,
-112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "cfa2795b-9744-4326-9d16-5e5b01d2645d",
"name": "Change happiness value",
"type": "n8n-nodes-base.aiTransform",
"position": [
-800,
-112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "543260e1-f905-4714-bfb7-0e42af4f1d58",
"name": "Set Empty Respondent to \"Unknown Client\"",
"type": "n8n-nodes-base.code",
"position": [
-1008,
-112
],
"parameters": {
"jsCode": "const items = $input.all();\nconst updatedItems = items.map((item) => {\n if (item?.json?.Respondent === null) {\n item.json.Respondent = \"Unknown Client\";\n }\n return item;\n});\nreturn updatedItems;"
},
"typeVersion": 2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "5032f855-653f-4cf0-98d3-dd25647fb843",
"connections": {
"Filter": {
"main": [
[
{
"node": "Set Empty Respondent to \"Unknown Client\"",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Edit Feedbacks",
"type": "main",
"index": 0
}
]
]
},
"Get Feedback": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Edit Feedbacks": {
"main": [
[
{
"node": "Change survey ID according Nicereply",
"type": "main",
"index": 0
}
]
]
},
"Happiness Value": {
"main": [
[
{
"node": "Send to Support",
"type": "main",
"index": 0
}
],
[
{
"node": "Send to Team Lead1",
"type": "main",
"index": 0
}
],
[
{
"node": "Send to Team Lead1",
"type": "main",
"index": 0
}
]
]
},
"Without Comment": {
"main": [
[
{
"node": "Switch - Type of Team",
"type": "main",
"index": 0
}
],
[
{
"node": "Switch - Type of Team1",
"type": "main",
"index": 0
}
]
]
},
"Happiness Value2": {
"main": [
[
{
"node": "Send to Support1",
"type": "main",
"index": 0
}
],
[
{
"node": "Send to Team Lead",
"type": "main",
"index": 0
}
],
[
{
"node": "Send to Team Lead",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Feedback",
"type": "main",
"index": 0
}
]
]
},
"Switch - Type of Team": {
"main": [
[
{
"node": "Happiness Value",
"type": "main",
"index": 0
}
]
]
},
"Change happiness value": {
"main": [
[
{
"node": "Without Comment",
"type": "main",
"index": 0
}
]
]
},
"Switch - Type of Team1": {
"main": [
[
{
"node": "Happiness Value2",
"type": "main",
"index": 0
}
]
]
},
"Change survey ID according Nicereply": {
"main": [
[
{
"node": "Filter",
"type": "main",
"index": 0
}
]
]
},
"Set Empty Respondent to \"Unknown Client\"": {
"main": [
[
{
"node": "Change happiness value",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically collect client feedback from Nicereply, analyze sentiment, and send it to the right Microsoft Teams channels — smartly split by team, tone, and comment presence.
Source: https://n8n.io/workflows/10113/ — 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.
GLPI Pending Tickets Notification to Microsoft Teams
This n8n workflow provides an automated notification system that monitors tickets in GLPI (Gestionnaire Libre de Parc Informatique) and sends proactive alerts through Microsoft Teams when tickets are
PF – WF-03 Social Media Auto-Post. Uses microsoftSharePoint, httpRequest, microsoftTeams. Scheduled trigger; 16 nodes.
This Workflow does a HTTPs request to ConnectWise Manage through their REST API.
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