

How to Create Jira Issues from Slack Messages with n8n
Automatically convert Slack messages into Jira tickets using slash commands or emoji reactions with n8n.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Jira Cloud for Slack exists as a native integration, but it handles basic notifications but no conditional routing. This guide uses an automation platform for full control. View native option →
Best for
Development teams who want to convert bug reports and feature requests from Slack conversations into trackable Jira issues.
Not ideal for
Teams needing bulk ticket creation or complex approval workflows before issue creation.
Sync type
real-timeUse case type
routingReal-World Example
A 12-person development team gets bug reports scattered across 3 Slack channels daily. Before automation, developers manually copied message details into Jira, losing context and wasting 20 minutes per ticket. Now team members add a 🐛 reaction to any message, and n8n creates a properly formatted Jira issue with the original message thread as description.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Issue Summary | summary | |
| Issue Description | description | |
| Project Key | project | |
| Issue Type | issuetype | |
3 optional fields▸ show
| Reporter | reporter |
| Priority | priority |
| Labels | labels |
Step-by-Step Setup
api.slack.com > Your Apps > Create New App
Create Slack App and Bot Token
Go to api.slack.com and create a new Slack app for your workspace. You'll need this app to receive webhook events when reactions are added to messages. Navigate to OAuth & Permissions and add the reactions:read, channels:read, and chat:write scopes to your bot token.
- 1Click 'Create New App' and choose 'From scratch'
- 2Name your app 'Jira Issue Creator' and select your workspace
- 3Go to OAuth & Permissions in the left sidebar
- 4Add reactions:read, channels:read, and chat:write to Bot Token Scopes
- 5Click 'Install to Workspace' and authorize the app
api.slack.com > Your Apps > Event Subscriptions
Configure Slack Event Subscriptions
Enable Event Subscriptions in your Slack app to receive webhook notifications when reactions are added. You'll need to provide n8n's webhook URL here, but we'll generate that in the next step. For now, just navigate to the Event Subscriptions page and prepare to add reaction_added to your bot events.
- 1Toggle 'Enable Events' to On
- 2Leave Request URL empty for now (we'll add n8n's webhook URL next)
- 3Scroll to 'Subscribe to bot events'
- 4Click 'Add Bot User Event' and select 'reaction_added'
- 5Save Changes
This JavaScript code goes in a Function node between the Slack message fetch and Jira creation. It intelligently maps different emoji reactions to appropriate Jira issue types and priorities while extracting user mentions from the message.
JavaScript — Code Node// Map emoji reactions to Jira issue properties▸ Show code
// Map emoji reactions to Jira issue properties
const reactionMapping = {
'bug': { type: 'Bug', priority: 'Medium' },... expand to see full code
// Map emoji reactions to Jira issue properties
const reactionMapping = {
'bug': { type: 'Bug', priority: 'Medium' },
'zap': { type: 'Task', priority: 'High' },
'bulb': { type: 'Story', priority: 'Low' }
};
const reaction = $input.first().json.event.reaction;
const messageData = $node['Slack'].json;
// Extract mentioned users from message text
const mentions = messageData.text.match(/<@(\w+)>/g) || [];
const mentionedUsers = mentions.map(mention => {
const userId = mention.replace(/[<@>]/g, '');
return `Mentioned: <@${userId}>`;
}).join('\n');
// Build rich description with context
const description = `
*Original Message:*
${messageData.text}
*Posted by:* <@${messageData.user}>
*Channel:* <#${$input.first().json.event.item.channel}>
*Timestamp:* ${new Date(parseFloat(messageData.ts) * 1000).toISOString()}
${mentionedUsers ? '\n*Mentions:*\n' + mentionedUsers : ''}
*Created via Slack reaction automation*
`;
// Get issue properties from reaction type
const issueProps = reactionMapping[reaction] || { type: 'Task', priority: 'Medium' };
return {
json: {
summary: `Issue from Slack: ${messageData.text.substring(0, 60)}${messageData.text.length > 60 ? '...' : ''}`,
description: description.trim(),
issueType: issueProps.type,
priority: issueProps.priority,
channel: $input.first().json.event.item.channel,
originalUser: messageData.user,
messageTimestamp: messageData.ts
}
};n8n > New Workflow > Add Node
Create n8n Workflow with Slack Webhook
Open n8n and create a new workflow. Add a Slack Webhook node as your trigger - this will generate the webhook URL you need to provide back to Slack. The webhook will receive data whenever someone adds a reaction to a Slack message.
- 1Click the '+' button to add a new node
- 2Search for 'Webhook' and select it
- 3Set HTTP Method to 'POST'
- 4Set Path to '/slack-reactions'
- 5Click 'Copy Webhook URL' to get the full URL
api.slack.com > Your Apps > Event Subscriptions
Add Webhook URL to Slack
Return to your Slack app's Event Subscriptions page and paste the n8n webhook URL. Slack will send a challenge request to verify the URL works. n8n's webhook node automatically handles this verification, so you should see a green verified checkmark.
- 1Paste your n8n webhook URL into the 'Request URL' field
- 2Wait for Slack to verify the URL (takes 5-10 seconds)
- 3Click 'Save Changes' once verification passes
- 4Go to 'Install App' and reinstall to workspace
n8n > Add Node > IF
Add Reaction Filter Node
Add an IF node after the webhook to filter for specific emoji reactions. You only want to create Jira issues for certain reactions like 🐛 for bugs or ⚡ for urgent issues. Configure the IF node to check if the reaction emoji matches your chosen trigger emoji.
- 1Add an IF node after the webhook
- 2Set Condition to 'String'
- 3Set Value 1 to '{{ $json.event.reaction }}'
- 4Set Operation to 'Equal'
- 5Set Value 2 to 'bug' (for 🐛 emoji)
n8n > Add Node > Slack
Fetch Slack Message Details
Add a Slack node to retrieve the full message content that the reaction was added to. The webhook only provides the message timestamp and channel, so you need to fetch the actual message text, author, and thread context to include in your Jira issue.
- 1Add a Slack node connected to the 'true' path of the IF node
- 2Set Resource to 'Message'
- 3Set Operation to 'Get'
- 4Set Channel to '{{ $json.event.item.channel }}'
- 5Set Timestamp to '{{ $json.event.item.ts }}'
n8n > Add Node > Jira Software
Configure Jira Authentication
Add a Jira Software node and set up authentication to your Jira instance. You'll need to create credentials using either basic auth (email + API token) or OAuth2 depending on your Jira setup. For Jira Cloud, use email and an API token from your Atlassian account settings.
- 1Add a Jira Software node after the Slack message node
- 2Click 'Create New' next to Credentials
- 3Choose 'Jira Software API' credential type
- 4Enter your Jira domain (like 'yourcompany.atlassian.net')
- 5Enter your email and API token from Atlassian account settings
Jira Software Node > Parameters
Configure Jira Issue Creation
Set the Jira node to create a new issue using the Slack message content. Map the Slack message text to the Jira description field, and set appropriate values for project key, issue type, and summary. Use the Slack username and channel name to provide context about where the issue originated.
- 1Set Resource to 'Issue'
- 2Set Operation to 'Create'
- 3Select your target Jira project from the dropdown
- 4Set Issue Type to 'Bug' or 'Task'
- 5Set Summary to 'Issue from #{{ $json.event.item.channel }}: {{ $node["Slack"].json.text | truncate(50) }}'
- 6Set Description to the full Slack message text and user info
n8n > Add Node > Slack
Add Slack Confirmation Response
Add another Slack node to post a confirmation message in the thread where the reaction was added. This lets the team know that a Jira issue was successfully created and provides the issue key for reference. Connect this to the Jira node output so it only runs after successful issue creation.
- 1Add another Slack node after the Jira node
- 2Set Resource to 'Message'
- 3Set Operation to 'Post'
- 4Set Channel to '{{ $json.event.item.channel }}'
- 5Set Text to 'Created Jira issue: {{ $node["Jira Software"].json.key }}'
- 6Set Thread TS to '{{ $json.event.item.ts }}' to reply in thread
n8n > Activate Workflow
Test the Workflow
Activate your workflow and test it by posting a test message in Slack, then adding your trigger emoji reaction. Check that the webhook fires, the message details are fetched, a Jira issue gets created, and a confirmation appears in Slack. Review the execution log in n8n to troubleshoot any failures.
- 1Click the 'Active' toggle in the top right of n8n
- 2Go to your Slack workspace and post a test message
- 3Add a 🐛 reaction to your test message
- 4Check the 'Executions' tab in n8n for the triggered workflow
- 5Verify the Jira issue was created and Slack got the confirmation
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use n8n for this if you need custom logic around reaction handling or want to avoid monthly per-task pricing. n8n's Function nodes let you build complex emoji-to-issue-type mappings and rich formatting that would require multiple steps in other platforms. The self-hosted option means unlimited executions once you're past initial setup. Pick Zapier instead if you want zero maintenance and don't mind paying $20/month for 1000+ reactions.
At 50 reactions per month, you're looking at 50 executions in n8n (free if self-hosted, $0 on cloud tier). Zapier would cost $20/month on their Professional plan since each reaction is one task. Make handles this at $9/month for 1000 operations, making it the cheapest hosted option. Power Automate Premium at $15/month gives you unlimited flows but requires Office 365.
Zapier has the cleanest Slack reaction trigger setup - no manual webhook configuration needed. Make's visual builder makes complex conditional logic easier to understand than n8n's IF nodes. Power Automate integrates better if your team already uses Microsoft project management tools instead of Jira. But n8n wins on customization - you can parse Slack message formatting, extract mentioned users, and build rich Jira descriptions that other platforms struggle with.
You'll hit Slack's event delivery delays during your first week - reactions sometimes take 10-30 seconds to trigger workflows. Jira's required custom fields will break your automation without warning if project admins change screen configurations. The biggest gotcha is Slack bot permissions in private channels - team members forget to invite the bot and wonder why reactions don't work.
Ideas for what to build next
- →Add bidirectional sync — Send Jira status updates back to the original Slack thread when issues are resolved or closed.
- →Implement approval workflow — Add a confirmation step where team leads must approve issue creation before the Jira ticket gets created.
- →Connect to other tools — Extend the workflow to also create GitHub issues or notify team members in other communication platforms.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup