AutomationFlowsSlack & Telegram › Automate Incident Response with Jira, Slack, Google Sheets & Drive

Automate Incident Response with Jira, Slack, Google Sheets & Drive

ByRahul Joshi @rahul08 on n8n.io

This workflow automates the incident response lifecycle — from creation to communication and archival. It instantly creates Jira tickets for new incidents, alerts the on-call Slack team, generates timeline reports, logs the status in Google Sheets, and archives documentation to…

Event trigger★★★★☆ complexity23 nodesJiraSlackGoogle SheetsGoogle Drive
Slack & Telegram Trigger: Event Nodes: 23 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #9826 — we link there as the canonical source.

This workflow follows the Google Drive → Google Sheets 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 →

Download .json
{
  "id": "J93LxYXb9IHdMR7s",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Incident Management Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "70b38182-4e4c-4f33-9955-18712a2734ef",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1008,
        -48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c5e9b101-a3bb-4095-9931-10cb47abf60c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        176
      ],
      "parameters": {
        "height": 560,
        "content": "## \u2601\ufe0f Archive Incident Timeline to Drive\n**Action:** Saves incident timeline report to Google Drive for permanent storage.\n\n**Description:**\n- Uploads to designated folder (rename to \"Incident Reports\" in production)\n- Filename includes timestamp for chronological organization\n- Creates audit-compliant documentation trail for compliance requirements\n- Enables easy access during postmortem reviews and RCA sessions\n- Provides shareable links for stakeholder communication\n- Ensures documentation survives even if Jira/Slack history expire"
      },
      "typeVersion": 1
    },
    {
      "id": "1701890b-1a58-4f8e-8d96-94bb3d717d1d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        160
      ],
      "parameters": {
        "height": 496,
        "content": "## \ud83d\udcc4 Convert Timeline to Text File\n**Action:** Transforms incident timeline report into downloadable .txt file.\n\n**Description:**\n- Creates properly formatted text file from timeline string\n- Filename dynamically includes Jira key (e.g., \"Incident-SCRUM-123.txt\")\n- Maintains text formatting with line breaks and separators\n- Prepares document for long-term archival in Google Drive\n- Enables easy sharing with postmortem reviewers and stakeholders"
      },
      "typeVersion": 1
    },
    {
      "id": "eb3eeb1a-0b12-46d3-8272-47ae01ab3185",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        144
      ],
      "parameters": {
        "height": 608,
        "content": "## \ud83d\udccb Generate Incident Timeline Report\n**Action:** Creates comprehensive incident timeline from Slack message data.\n\n**Description:**\n- Parses Slack message blocks to extract incident details\n- Handles complex rich text formatting to find: Jira key, service, severity, clickable links\n- Generates formatted timeline report with:\n  - Incident metadata header\n  - Timestamped event log (declaration, investigation, resolution)\n  - Placeholder checkboxes for postmortem tracking\n  - Reference links to Jira and Slack\n- Outputs structured text ready for archival"
      },
      "typeVersion": 1
    },
    {
      "id": "1d0f80e7-e631-4054-9159-3c4db04f7d37",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -544
      ],
      "parameters": {
        "width": 256,
        "height": 464,
        "content": "## \ud83d\udce2 Alert On-Call Team in Slack\n**Action:** Posts incident notification to #oncall Slack channel.\n\n**Description:**\n- Delivers formatted alert to dedicated incident response channel\n- Includes: Jira key, service, severity, description, direct link\n- Notifies on-call engineers instantly without email delays\n- Creates permanent channel record for timeline reconstruction\n- Returns Slack message metadata for downstream tracking\n- Can be modified to post to different channels or DMs"
      },
      "typeVersion": 1
    },
    {
      "id": "0e077e72-3423-4e55-b44d-592152210bdc",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        672,
        144
      ],
      "parameters": {
        "height": 544,
        "content": "## \ud83d\udcac Format Incident Alert for Slack\n**Action:** Generates rich, formatted Slack message with incident details.\n\n**Description:**\n- Safely extracts data from merged incident and Jira objects\n- Builds professional alert with:\n  - Attention-grabbing emoji indicators (\ud83d\udea8)\n  - Bold formatting for critical fields\n  - Clickable Jira ticket link\n  - Automation attribution footer\n- Handles missing data gracefully with fallback values (\"N/A\", \"Unknown\")\n- Returns structured message ready for Slack delivery"
      },
      "typeVersion": 1
    },
    {
      "id": "1d072007-08da-468c-8588-673d4b714502",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -640
      ],
      "parameters": {
        "height": 528,
        "content": "## \ud83d\udd17 Combine Incident & Jira Data\n**Action:** Merges incident metadata with Jira ticket information.\n\n**Description:**\n- Combines two data streams:\n  1. Incident details from Define Metadata node\n  2. Jira ticket response (key, link, ID)\n- Enables downstream nodes to access both context and Jira reference\n- Critical for building comprehensive Slack notifications with clickable links\n- Uses default merge mode to preserve all fields from both sources"
      },
      "typeVersion": 1
    },
    {
      "id": "13809897-974f-4371-b18c-fcbc03a4fe4c",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        240
      ],
      "parameters": {
        "height": 480,
        "content": "## \ud83c\udfab Create Jira Incident Ticket\n**Action:** Automatically creates Jira task in incident management project.\n\n**Description:**\n- Creates ticket with formatted summary: \"[Severity] Service - Description\"\n- Includes detailed description with service, severity, timestamp, and automation source\n- Generates unique Jira key (e.g., SCRUM-123) for tracking\n- Returns ticket metadata (key, link, ID) for downstream notifications\n- Acts as single source of truth for incident tracking"
      },
      "typeVersion": 1
    },
    {
      "id": "1585af90-5926-46c1-8682-3c3f61682271",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        128
      ],
      "parameters": {
        "height": 480,
        "content": "## \ud83c\udff7\ufe0f Define Incident Metadata\n**Action:** Structures incident data with service, severity, and description.\n\n**Description:**\n- Sets standardized attributes: Service (API/Database/Frontend), Severity (High/Medium/Low), Description\n- In production, replace with monitoring webhook data (Datadog, New Relic, PagerDuty)\n- Ensures consistent format across Jira, Slack, and tracking systems\n- Template values customizable per service catalog"
      },
      "typeVersion": 1
    },
    {
      "id": "ad55acbf-bd89-435c-b2f1-568749a416be",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1408,
        -1024
      ],
      "parameters": {
        "height": 608,
        "content": "## \ud83d\udcca Log Incident to Status Tracking Sheet\n**Action:** Records incident details to centralized Google Sheets dashboard.\n\n**Description:**\n- Appends incident record to \"status update\" sheet with:\n  - Jira Key (unique identifier)\n  - Service (affected system/component)\n  - Severity (impact classification)\n  - Status (defaults to \"Investigating\")\n  - Timestamp (incident creation time)\n- Creates real-time dashboard viewable by entire team\n- Enables historical trend analysis and MTTR calculations\n- Supports executive reporting and SLA monitoring"
      },
      "typeVersion": 1
    },
    {
      "id": "9b152b91-f8f5-472d-bb7f-115b89417238",
      "name": "Define Incident Metadata",
      "type": "n8n-nodes-base.set",
      "position": [
        -768,
        -48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f0e9d84e-9714-4e29-bb86-7e1593284491",
              "name": "service",
              "type": "string",
              "value": "API"
            },
            {
              "id": "52c39d93-bff5-4c9f-a00d-84be94201112",
              "name": "severity",
              "type": "string",
              "value": "High"
            },
            {
              "id": "81d91f46-5028-4b28-a96c-3a595b3847e0",
              "name": "description",
              "type": "string",
              "value": "Response time above 3s"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "492cf3b1-9ad6-4521-b7f5-b5a220174c01",
      "name": "Create Jira Incident Ticket",
      "type": "n8n-nodes-base.jira",
      "position": [
        -448,
        80
      ],
      "parameters": {
        "project": {
          "__rl": true,
          "mode": "list",
          "value": "10000",
          "cachedResultName": "Resource Capacity Demo"
        },
        "summary": "=[{{ $json[\"severity\"] }}] {{ $json[\"service\"] }} - {{ $json[\"description\"] }}",
        "issueType": {
          "__rl": true,
          "mode": "list",
          "value": "10004",
          "cachedResultName": "Task"
        },
        "additionalFields": {
          "description": "=Service: {{ $json[\"service\"] }} Severity: {{ $json[\"severity\"] }} Description: {{ $json[\"description\"] }} Created by: n8n Automation Time: {{ $now }}"
        }
      },
      "credentials": {
        "jiraSoftwareCloudApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b6953fcb-1d76-4736-96c4-ff69fc4a815b",
      "name": "Combine Incident & Jira Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        496,
        -32
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "203c7131-85a6-4fee-8475-8ef86e7414d4",
      "name": "Format Incident Alert for Slack",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        -32
      ],
      "parameters": {
        "jsCode": "// n8n passes input as an array of items\nconst items = $input.all();\n\n// Expecting two objects: [alertData, jiraData]\nconst alertData = items[0].json;\nconst jiraData = items[1].json;\n\n// Merge them safely\nconst jiraKey = jiraData.key || \"N/A\";\nconst jiraLink = jiraData.self || \"N/A\";\nconst service = alertData.service || \"Unknown Service\";\nconst severity = alertData.severity || \"Unknown Severity\";\nconst description = alertData.description || \"No description provided.\";\n\n// Build the Slack message\nconst message = `\ud83d\udea8 *New Incident Created!*\n\n*Jira Key:* ${jiraKey}\n*Service:* ${service}\n*Severity:* ${severity}\n*Description:* ${description}\n\n\ud83d\udd17 [View in Jira](${jiraLink})\n_Automated via n8n Incident Workflow_`;\n\nreturn [\n  {\n    json: {\n      jiraKey,\n      jiraLink,\n      service,\n      severity,\n      description,\n      message,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "9ddd6d0a-4d12-4782-bae8-a7a86c75b339",
      "name": "Alert On-Call Team in Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        944,
        -32
      ],
      "parameters": {
        "text": "={{$json[\"message\"]}}\n",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09LGDSC6GM",
          "cachedResultName": "oncall"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "1ddfdaca-339e-4c1c-b556-0642547e605d",
      "name": "Generate Incident Timeline Report",
      "type": "n8n-nodes-base.code",
      "position": [
        1184,
        -32
      ],
      "parameters": {
        "jsCode": "const input = $input.item.json;\n\n// Extract Slack message text\nconst messageText = input.message?.text || \"No message text found.\";\n\n// Default placeholders\nlet jiraKey = \"Unknown\";\nlet service = \"Unknown\";\nlet severity = \"Unknown\";\nlet description = \"No description provided.\";\nlet jiraLink = \"\";\n\n// Parse from blocks\nif (input.message?.blocks && Array.isArray(input.message.blocks)) {\n  const elements = input.message.blocks[0]?.elements[0]?.elements || [];\n\n  for (let i = 0; i < elements.length; i++) {\n    const el = elements[i];\n    const text = (el.text || \"\").trim();\n\n    if (text.startsWith(\"SCRUM-\")) jiraKey = text;\n    if (text === \"API\") service = text;\n    if (text === \"High\" || text === \"Medium\" || text === \"Low\") severity = text;\n    if (text.includes(\"Response time\")) description = text;\n    if (el.type === \"link\" && el.url.includes(\"atlassian.net\")) jiraLink = el.url;\n  }\n}\n\n// Create the report text\nconst report = `\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n                    INCIDENT TIMELINE REPORT\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nIncident Key: ${jiraKey}\nService: ${service}\nSeverity: ${severity}\nDescription: ${description}\nStart Time: ${new Date().toLocaleString()}\n\n------------------------------------------------------------\nTimeline:\n- [${new Date().toLocaleString()}] Incident declared in Slack\n- [ ] Root cause identified\n- [ ] Fix deployed\n- [ ] Postmortem completed\n------------------------------------------------------------\n\nJira Link: ${jiraLink}\nSlack Channel: #oncall\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n`;\n\nreturn [{\n  json: { jiraKey, service, severity, description, jiraLink, report }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "a397d4ed-a764-4a5c-947c-a35846d12bf1",
      "name": "Convert Timeline to Text File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1504,
        -32
      ],
      "parameters": {
        "options": {
          "fileName": "=Incident-{{$json[\"jiraKey\"]}}.txt"
        },
        "operation": "toText",
        "sourceProperty": "report"
      },
      "typeVersion": 1.1
    },
    {
      "id": "89bff2d5-0927-41bf-a959-4f65ace76fa3",
      "name": "Log Incident to Status Tracking Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1488,
        -384
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "=\"Investigating\"",
            "Service": "={{ $json.service }}",
            "Jira Key": "={{ $json.jiraKey }}",
            "Severity": "={{ $json.severity }}",
            "Timestamp": "={{$now}}"
          },
          "schema": [
            {
              "id": "Jira Key",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Jira Key",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Service",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Service",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Severity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Severity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1819778305,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit#gid=1819778305",
          "cachedResultName": "status update"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit?usp=drivesdk",
          "cachedResultName": "Interviewer Brief Pack "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "a73f4bf6-4196-472c-8351-51a19f017f2f",
      "name": "Archive Incident Timeline to Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1792,
        -32
      ],
      "parameters": {
        "name": "=Incident-Report-{{ $now.toISOString().replace(/[:]/g, \"-\") }}.txt\n",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
          "cachedResultUrl": "https://drive.google.com/drive/folders/16lOVXsq0xkvJ8sCM7hCFAghQvDOXann7",
          "cachedResultName": "resume store"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "744d9530-fe3e-4620-bbe1-8f38fd44a879",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        496
      ],
      "parameters": {
        "width": 304,
        "height": 416,
        "content": "## \ud83d\udcca Log Jira Creation Failures to Error Sheet\n**Action:** Records Jira ticket creation failures to error tracking spreadsheet.\n\n**Description:**\n- Appends error details to \"error log sheet\" when Jira API fails\n- Captures: authentication errors, rate limiting, invalid configs, network issues\n- Creates queryable database for troubleshooting integration problems\n- Ensures no silent failures\u2014every creation attempt documented\n- Helps identify patterns in API reliability\n- Critical for maintaining incident response SLA"
      },
      "typeVersion": 1
    },
    {
      "id": "ab12294c-05b5-4143-939a-242f0a432fd5",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        240
      ],
      "parameters": {
        "height": 528,
        "content": "## \u2705 Validate Jira Ticket Creation Success\n**Action:** Verifies Jira ticket was created successfully before proceeding.\n\n**Description:**\n- Checks if Jira response contains valid ticket key\n- **True Path:** Routes to Merge node for Slack alerts and timeline generation\n- **False Path:** Routes to error logging when creation fails\n- Prevents downstream processing of incomplete/failed responses\n- Catches auth failures, permission issues, API rate limiting\n- Critical quality gate for workflow reliability"
      },
      "typeVersion": 1
    },
    {
      "id": "dd851020-a962-46ac-89d6-85d873479b32",
      "name": "Validate Jira Ticket Creation Success",
      "type": "n8n-nodes-base.if",
      "position": [
        -176,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b2ef1047-1b2f-4e10-bd6a-dcab015a7f99",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "=={{ $json[\"key\"] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e48b4e31-981b-49fc-a395-fd23827aae5a",
      "name": "Log Jira Creation Failures to Error Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        192,
        320
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "error_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "error_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "error",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "error",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "error_id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1338537721,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit#gid=1338537721",
          "cachedResultName": "error log sheet"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit?usp=drivesdk",
          "cachedResultName": "Interviewer Brief Pack "
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4d3622bd-f789-440f-993f-4573a1734744",
  "connections": {
    "Define Incident Metadata": {
      "main": [
        [
          {
            "node": "Combine Incident & Jira Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Create Jira Incident Ticket",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Alert On-Call Team in Slack": {
      "main": [
        [
          {
            "node": "Generate Incident Timeline Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Jira Incident Ticket": {
      "main": [
        [
          {
            "node": "Validate Jira Ticket Creation Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine Incident & Jira Data": {
      "main": [
        [
          {
            "node": "Format Incident Alert for Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert Timeline to Text File": {
      "main": [
        [
          {
            "node": "Archive Incident Timeline to Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Incident Alert for Slack": {
      "main": [
        [
          {
            "node": "Alert On-Call Team in Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Incident Timeline Report": {
      "main": [
        [
          {
            "node": "Convert Timeline to Text File",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log Incident to Status Tracking Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Define Incident Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Jira Ticket Creation Success": {
      "main": [
        [
          {
            "node": "Combine Incident & Jira Data",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Log Jira Creation Failures to Error Sheet",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automates the incident response lifecycle — from creation to communication and archival. It instantly creates Jira tickets for new incidents, alerts the on-call Slack team, generates timeline reports, logs the status in Google Sheets, and archives documentation to…

Source: https://n8n.io/workflows/9826/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

Type in Slack. Walk away. Get a professional PDF report and a structured Excel fix sheet delivered to Google Drive and posted back in your Slack thread — fully automated, zero manual work.

Compression, HTTP Request, Google Drive +3
Slack & Telegram

Expenses Tracker (video). Uses httpRequest, splitInBatches, googleSheets, googleDrive. Event-driven trigger; 21 nodes.

HTTP Request, Google Sheets, Google Drive +2
Slack & Telegram

New Google Form response triggers the workflow Checks if employee was already onboarded (prevents duplicates) Adds user to department-specific Slack channel If in Software department, grants GitHub re

Google Sheets Trigger, Slack, HTTP Request +2
Slack & Telegram

Transform your lead list into an AI-powered calling machine. This workflow automates your entire cold calling process using Vapi's conversational AI to initiate calls, qualify leads, capture detailed

Google Sheets, HTTP Request, Slack
Slack & Telegram

This template monitors Google Drive folder for new files, extracts text from PDFs, images, text files, CSVs, and Google Docs., reads images with meta/llama-3.2-11b-vision-instruct, structures the resu

Google Drive Trigger, Google Drive, Google Docs +3