Intermediate~20 min setupCommunication & Project ManagementVerified April 2026
Slack logo
Jira logo

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-time

Use case type

routing

Real-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.

/mo
505005K50K

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

Skip the setup

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.

Slack workspace admin access to create and install apps
Jira project permissions to create issues in your target project
n8n instance accessible via public URL for Slack webhooks
Atlassian API token for Jira Cloud authentication

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue Summarysummary
Issue Descriptiondescription
Project Keyproject
Issue Typeissuetype
3 optional fields▸ show
Reporterreporter
Prioritypriority
Labelslabels

Step-by-Step Setup

1

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.

  1. 1Click 'Create New App' and choose 'From scratch'
  2. 2Name your app 'Jira Issue Creator' and select your workspace
  3. 3Go to OAuth & Permissions in the left sidebar
  4. 4Add reactions:read, channels:read, and chat:write to Bot Token Scopes
  5. 5Click 'Install to Workspace' and authorize the app
What you should see: You should see a Bot User OAuth Token starting with 'xoxb-' in the OAuth & Permissions section.
Common mistake — The bot token expires if you regenerate it, so copy it immediately and store it securely.
2

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.

  1. 1Toggle 'Enable Events' to On
  2. 2Leave Request URL empty for now (we'll add n8n's webhook URL next)
  3. 3Scroll to 'Subscribe to bot events'
  4. 4Click 'Add Bot User Event' and select 'reaction_added'
  5. 5Save Changes
What you should see: You should see reaction_added listed under 'Subscribe to bot events' with a pending webhook URL.

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
  }
};
3

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.

  1. 1Click the '+' button to add a new node
  2. 2Search for 'Webhook' and select it
  3. 3Set HTTP Method to 'POST'
  4. 4Set Path to '/slack-reactions'
  5. 5Click 'Copy Webhook URL' to get the full URL
What you should see: You should see a webhook URL like 'https://your-n8n-instance.com/webhook/slack-reactions' that you can copy.
Common mistake — If your n8n instance isn't publicly accessible, Slack won't be able to send webhooks to it.
4

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.

  1. 1Paste your n8n webhook URL into the 'Request URL' field
  2. 2Wait for Slack to verify the URL (takes 5-10 seconds)
  3. 3Click 'Save Changes' once verification passes
  4. 4Go to 'Install App' and reinstall to workspace
What you should see: You should see 'Verified' with a green checkmark next to your webhook URL.
Common mistake — If verification fails, check that your n8n webhook node is active and your instance is publicly reachable.
5

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.

  1. 1Add an IF node after the webhook
  2. 2Set Condition to 'String'
  3. 3Set Value 1 to '{{ $json.event.reaction }}'
  4. 4Set Operation to 'Equal'
  5. 5Set Value 2 to 'bug' (for 🐛 emoji)
What you should see: The IF node shows two paths: 'true' for bug reactions and 'false' for all other reactions.
Common mistake — Slack sends emoji names without colons - so 🐛 comes through as 'bug', not ':bug:'.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Jira
JI
notified
6

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.

  1. 1Add a Slack node connected to the 'true' path of the IF node
  2. 2Set Resource to 'Message'
  3. 3Set Operation to 'Get'
  4. 4Set Channel to '{{ $json.event.item.channel }}'
  5. 5Set Timestamp to '{{ $json.event.item.ts }}'
What you should see: The Slack node should show it will fetch message details using the channel and timestamp from the reaction event.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
7

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.

  1. 1Add a Jira Software node after the Slack message node
  2. 2Click 'Create New' next to Credentials
  3. 3Choose 'Jira Software API' credential type
  4. 4Enter your Jira domain (like 'yourcompany.atlassian.net')
  5. 5Enter your email and API token from Atlassian account settings
What you should see: You should see 'Connected' status after testing the Jira credentials.
Common mistake — API tokens from Atlassian account settings work for Cloud but not Server instances.
8

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.

  1. 1Set Resource to 'Issue'
  2. 2Set Operation to 'Create'
  3. 3Select your target Jira project from the dropdown
  4. 4Set Issue Type to 'Bug' or 'Task'
  5. 5Set Summary to 'Issue from #{{ $json.event.item.channel }}: {{ $node["Slack"].json.text | truncate(50) }}'
  6. 6Set Description to the full Slack message text and user info
What you should see: The Jira node shows it will create issues with titles and descriptions pulled from Slack messages.
Common mistake — If your Jira project requires custom fields, you'll need to add them in the Additional Fields section or the creation will fail.
9

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.

  1. 1Add another Slack node after the Jira node
  2. 2Set Resource to 'Message'
  3. 3Set Operation to 'Post'
  4. 4Set Channel to '{{ $json.event.item.channel }}'
  5. 5Set Text to 'Created Jira issue: {{ $node["Jira Software"].json.key }}'
  6. 6Set Thread TS to '{{ $json.event.item.ts }}' to reply in thread
What you should see: The Slack response node shows it will post the new Jira issue key as a threaded reply.
10

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.

  1. 1Click the 'Active' toggle in the top right of n8n
  2. 2Go to your Slack workspace and post a test message
  3. 3Add a 🐛 reaction to your test message
  4. 4Check the 'Executions' tab in n8n for the triggered workflow
  5. 5Verify the Jira issue was created and Slack got the confirmation
What you should see: You should see a successful execution in n8n, a new Jira issue, and a Slack thread reply with the issue key.
Common mistake — The first test might take 10-15 seconds as Slack's event delivery can have initial delays.
n8n
▶ Run once
executed
Slack
Jira
Jira
🔔 notification
received

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 syncSend Jira status updates back to the original Slack thread when issues are resolved or closed.
  • Implement approval workflowAdd a confirmation step where team leads must approve issue creation before the Jira ticket gets created.
  • Connect to other toolsExtend the workflow to also create GitHub issues or notify team members in other communication platforms.

Related guides

Was this guide helpful?
Slack + Jira overviewn8n profile →