

How to Create Jira Issues from Slack Messages with Pipedream
Convert urgent Slack messages into Jira tickets automatically using slash commands or emoji reactions.
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
Dev teams who need to capture bugs and requests from Slack conversations without losing context.
Not ideal for
Teams that prefer manual issue creation or need complex approval workflows before ticket creation.
Sync type
real-timeUse case type
routingReal-World Example
A 12-person engineering team uses this when QA finds bugs during testing. They react with π emoji to any bug report in #testing-alerts, and a Jira ticket appears in 3 seconds with the full message thread as description. Before automation, 20% of reported bugs never made it to Jira because someone forgot to manually create tickets.
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 Pipedream
Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 | |
4 optional fieldsβΈ show
| Reporter | reporter |
| Priority | priority |
| Labels | labels |
| Slack Link | customfield_10001 |
Step-by-Step Setup
Workflows > New > Start from scratch
Create New Workflow in Pipedream
Log into pipedream.com and click the green 'New' button in the top right. Select 'Start from scratch' from the dropdown menu. You'll see the workflow builder with an empty canvas where you can add your trigger and steps.
- 1Click 'New' in the top navigation
- 2Select 'Start from scratch' from dropdown
- 3Name your workflow 'Slack to Jira Issue Creator'
- 4Click 'Create Workflow'
Trigger > Add a trigger > Slack > New Reaction Added
Add Slack Events API Trigger
Click 'Add a trigger' and search for Slack in the app list. Select 'New Reaction Added (Instant)' as your trigger type. This creates a webhook that fires immediately when someone adds an emoji reaction to any message in channels where your bot is present.
- 1Click 'Add a trigger'
- 2Type 'slack' in the search box
- 3Select 'New Reaction Added (Instant)' trigger
- 4Click 'Save and continue'
Trigger Configuration > Connect Account > Slack OAuth
Connect Your Slack Account
Click 'Connect new account' to link your Slack workspace. You'll be redirected to Slack's OAuth page where you need admin permissions to install the Pipedream app. Grant permissions for channels:read, reactions:read, and chat:history to capture message content and reactions.
- 1Click 'Connect new account'
- 2Select your Slack workspace from the list
- 3Click 'Allow' on the permissions screen
- 4Return to Pipedream when redirected
Trigger Configuration > Reaction Filter
Configure Reaction Filter
Set the trigger to only fire for specific emoji reactions. In the trigger settings, add 'bug' and 'ticket' emojis to the reaction filter. This prevents the workflow from running on every reaction like thumbs up or celebration emojis that don't need Jira tickets.
- 1Scroll to 'Reaction Filter' section
- 2Click 'Add reaction'
- 3Type 'bug' for the bug emoji
- 4Add 'ticket' as another reaction option
- 5Click 'Deploy trigger'
Trigger > Test > View Sample Data
Test Slack Trigger
Go to any Slack channel and post a test message, then react with the bug emoji. Return to Pipedream and you should see the webhook data appear in the trigger test panel. The payload includes message text, user info, channel details, and timestamp.
- 1Post 'Testing bug report workflow' in a Slack channel
- 2React with the bug emoji to your message
- 3Return to Pipedream workflow
- 4Click 'Refresh' in the test section
Steps > Add Step > Jira > Create Issue
Add Jira Create Issue Step
Click the plus button below your trigger to add a new step. Search for Jira and select 'Create Issue' action. This step will take the Slack message data and create a properly formatted Jira ticket with title, description, and metadata.
- 1Click the '+' button below the trigger
- 2Search for 'jira' in the apps list
- 3Select 'Create Issue' action
- 4Click 'Continue'
Jira Step > Connect Account > API Token
Connect Jira Account
Click 'Connect new account' and enter your Jira domain URL (yourcompany.atlassian.net). Use your email and an API token for authentication - not your password. Generate the API token from your Atlassian Account Settings under Security.
- 1Click 'Connect new account'
- 2Enter your Jira URL (yourcompany.atlassian.net)
- 3Enter your email address
- 4Paste your API token (not password)
- 5Click 'Connect'
Jira Configuration > Field Mapping
Configure Issue Creation Fields
Map Slack data to Jira fields using the reference picker. Set Project to your bug tracking project key. Use the Slack message text as the Summary field, and include the full message thread in Description. Set Issue Type to 'Bug' and Priority based on the channel or user.
- 1Select your project from the Project dropdown
- 2Set Issue Type to 'Bug'
- 3Map Summary to steps.trigger.event.item.message.text
- 4Map Description to include user and timestamp
- 5Set Priority to 'Medium'
Steps > Add Step > Code > Node.js
Add Code Step for Context Enhancement
Insert a Node.js code step between Slack and Jira to clean up the message format and add context. This step extracts the original message, formats the description with user details, and creates a proper issue title from the message content.
- 1Click '+' above the Jira step
- 2Select 'Code' from the apps list
- 3Choose 'Run Node.js code'
- 4Replace default code with formatting logic
- 5Click 'Test step'
This Node.js code step cleans up Slack message formatting and extracts user context before sending to Jira. Paste it between your Slack trigger and Jira action steps.
JavaScript β Code Stepexport default defineComponent({βΈ Show code
export default defineComponent({
async run({ steps, $ }) {
const message = steps.trigger.event.item.message.text;... expand to see full code
export default defineComponent({
async run({ steps, $ }) {
const message = steps.trigger.event.item.message.text;
const user = steps.trigger.event.user;
const channel = steps.trigger.event.item.channel;
const ts = steps.trigger.event.item.message.ts;
// Clean up Slack formatting
const cleanMessage = message
.replace(/<@U[A-Z0-9]+>/g, '') // Remove user mentions
.replace(/<#C[A-Z0-9]+\|([^>]+)>/g, '#$1') // Clean channel refs
.replace(/([\s\S]*?)/g, '{code}$1{code}') // Convert code blocks
.trim();
// Create Jira-formatted description
const description = `*Reported by:* ${user.real_name || user.name}
*Channel:* ${channel.name}
*Timestamp:* ${new Date(ts * 1000).toLocaleString()}
*Issue Details:*
${cleanMessage}
[View in Slack|https://yourworkspace.slack.com/archives/${channel.id}/p${ts.replace('.', '')}]`;
// Generate summary (max 100 chars for Jira)
const summary = cleanMessage.length > 97
? cleanMessage.substring(0, 97) + '...'
: cleanMessage;
return {
summary,
description,
reporter_email: user.profile?.email,
channel_name: channel.name,
slack_link: `https://yourworkspace.slack.com/archives/${channel.id}/p${ts.replace('.', '')}`
};
},
});Workflow > Deploy > Test Complete Flow
Test Complete Workflow
Deploy the workflow and test end-to-end by reacting to another Slack message with your bug emoji. Check your Jira project to verify the ticket was created with correct formatting, title, and description. The workflow should complete in under 5 seconds.
- 1Click 'Deploy' at the top right
- 2Post a new test message in Slack
- 3React with your configured emoji
- 4Check Jira for the new issue
- 5Verify all fields populated correctly
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 Pipedream for this if your team codes and needs custom message parsing logic. The Node.js code steps let you clean up Slack formatting, extract user context, and add conditional routing that other platforms can't match. Skip it if you just want basic message-to-ticket conversion without customization - Zapier handles simple field mapping faster.
Webhook triggers cost 1 credit per reaction. At 200 bug reports per month, you'll spend $2 on the Developer plan. Make costs $9/month minimum for the same volume. Zapier's $20 Professional plan includes 1000 tasks. Pipedream wins on pricing if you stay under 1000 credits monthly.
Zapier's Slack integration sees message edits and thread replies that Pipedream misses. Make has better Jira field validation and will show you exactly which required fields are missing before you deploy. n8n's self-hosted option costs nothing after setup. But Pipedream's instant webhook processing beats everyone - your tickets appear in Jira within 2 seconds of the emoji reaction.
You'll hit Slack's nested data structures first - message content lives at steps.trigger.event.item.message.text, not where you expect. Jira project permissions will block API calls if your integration user lacks Create Issues rights. The biggest gotcha: Slack emoji names vary by workspace, so :bug: might be :beetle: or :ladybug: depending on your custom emoji setup.
Ideas for what to build next
- βAdd Slash Command Trigger β Create /bug and /ticket slash commands that let users file issues directly from any channel without emoji reactions.
- βSet Up Jira to Slack Updates β Build reverse sync that posts Slack updates when Jira issues change status, keeping the reporter informed of progress.
- βAuto-Assign Based on Keywords β Parse message content for keywords like 'login', 'payment', 'api' and automatically assign issues to the right team members.
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