n8n Automated Support Ticket Triage & Resolution: JIRA + OpenAI Template
Scheduled JIRA To Do pull → AI auto-labeling / priority / description rewrite → retrieve similar resolved issues → generate suggested fix as ticket comment
- Who
- Support teams using JIRA with high daily ticket volume
- You get
- New tickets are auto-triaged with labels, priority, and simplified description; AI suggests resolutions based on similar historically resolved tickets, posted back as a comment
Constraints
Prerequisites: accessible n8n instance; JIRA Cloud account with jiraSoftwareCloudApi credential; OpenAI API key with openAiApi credential. Default model is gpt-4o-mini (explicit in nodes), with gpt-4o as alternative. JIRA project must exist or adjust JQL from `Project = 'SUPPORT'`. Polling frequency set via Schedule Trigger minutes field (value must be configured). Before activation, customize the label list in the Label, Prioritize & Rewrite system prompt to match your organization's taxonomy.
What they did
Template author jimleuk published an n8n workflow template (id=3868) to automate JIRA support ticket handling. The workflow polls JIRA for To Do tickets via scheduled trigger, deduplicates them, then uses OpenAI's gpt-4o-mini model to auto-classify (label), prioritize, and simplify descriptions. It then retrieves similar resolved tickets from the past month by matching labels, extracts and summarizes their comments for resolutions, and finally generates a suggested fix addressed to the reporter, posted as a comment on the original ticket.
How it went
The source description states this workflow reduces manual triage workload for support teams and leverages historical cases to attempt automated resolution (author_report). No specific success rates, processing times, or user satisfaction metrics are provided.
Worth knowing
The label list is hardcoded in the system prompt and must be customized to your organization's taxonomy or classification results will be meaningless. The default JQL queries `Project = 'SUPPORT'`—change if your project name differs. Suggested resolution comments should be manually tuned for company tone; otherwise AI output may sound overly technical and robotic. If historically resolved tickets lack useful comments or accurate labels, suggestion quality degrades significantly. The template can be adapted to Linear or other ticket systems, or replaced with a RAG-based knowledge base approach for resolution generation.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Get Open Tickets node: connect jiraSoftwareCloudApi credentials.
- OpenAI Chat Model node: connect OpenAI API credentials.
- Update Labels, Priority and Description node: connect jiraSoftwareCloudApi credentials.
- Get Recent Similar Issues Resolved node: connect jiraSoftwareCloudApi credentials.
- Get Comments node: connect jiraSoftwareCloudApi credentials.
- OpenAI Chat Model1 node: connect OpenAI API credentials.
- OpenAI Chat Model2 node: connect OpenAI API credentials.
- Add Comment to Issue node: connect jiraSoftwareCloudApi credentials.
Configuration to replace
- Source template is n8n public workflow #3868 (~27 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-24
Steps
Fetch Open Tickets and Deduplicate
Configure the Schedule Trigger node with field: minutes (set your interval). Connect to Get Open Tickets (JIRA node) with JQL `Project = 'SUPPORT' AND status = 'To Do'`, limit 10, fields *navigable. Downstream, add Mark as Seen (Remove Duplicates node) with dedupeValue `={{ $json.key }}` to prevent reprocessing the same issue.
AI Auto-Triage: Labels, Priority, and Description Rewrite
Use Simplify Ticket (Set node) to extract fields: projectKey, issueKey, issueType, createdAt, status, summary, description, reportedBy, reportedByEmailAddress. Feed structured data into Label, Prioritize & Rewrite (Basic LLM Chain node), connected to OpenAI Chat Model (gpt-4o-mini) and Structured Output Parser. Output must conform to JSON Schema: labels (string array), priority (number 1-5), summary (string), description (string). Then use Update Labels, Priority and Description (JIRA node) to write results back to the original ticket.
Execution prompt · Source text。Label, Prioritize & Rewrite node messages.messageValues[0].message field (system prompt)
=Your are JIRA triage assistant who's task is to 1) classify and label the given issue. 2) Prioritise the given issue. 3) Rewrite the issue summary and description. ## Labels Use one or more. Use words wrapped in "[]" (square brackets): * Technical * Account * Access * Billing * Product * Training * Feedback * Complaints * Security * Privacy ## Priority * 1 - highest * 2 - high * 3 - medium * 4 - low * 5 - lowest ## Rewriting Summary and Description * Remove emotional and anedotal phrases or information * Keep to the facts of the matter * Highlight what was attempted and is/was failing
Execution prompt · Source text。Label, Prioritize & Rewrite node text field (user input template)
=Reported by {{ $json.reportedBy }} <{{ $json.reportedByEmailAddress }}> Reported at: {{ $json.createdAt }} Issue Key: {{ $json.issueKey }} Summary: {{ $json.summary }} Description: {{ $json.description }}Retrieve Similar Resolved Issues and Summarize
Use Get Recent Similar Issues Resolved (JIRA node) to search for issues resolved in the last month (Resolved/Closed/Done) with matching labels, excluding the current issue, limit 5. Process via Loop Over Items: Issue Ref (noOp) → Simplify Issue (Set node, same fields as step 2) → Get Comments (JIRA node, orderBy: -created) → Simplify Comments (Set node, extracting author and comment). Aggregate node collects comments into a comments array, fed into Summarise Resolution (Basic LLM Chain node, connected to OpenAI Chat Model1) to generate resolution summaries. Return Fields node structures output.
Execution prompt · Source text。Summarise Resolution node messages.messageValues[0].message field (system prompt)
Analyse the given issue and its comments. Your task is to summarise the resolution of this issue.
Execution prompt · Source text。Summarise Resolution node text field (user input template)
=## Issue {{ $('Simplify Issue').item.json.issueKey }} {{ $('Simplify Issue').item.json.summary }} {{ $('Simplify Issue').item.json.description }} ## Comments {{ $json.comments.map((item,idx) => `${idx+1}. ${item.comment.replaceAll('\n', ' ')}`).join('\n') }}Generate Suggested Resolution and Post Comment
Aggregate1 node collects resolved_issues from step 3 into an array. Attempt to Resolve Issue (Basic LLM Chain node, connected to OpenAI Chat Model2) generates a non-technical suggestion addressed to the reporter, based on current issue and historical resolutions. Finally, Add Comment to Issue (JIRA node) posts the suggestion text as a comment on the original ticket.
Execution prompt · Source text。Attempt to Resolve Issue node messages.messageValues[0].message field (system prompt)
=Using the previously resolved issues, attempt to suggest a resolution for the current issue for the reporter. Please address your answer to the reporter. Assume the report is non-technical and simplify your response as much as possible. Do not sign off your message.
Execution prompt · Source text。Attempt to Resolve Issue node text field (user input template)
=## Current Issue Reported by: {{ $('Simplify Ticket').item.json.reportedBy }} {{ $('Simplify Ticket').item.json.issueKey }} {{ $('Simplify Ticket').item.json.summary }} {{ $('Simplify Ticket').item.json.description }} ## Previously resolved Issues {{ $json.resolved_issues.toJsonString() }}
Prompt you can copy
Setup guidance · Editorial suggestion。Hand to setup assistant to confirm inputs and permissions before guiding import and key configuration checks
This block is the prompt. Ads are never placed here.
You are an n8n workflow setup assistant. The user wants to replicate the "JIRA + OpenAI Automated Ticket Triage & Resolution" template. Assist in this order: 1. Confirm the user has an n8n instance, JIRA Cloud credentials (jiraSoftwareCloudApi), and OpenAI API credentials (openAiApi). 2. Guide them to import workflow 3868 from the n8n template library, or manually create nodes from the provided workflow.json. 3. Check that the Schedule Trigger polling interval is reasonable (suggest 5-15 minutes for testing). 4. Critically verify that the label list in the Label, Prioritize & Rewrite system prompt matches the user's organizational taxonomy; replace example labels like Technical/Account/Access as needed. 5. Confirm the JQL project key (`Project = 'SUPPORT'`) matches the user's JIRA project. 6. Recommend testing with a single ticket first to validate labeling, priority, description rewrite, and comment suggestion before activating the scheduled trigger.
This prompt initiates the setup conversation, not a node runtime prompt. Actual runtime prompts are captured in their respective steps.
Source
Automate support ticket triage and resolution with JIRA and AI · jimleuk · n8n.io · 2025-05-05
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.