This workflow follows the Jira → Slack 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 →
{
"name": "main",
"nodes": [
{
"parameters": {
"url": "https://NOTIFUSE_DOMAIN/api/templates.list",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "workspace_id",
"value": "={{ $('Set Constants').item.json.workspace_id }}"
},
{
"name": "channel",
"value": "email"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
720,
96
],
"id": "92bfda8e-66b2-4e41-9981-6b8c63f1e740",
"name": "Get Templates",
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"formTitle": "Canva HTML to Notifuse MJML Converter",
"formFields": {
"values": [
{
"fieldLabel": "Template File",
"fieldType": "file",
"requiredField": true
},
{
"fieldLabel": "Is this a new template or an existing one?",
"fieldType": "radio",
"defaultValue": "New Template",
"fieldOptions": {
"values": [
{
"option": "New Template"
},
{
"option": "Existing Template"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Workspace",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "my_first_workspace"
},
{
"option": "my_second_workspace"
}
]
},
"requiredField": true
}
]
},
"responseMode": "lastNode",
"options": {
"buttonLabel": "Continue"
}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.5,
"position": [
-64,
0
],
"id": "be7ae2e2-8fdf-417e-96e8-f76b05a118fc",
"name": "Upload template"
},
{
"parameters": {
"formFields": {
"values": [
{
"fieldLabel": "Template Category",
"fieldType": "dropdown",
"defaultValue": "marketing",
"fieldOptions": {
"values": [
{
"option": "marketing"
},
{
"option": "transactional"
},
{
"option": "welcome"
},
{
"option": "opt_in"
},
{
"option": "unsubscribe"
},
{
"option": "bounce"
},
{
"option": "blocklist"
},
{
"option": "other"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Subject",
"requiredField": true
},
{
"fieldLabel": "Preview",
"requiredField": true
}
]
},
"options": {}
},
"type": "n8n-nodes-base.form",
"typeVersion": 2.5,
"position": [
720,
-64
],
"id": "79988f20-3a60-45fb-8c13-e224b6760216",
"name": "New Template"
},
{
"parameters": {
"defineForm": "json",
"jsonOutput": "=[\n {\n \"fieldLabel\": \"Select Template\",\n \"fieldType\": \"dropdown\",\n \"fieldOptions\": {\n \"values\": {{ JSON.stringify($json.templates.map(t => { return { \"option\": t.id } } )) }}\n },\n \"requiredField\": true\n }\n]",
"options": {}
},
"type": "n8n-nodes-base.form",
"typeVersion": 2.5,
"position": [
928,
96
],
"id": "a43819bf-07ff-4e18-8c66-5748a15c037b",
"name": "Select Template"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "4fccfda1-5bfd-4082-a80b-d5e274a904fd",
"leftValue": "={{ $('Set Constants').item.json.is_new }}",
"rightValue": "New Template",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
496,
0
],
"id": "4c695cff-9cd7-486d-8871-e441b117de26",
"name": "New or Existing Template ?"
},
{
"parameters": {
"method": "POST",
"url": "https://NOTIFUSE_DOMAIN/api/templates.create",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "workspace_id",
"value": "={{ $('Set Constants').item.json.workspace_id }}"
},
{
"name": "channel",
"value": "email"
},
{
"name": "name",
"value": "={{ $('Set Constants').item.json.template_name }}"
},
{
"name": "category",
"value": "={{ $('New Template').item.json['Template Category'] }}"
},
{
"name": "email",
"value": "={{ {\n \"subject\": $('New Template').item.json['Subject'],\n \"subject_preview\": $('New Template').item.json['Preview'],\n \"compiled_preview\": $('file workflow').item.json['data'],\n \"visual_editor_tree\": {\n \"id\": \"mjml-1\",\n \"type\": \"mjml\",\n \"attributes\": $('file workflow').item.json['attributes'],\n \"children\": $('file workflow').item.json['children']\n }\n} }}"
},
{
"name": "id",
"value": "={{ $('Set Constants').item.json.template_slug }}_{{ Date.now().toString() }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
928,
-64
],
"id": "62732541-73ae-4088-8869-711238893290",
"name": "Create Template",
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "YHo1opOPxowH9B9Z",
"mode": "list",
"cachedResultUrl": "/workflow/YHo1opOPxowH9B9Z",
"cachedResultName": "file manager"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {},
"matchingColumns": [],
"schema": [],
"attemptToConvertTypes": false,
"convertFieldsToString": true
},
"options": {
"waitForSubWorkflow": true
}
},
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.3,
"position": [
304,
0
],
"id": "b0883199-a0e6-4165-a81b-0fa48d4cc691",
"name": "file workflow"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "f97e62ae-9c1f-42b9-979e-91171a57ca15",
"name": "workspace_id",
"value": "={{ $json[\"Workspace\"] }}",
"type": "string"
},
{
"id": "953dc9e7-7ba5-4f74-96f1-eb725bf91597",
"name": "template_name",
"value": "={{ $json[\"Template File\"][0].filename.slice(0, -4) }}",
"type": "string"
},
{
"id": "195a3d45-b1c4-4a77-9f27-2c505f6446c0",
"name": "template_slug",
"value": "={{ $json[\"Template File\"][0].filename.slice(0, -4).normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/-+/g, '_').replace(/^-|-$/g, '') }}",
"type": "string"
},
{
"id": "faddb03b-1fae-4f78-b7d5-e2097de73fdc",
"name": "zip",
"value": "Template_File",
"type": "binary"
},
{
"id": "cc491297-b77e-4c58-b9f5-3ad44bbca3d9",
"name": "is_new",
"value": "={{ $json[\"Is this a new template or an existing one?\"] === 'New Template' }}",
"type": "boolean"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
128,
0
],
"id": "f5f99a6b-0254-4c31-9df1-f2f3f44b842e",
"name": "Set Constants"
},
{
"parameters": {
"method": "POST",
"url": "https://NOTIFUSE_DOMAIN/api/templates.update",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "workspace_id",
"value": "={{ $('Set Constants').item.json.workspace_id }}"
},
{
"name": "channel",
"value": "email"
},
{
"name": "name",
"value": "={{ $json.name }}"
},
{
"name": "category",
"value": "={{ $json.category }}"
},
{
"name": "email",
"value": "={{ $json.email }}"
},
{
"name": "id",
"value": "={{ $json.id }}"
},
{
"name": "version",
"value": "={{ $json.version }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
1328,
96
],
"id": "773adfc8-84c7-47c8-a1f0-5cb5702f753c",
"name": "Update Template",
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const template = $('Get Templates').first().json.templates.filter(t => t.id === $input.first().json['Select Template'])[0];\n\ntemplate.version = template.version + 1;\ntemplate.email.compiled_preview = $('file workflow').first().json.data;\ntemplate.email.visual_editor_tree = {\n \"id\": \"mjml-1\",\n \"type\": \"mjml\",\n \"attributes\": $('file workflow').first().json.attributes,\n \"children\": $('file workflow').first().json.children\n}\n\nreturn {\n json: template\n}"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1136,
96
],
"id": "e5eef6a8-45b2-4aa2-9c03-a596e90aaff6",
"name": "Merge Template Data"
}
],
"connections": {
"Get Templates": {
"main": [
[
{
"node": "Select Template",
"type": "main",
"index": 0
}
]
]
},
"Upload template": {
"main": [
[
{
"node": "Set Constants",
"type": "main",
"index": 0
}
]
]
},
"New or Existing Template ?": {
"main": [
[
{
"node": "New Template",
"type": "main",
"index": 0
}
],
[
{
"node": "Get Templates",
"type": "main",
"index": 0
}
]
]
},
"New Template": {
"main": [
[
{
"node": "Create Template",
"type": "main",
"index": 0
}
]
]
},
"Select Template": {
"main": [
[
{
"node": "Merge Template Data",
"type": "main",
"index": 0
}
]
]
},
"file workflow": {
"main": [
[
{
"node": "New or Existing Template ?",
"type": "main",
"index": 0
}
]
]
},
"Set Constants": {
"main": [
[
{
"node": "file workflow",
"type": "main",
"index": 0
}
]
]
},
"Merge Template Data": {
"main": [
[
{
"node": "Update Template",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"timeSavedMode": "fixed",
"saveDataSuccessExecution": "none",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": false
},
"versionId": "03a203fb-988e-4de3-a12d-e8a7512cbc17",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "XMTPdq5f1Xl4BqGs",
"tags": []
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow streamlines incident management by receiving alerts via webhook, analysing them with OpenAI to assess urgency, and automatically creating prioritised tasks in Jira while notifying your team on Slack. It's ideal for IT support teams or DevOps engineers handling frequent disruptions, saving hours on triage and ensuring critical issues get immediate attention. The key step involves OpenAI's intelligent analysis to classify incidents, triggering tailored responses like high-priority Jira tickets for urgent threats.
Use this when you need automated, AI-driven routing for incoming alerts to maintain operational efficiency during peak hours. Avoid it for simple notifications without analysis needs, or if your team prefers manual review for all cases. Common variations include adding email integrations for broader notifications or customising OpenAI prompts for industry-specific jargon.
About this workflow
Main. Uses stickyNote, openAi, slack, jira. Webhook trigger; 15 nodes.
Source: https://github.com/Davidbruno1/n8n-Handle-failed-payment-renewals-with-AI-analysis-Jira-tickets-Slack-alerts/blob/main/main.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.
Webhook Slack. Uses venafiTlsProtectCloud, stickyNote, respondToWebhook, httpRequest. Webhook trigger; 38 nodes.
Webhook Slack. Uses venafiTlsProtectCloud, stickyNote, respondToWebhook, httpRequest. Webhook trigger; 38 nodes.
This workflow receives negative brand mentions via webhook, uses OpenAI to classify crisis severity and draft a holding statement, logs incidents to Google Sheets, and notifies approvers and teams via
Survey Response Analyzer with AI. Uses openAi, googleSheets, slack. Webhook trigger; 6 nodes.
Meeting Notes Summarizer. Uses openAi, notion, slack. Webhook trigger; 5 nodes.