This workflow corresponds to n8n.io template #15169 — we link there as the canonical source.
This workflow follows the GitHub → 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": "YOUR_WORKFLOW_ID",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "59 - GitHub AI Issue Orchestrator",
"tags": [
{
"id": "YOUR_TAG_ID",
"name": "YOUR_TAG_NAME",
"createdAt": "2026-04-20T10:32:01.726Z",
"updatedAt": "2026-04-20T10:32:01.726Z"
}
],
"nodes": [
{
"id": "e698a279-e324-408a-b801-7469de2d0d58",
"name": "Github Trigger",
"type": "n8n-nodes-base.githubTrigger",
"position": [
-80,
368
],
"parameters": {
"owner": {
"__rl": true,
"mode": "list",
"value": "YOUR_GITHUB_USERNAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME",
"cachedResultName": "YOUR_GITHUB_USERNAME"
},
"events": [
"issues"
],
"options": {},
"repository": {
"__rl": true,
"mode": "list",
"value": "YOUR_REPO_NAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME/YOUR_REPO_NAME",
"cachedResultName": "YOUR_REPO_NAME"
}
},
"credentials": {
"githubApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "3b9f7bbd-fc55-4cfb-8b2e-2f3a964698c8",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
144,
368
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bdeac0e5-efca-4c79-b610-0822224b8f38",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.action }}",
"rightValue": "opened"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "1b32d8f7-d8ba-4415-9216-d477e6fc245f",
"name": "Send a message",
"type": "n8n-nodes-base.slack",
"position": [
1152,
352
],
"parameters": {
"text": "=\ud83d\udea8 *New GitHub Issue Opened!*\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n*\ud83d\udccc Title:* {{ $('If').item.json.body.issue.title }}\n*\ud83d\udd22 Issue No:* #{{ $('If').item.json.body.issue.number }}\n*\ud83d\udcc1 Repository:* {{ $('If').item.json.body.repository.name }}\n*\ud83d\udc64 Opened by:* {{ $('If').item.json.body.issue.user.login }}\n*\ud83d\udd52 Created at:* {{ $('If').item.json.body.issue.created_at }}\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83e\udd16 *AI ISSUE ANALYSIS*\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\ud83d\udcc2 *Category:* {{ $('Parse AI Response').item.json.category }}\n\ud83d\udd0d *Subcategory:* {{ $('Parse AI Response').item.json.subcategory }}\n\ud83d\udd34 *Severity:* {{ $('Parse AI Response').item.json.severity }}\n\u26a1 *Priority:* {{ $('Parse AI Response').item.json.priority }}\n\u23f1\ufe0f *Est. Effort:* {{ $('Parse AI Response').item.json.estimated_effort }}\n\ud83d\udc65 *Assigned Team:* {{ $('Parse AI Response').item.json.assigned_team }}\n\n\ud83d\udcdd *Summary:*\n{{ $('Parse AI Response').item.json.summary }}\n\n\u2705 *Suggested Action:*\n{{ $('Parse AI Response').item.json.suggested_action }}\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udd17 *GitHub Link:* {{ $('If').item.json.body.issue.html_url }}\n\ud83d\udccb *ClickUp Task Created* \u2705\n\ud83d\udce7 *Email Notification Sent* \u2705",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "#github-alerts"
},
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.4
},
{
"id": "c68a24b8-5909-4f4e-a245-277f2dc9e904",
"name": "Message a model",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
368,
352
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"responses": {
"values": [
{
"content": "=You are a senior GitHub Issue Analyst with 10+ years of software development experience. \nAnalyze the following GitHub issue carefully and return a precise structured report.\n\n--- ISSUE DETAILS ---\nTitle: {{ $json.body.issue.title }}\nDescription: {{ $json.body.issue.body }}\nRepository: {{ $json.body.repository.name }}\nOpened By: {{ $json.body.issue.user.login }}\nExisting Labels: {{ $json.body.issue.labels.length > 0 ? $json.body.issue.labels[0].name : 'None' }}\n\n--- ANALYSIS RULES ---\n- Read the title AND description carefully before deciding\n- If description is vague or missing, base analysis on title only\n- Severity should reflect real-world impact on users\n- Priority should reflect how soon a developer should act\n- Label must exactly match one of the allowed values below\n\n--- YOUR TASK ---\nRespond ONLY in this exact format. No extra text, no markdown, no explanation:\n\nCATEGORY: [Pick one: Bug Report | Feature Request | Documentation | Performance | Security | Question | UI/UX | Testing | Dependency | Other]\n\nSUBCATEGORY: [A specific 3-5 word description e.g. \"File Upload Crash\", \"API Rate Limit\", \"Dark Mode Toggle\"]\n\nSEVERITY: [Pick one: Critical | High | Medium | Low]\n\nPRIORITY: [Pick one: Urgent | High | Normal | Low]\n\nESTIMATED EFFORT: [Pick one: Small (1-2 hrs) | Medium (half day) | Large (1-2 days) | Extra Large (3+ days)]\n\nLABEL: [Pick one that matches CATEGORY exactly: Bug Report | Feature Request | Documentation | Performance | Security | Question | UI/UX | Testing | Dependency | Other]\n\nSUMMARY: [2-3 clear sentences: what the issue is, what is broken or needed, and what the impact is on users]\n\nSUGGESTED ACTION: [One specific, actionable first step for the developer. Be technical and precise.]\n\nASSIGNED TEAM: [Pick one: Frontend | Backend | DevOps | QA | Design | Full Stack | Documentation Team]\n\nAFFECTED AREA: [Which part of the app is affected e.g. \"File Upload Module\", \"Authentication System\", \"Database Layer\", \"UI Components\"]\n\n--- SEVERITY GUIDE (use this to decide) ---\nCritical = App is completely broken, data loss, security breach, affects ALL users\nHigh = Major feature broken, affects MANY users, no workaround exists\nMedium = Feature partially broken, some users affected, workaround exists\nLow = Minor issue, cosmetic, docs, affects very few users\n\n--- PRIORITY GUIDE (use this to decide) ---\nUrgent = Must fix today, blocking users or security risk\nHigh = Fix this week, significantly impacts user experience\nNormal = Fix this sprint, standard issue\nLow = Fix when time allows, nice to have"
}
]
},
"builtInTools": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "6a2121f7-617e-4fc4-9675-466af11dc0a2",
"name": "Parse AI Response",
"type": "n8n-nodes-base.code",
"position": [
736,
352
],
"parameters": {
"jsCode": "const items = $input.all();\n\nreturn items.map(item => {\n const text = item.json.output[0].content[0].text;\n\n const result = {};\n\n text.split(\"\\n\\n\").forEach(line => {\n const [key, ...rest] = line.split(\":\");\n if (key && rest.length) {\n const formattedKey = key.trim().toLowerCase().replace(/ /g, \"_\");\n result[formattedKey] = rest.join(\":\").trim();\n }\n });\n\n // \u2705 Added date (DD-MM-YYYY)\n const now = new Date();\n const day = String(now.getDate()).padStart(2, '0');\n const month = String(now.getMonth() + 1).padStart(2, '0');\n const year = now.getFullYear();\n result.date = `${day}-${month}-${year}`;\n\n return {\n json: result\n };\n});"
},
"typeVersion": 2
},
{
"id": "7fb02b16-8e5e-4c7a-9609-b79f12c4adcb",
"name": "Send a message1",
"type": "n8n-nodes-base.gmail",
"position": [
1152,
544
],
"parameters": {
"sendTo": "user@example.com",
"message": "==<div style=\"font-family: Arial, sans-serif; max-width: 680px; margin: auto; border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden;\">\n\n <!-- HEADER -->\n <div style=\"background: #1a1a2e; padding: 24px; text-align: center;\">\n <h1 style=\"color: #ffffff; margin: 0; font-size: 22px;\">\ud83d\udea8 New GitHub Issue Opened</h1>\n <p style=\"color: #aaaaaa; margin: 6px 0 0;\">Automated Issue Tracker \u2014 Instant Notification</p>\n </div>\n\n <!-- ISSUE DETAILS -->\n <div style=\"padding: 24px; background: #ffffff;\">\n <h2 style=\"color: #1a1a2e; border-bottom: 2px solid #f0f0f0; padding-bottom: 8px;\">\ud83d\udccc Issue Details</h2>\n <table style=\"width:100%; border-collapse: collapse;\">\n <tr style=\"background:#f9f9f9;\">\n <td style=\"padding:10px; font-weight:bold; width:35%; color:#555;\">Title</td>\n <td style=\"padding:10px;\">{{ $('If').item.json.body.issue.title }}</td>\n </tr>\n <tr>\n <td style=\"padding:10px; font-weight:bold; color:#555;\">Issue Number</td>\n <td style=\"padding:10px;\">#{{ $('If').item.json.body.issue.number }}</td>\n </tr>\n <tr style=\"background:#f9f9f9;\">\n <td style=\"padding:10px; font-weight:bold; color:#555;\">Repository</td>\n <td style=\"padding:10px;\">{{ $('If').item.json.body.repository.name }}</td>\n </tr>\n <tr>\n <td style=\"padding:10px; font-weight:bold; color:#555;\">Opened By</td>\n <td style=\"padding:10px;\">{{ $('If').item.json.body.issue.user.login }}</td>\n </tr>\n <tr style=\"background:#f9f9f9;\">\n <td style=\"padding:10px; font-weight:bold; color:#555;\">Created At</td>\n <td style=\"padding:10px;\">{{ $('If').item.json.body.issue.created_at }}</td>\n </tr>\n </table>\n\n <!-- ISSUE DESCRIPTION -->\n <h2 style=\"color:#1a1a2e; border-bottom:2px solid #f0f0f0; padding-bottom:8px; margin-top:28px;\">\ud83d\udcdd Issue Description</h2>\n <div style=\"background:#f9f9f9; padding:14px; border-left:4px solid #1a1a2e; border-radius:4px; white-space:pre-line; color:#333;\">\n {{ $('If').item.json.body.issue.body }}\n </div>\n\n <!-- AI ANALYSIS -->\n <h2 style=\"color:#1a1a2e; border-bottom:2px solid #f0f0f0; padding-bottom:8px; margin-top:28px;\">\ud83e\udd16 AI Issue Analysis</h2>\n <table style=\"width:100%; border-collapse:collapse;\">\n <tr style=\"background:#fff3cd;\">\n <td style=\"padding:10px; font-weight:bold; width:35%; color:#555;\">\ud83d\udcc2 Category</td>\n <td style=\"padding:10px;\">{{ $('Parse AI Response').item.json.category }}</td>\n </tr>\n <tr>\n <td style=\"padding:10px; font-weight:bold; color:#555;\">\ud83d\udd0d Subcategory</td>\n <td style=\"padding:10px;\">{{ $('Parse AI Response').item.json.subcategory }}</td>\n </tr>\n <tr style=\"background:#f8d7da;\">\n <td style=\"padding:10px; font-weight:bold; color:#555;\">\ud83d\udd34 Severity</td>\n <td style=\"padding:10px; font-weight:bold; color:#c0392b;\">{{ $('Parse AI Response').item.json.severity }}</td>\n </tr>\n <tr>\n <td style=\"padding:10px; font-weight:bold; color:#555;\">\u26a1 Priority</td>\n <td style=\"padding:10px; font-weight:bold; color:#e67e22;\">{{ $('Parse AI Response').item.json.priority }}</td>\n </tr>\n <tr style=\"background:#f9f9f9;\">\n <td style=\"padding:10px; font-weight:bold; color:#555;\">\u23f1\ufe0f Est. Effort</td>\n <td style=\"padding:10px;\">{{ $('Parse AI Response').item.json.estimated_effort }}</td>\n </tr>\n <tr>\n <td style=\"padding:10px; font-weight:bold; color:#555;\">\ud83d\udc65 Assigned Team</td>\n <td style=\"padding:10px;\">{{ $('Parse AI Response').item.json.assigned_team }}</td>\n </tr>\n </table>\n\n <!-- SUMMARY -->\n <h2 style=\"color:#1a1a2e; border-bottom:2px solid #f0f0f0; padding-bottom:8px; margin-top:28px;\">\ud83d\udccb Summary</h2>\n <p style=\"background:#eaf4fb; padding:14px; border-left:4px solid #3498db; border-radius:4px; color:#333;\">\n {{ $('Parse AI Response').item.json.summary }}\n </p>\n\n <!-- SUGGESTED ACTION -->\n <h2 style=\"color:#1a1a2e; border-bottom:2px solid #f0f0f0; padding-bottom:8px; margin-top:28px;\">\u2705 Suggested Action</h2>\n <p style=\"background:#eafaf1; padding:14px; border-left:4px solid #27ae60; border-radius:4px; color:#333;\">\n {{ $('Parse AI Response').item.json.suggested_action }}\n </p>\n\n <!-- BUTTON -->\n <div style=\"text-align:center; margin-top:32px;\">\n <a href=\"{{ $('If').item.json.body.issue.html_url }}\"\n style=\"background:#1a1a2e; color:#ffffff; padding:14px 32px; text-decoration:none; border-radius:6px; font-size:16px; display:inline-block;\">\n \ud83d\udd17 View Issue on GitHub\n </a>\n </div>\n </div>\n\n <!-- FOOTER -->\n <div style=\"background:#f4f4f4; padding:16px; text-align:center; color:#999; font-size:12px;\">\n This email was automatically generated by your n8n GitHub Issue Tracker \ud83d\ude80<br/>\n Repository: {{ $('If').item.json.body.repository.full_name }}\n </div>\n\n</div>",
"options": {
"appendAttribution": false
},
"subject": "==[{{ $('Parse AI Response').item.json.severity }}] GitHub Issue #{{ $('If').item.json.body.issue.number }}: {{ $('If').item.json.body.issue.title }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "49fce825-d1e9-41d3-b056-7cbc2e409058",
"name": "Create a task",
"type": "n8n-nodes-base.clickUp",
"position": [
1152,
160
],
"parameters": {
"list": "YOUR_CLICKUP_LIST_ID",
"name": "={{ $('If').item.json.body.issue.title }}",
"team": "YOUR_CLICKUP_TEAM_ID",
"space": "YOUR_CLICKUP_SPACE_ID",
"folderless": true,
"additionalFields": {
"content": "=GitHub Issue Details\n\nTitle: {{ $('If').item.json.body.issue.title }}\nIssue: {{ $('If').item.json.body.issue.number }}\nRepository: {{ $('If').item.json.body.repository.name }}\nOpened By: {{ $('If').item.json.body.issue.user.login }}\n\n---\n\nAI Analysis\n\nCategory: {{ $('Parse AI Response').item.json.category }}\nSubcategory: {{ $('Parse AI Response').item.json.subcategory }}\nSeverity: {{ $('Parse AI Response').item.json.severity }}\nPriority: {{ $('Parse AI Response').item.json.priority }}\n\nSummary:\n{{ $('Parse AI Response').item.json.summary }}\n\nSuggested Action:\n{{ $('Parse AI Response').item.json.suggested_action }}\n\n---\n\n\ud83d\udd17 {{ $('If').item.json.body.issue.html_url }}",
"priority": "={{ $('Parse AI Response').item.json.priority === 'Urgent' ? 1 : $('Parse AI Response').item.json.priority === 'High' ? 2 : $('Parse AI Response').item.json.priority === 'Normal' ? 3 : 4 }}"
}
},
"credentials": {
"clickUpApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "37ca0c0b-b8fb-4c07-91cf-b760daedb4fc",
"name": "Create a comment on an issue",
"type": "n8n-nodes-base.github",
"position": [
1168,
848
],
"parameters": {
"body": "=\ud83d\udc4b Hey @{{ $('If').item.json.body.issue.user.login }}, thanks for opening this issue!\n\nOur AI has reviewed it and here's what we found:\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83e\udd16 AI ANALYSIS RESULT\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\ud83d\udcc2 Category: {{ $('Parse AI Response').item.json.category }}\n\ud83d\udd0d Subcategory: {{ $('Parse AI Response').item.json.subcategory }}\n\ud83d\udd34 Severity: {{ $('Parse AI Response').item.json.severity }}\n\u26a1 Priority: {{ $('Parse AI Response').item.json.priority }}\n\u23f1\ufe0f Estimated Effort: {{ $('Parse AI Response').item.json.estimated_effort }}\n\ud83d\udc65 Assigned Team: {{ $('Parse AI Response').item.json.assigned_team }}\n\n\ud83d\udcdd Summary:\n{{ $('Parse AI Response').item.json.summary }}\n\n\u2705 Suggested Action:\n{{ $('Parse AI Response').item.json.suggested_action }}\n\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udccb A ClickUp task has been created for this issue\n\ud83d\udce7 The team has been notified via email & Slack\n\ud83d\udd17 We will review and respond as soon as possible\n\n\ud83e\udd16 This comment was auto-generated by our Issue Tracker Bot",
"owner": {
"__rl": true,
"mode": "list",
"value": "YOUR_GITHUB_USERNAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME",
"cachedResultName": "YOUR_GITHUB_USERNAME"
},
"operation": "createComment",
"repository": {
"__rl": true,
"mode": "list",
"value": "YOUR_REPO_NAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME/YOUR_REPO_NAME",
"cachedResultName": "YOUR_REPO_NAME"
},
"issueNumber": "={{ $('If').item.json.body.issue.number }}"
},
"credentials": {
"githubApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "1da1511b-a249-495c-9d53-6353a17e4d4b",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
1168,
1024
],
"parameters": {
"url": "=https://api.github.com/repos/YOUR_GITHUB_USERNAME/YOUR_REPO_NAME/issues/{{ $('If').item.json.body.issue.number }}/labels",
"method": "POST",
"options": {},
"jsonBody": "={\"labels\": [\"{{ $('Parse AI Response').item.json.label }}\", \"{{ $('Parse AI Response').item.json.severity }}\"]}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/vnd.github+json"
},
{
"name": "Authorization",
"value": "Bearer YOUR_TOKEN_HERE"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "3d69694a-f3ce-44e1-aa2e-a741b35f8601",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1152,
-176
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.date }}",
"Title": "={{ $('If').item.json.body.issue.title }}",
"Category": "={{ $json.category }}",
"Priority": "={{ $json.priority }}",
"Severity": "={{ $json.severity }}",
"GitHub Link": "={{ $('If').item.json.body.issue.html_url }}",
"Subcategory": "={{ $json.subcategory }}",
"Issue Number": "={{ $('If').item.json.body.issue.number }}",
"Assigned Team": "={{ $json.assigned_team }}",
"Estimated Effort": "={{ $json.estimated_effort }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Issue Number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Issue Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Subcategory",
"type": "string",
"display": true,
"required": false,
"displayName": "Subcategory",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Severity",
"type": "string",
"display": true,
"required": false,
"displayName": "Severity",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Priority",
"type": "string",
"display": true,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Estimated Effort",
"type": "string",
"display": true,
"required": false,
"displayName": "Estimated Effort",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Assigned Team",
"type": "string",
"display": true,
"required": false,
"displayName": "Assigned Team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "GitHub Link",
"type": "string",
"display": true,
"required": false,
"displayName": "GitHub Link",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Issue Number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit?usp=drivesdk",
"cachedResultName": "YOUR_SHEET_NAME"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "95c16ed3-c942-4fa8-b13d-77559f69bd4b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
48
],
"parameters": {
"width": 656,
"height": 560,
"content": "## GitHub AI Issue Orchestrator\nThis workflow automatically handles new GitHub issues by reading and understanding them, then taking the required actions without any manual effort. It helps your team save time by using AI to understand the issue, automatically creating tasks, sending notifications, and keeping everything organized in one place.\n\n### How its works\n\n\t\u2022\tA new issue is created on GitHub\n\t\u2022\tThe system reads and understands the issue\n\t\u2022\tAI analyzes the issue and gives useful details\n\t\u2022\tA task is created for the team\n\t\u2022\tNotifications are sent on Slack and Email\n\t\u2022\tA reply is posted on GitHub\n\t\u2022\tAll data is saved for tracking\n\n### Setup Steps\n\n 1. Connect GitHub to trigger the workflow\n 2. Add accounts (OpenAI, Slack, Gmail, ClickUp, Google Sheets)\n 3. Set up message formats and task details\n 4. Test with a sample issue and activate"
},
"typeVersion": 1
},
{
"id": "8a0aa310-0400-4478-884f-9b5710b14e42",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
48
],
"parameters": {
"color": 7,
"width": 416,
"height": 560,
"content": "## Step 1: Issue Input & Preparation\n\nReceives a new GitHub issue, checks if it is newly opened, and prepares the basic issue data for further processing."
},
"typeVersion": 1
},
{
"id": "fb41ee00-16ca-4453-b73a-c572e9a63387",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
48
],
"parameters": {
"color": 7,
"width": 336,
"height": 560,
"content": "## Step 2: AI Understanding\n\nReads the issue content and understands what it is about, including type, priority, and overall impact."
},
"typeVersion": 1
},
{
"id": "1fa8b005-b4bc-4fd2-81d3-d32dfcf392af",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
48
],
"parameters": {
"color": 7,
"width": 304,
"height": 560,
"content": "## Step 3: Data Preparation\n\nConverts the AI response into a clean and structured format, and adds useful details like date for better tracking."
},
"typeVersion": 1
},
{
"id": "e2809752-50c1-4603-a73f-b464365d6234",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-304
],
"parameters": {
"color": 7,
"width": 464,
"height": 288,
"content": "## Data Logging\n\nStores all issue details in Google Sheets for tracking, reporting, and future reference."
},
"typeVersion": 1
},
{
"id": "6b9ca4ef-e46a-4fc2-82a1-8776eaae1a80",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
720
],
"parameters": {
"color": 7,
"width": 464,
"height": 432,
"content": "## Issue Update\n\nAdds a helpful comment on the GitHub issue and applies labels to keep it organized and easy to manage."
},
"typeVersion": 1
},
{
"id": "b74ad14e-7951-406c-a7e8-d0cbd6734026",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
0
],
"parameters": {
"color": 7,
"width": 464,
"height": 688,
"content": "## Task & Notifications\n\nCreates a task for the team and sends updates through Slack and Email so everyone is informed instantly."
},
"typeVersion": 1
},
{
"id": "3d375619-4c98-4c7d-b3be-d14ba4e3fd09",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-400
],
"parameters": {
"color": 7,
"width": 464,
"height": 80,
"content": "## Step 4"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "0ebe8748-6b10-4fea-85a6-0ba4870465d3",
"connections": {
"If": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
}
]
]
},
"Create a task": {
"main": [
[]
]
},
"Github Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[]
]
},
"Message a model": {
"main": [
[
{
"node": "Parse AI Response",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Response": {
"main": [
[
{
"node": "Create a task",
"type": "main",
"index": 0
},
{
"node": "Send a message",
"type": "main",
"index": 0
},
{
"node": "Send a message1",
"type": "main",
"index": 0
},
{
"node": "Create a comment on an issue",
"type": "main",
"index": 0
},
{
"node": "HTTP Request",
"type": "main",
"index": 0
},
{
"node": "Append row in 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.
clickUpApigithubApigmailOAuth2googleSheetsOAuth2ApiopenAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically handles new GitHub issues by reading and understanding them using AI, then taking multiple actions simultaneously — creating tasks, sending notifications, and keeping everything organized — without any manual effort. Trigger & filter GitHub Trigger –…
Source: https://n8n.io/workflows/15169/ — 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.
Overview
Consultants, agencies, freelancers, and professional service firms who need to create customized proposals and contracts quickly and efficiently.
Small teams, solo operators, and security-conscious individuals who receive email attachments from external senders. Useful for freelancers, agencies, HR teams, and anyone handling CVs, invoices, or d
Engineering teams, code reviewers, and tech leads who want to automate code review feedback. Ideal for repositories with high PR volume where consistent first-pass review is valuable.
This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The