Intermediate~15 min setupDeveloper Tools & Project ManagementVerified April 2026
GitHub logo
Jira logo

How to Route Bug Reports from GitHub to Jira with Pipedream

Automatically creates Jira bug tickets when GitHub issues are labeled 'bug' with severity mapping from GitHub labels.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Development teams who track bugs in Jira but receive reports through GitHub issues.

Not ideal for

Teams that want two-way sync or need to route multiple issue types beyond bugs.

Sync type

real-time

Use case type

routing

Real-World Example

πŸ’‘

A 20-person development team gets bug reports filed as GitHub issues but manages their sprint work in Jira. Before automation, someone manually checked GitHub twice daily and created duplicate Jira tickets, missing urgent bugs for 3-6 hours. Now critical bugs flow into Jira within 30 seconds of labeling.

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

Admin access to GitHub repository where you want to monitor issues
Jira project with Bug issue type enabled and create issue permissions

Optional

GitHub labels configured for severity levels like critical, high, medium
Jira custom fields set up if you want to store GitHub issue URLs

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue Titlesummary
Issue Descriptiondescription
Priority Levelpriority
Issue Typeissuetype
Projectproject
3 optional fieldsβ–Έ show
Reporterreporter
Labelslabels
Source URLcustomfield_10001

Step-by-Step Setup

1

Workflows > New > Workflow

Create new workflow

Log into pipedream.com and click the blue New button in the top right. Select Workflow from the dropdown menu. You'll land on a blank workflow canvas with a trigger step already added at the top.

  1. 1Click New in the top navigation
  2. 2Select Workflow from the dropdown
  3. 3You'll see an empty trigger step
βœ“ What you should see: You should see a workflow canvas with one empty trigger step labeled 'Select a trigger'.
2

Trigger > GitHub > New Issue Event

Add GitHub webhook trigger

Click on the trigger step and search for GitHub in the app list. Select 'New Issue Event' from the available triggers. This creates a webhook endpoint that GitHub will call whenever issue events happen in your repository.

  1. 1Click the trigger step
  2. 2Search for 'GitHub' in the app selector
  3. 3Choose 'New Issue Event' from the trigger list
  4. 4Click Continue
βœ“ What you should see: You'll see GitHub authentication options and webhook configuration fields.
⚠
Common mistake β€” The webhook URL won't appear until you connect your GitHub account in the next step.
Pipedream
+
click +
search apps
GitHub
GI
GitHub
Add GitHub webhook trigger
GitHub
GI
module added
3

GitHub Trigger > Connect Account

Connect GitHub account

Click Connect Account and authorize Pipedream to access your GitHub repositories. After OAuth completes, select your target repository from the Repository dropdown. Choose 'issues' from the Events field to only listen for issue-related changes.

  1. 1Click Connect Account
  2. 2Complete GitHub OAuth in the popup
  3. 3Select your repository from the dropdown
  4. 4Set Events to 'issues'
βœ“ What you should see: You'll see a webhook URL displayed and your repository name selected.
⚠
Common mistake β€” You need admin access to the repository to create webhooks.
Pipedream settings
Connection
Choose a connection…Add
click Add
GitHub
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
4

Add Step > Filter

Add filter for bug labels

Click the plus icon below your trigger to add a new step. Search for 'Filter' and select it. This prevents the workflow from running on every GitHub issue event. You only want it to proceed when the action is 'labeled' and the label name is 'bug'.

  1. 1Click the + icon below the trigger
  2. 2Search for 'Filter'
  3. 3Select the Filter step
  4. 4Set condition to continue only if specific criteria match
βœ“ What you should see: You'll see a filter configuration with condition fields to fill out.
⚠
Common mistake β€” Without this filter, every issue comment and edit will trigger Jira ticket creation.
GitHub
GI
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Jira
JI
notified
5

Filter > Conditions

Configure bug label condition

In the filter condition, set the first dropdown to 'steps.trigger.event.action' and choose 'equal to'. Type 'labeled' in the value field. Add a second condition where 'steps.trigger.event.label.name' equals 'bug'. Set the logic to AND so both conditions must be true.

  1. 1Set first condition: action equals 'labeled'
  2. 2Click Add Condition
  3. 3Set second condition: label.name equals 'bug'
  4. 4Change logic operator to AND
βœ“ What you should see: Filter shows two conditions joined by AND, checking for labeled action and bug label.
⚠
Common mistake β€” Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends β€” a single capital letter difference will block everything.
6

Add Step > Code > Run Node.js Code

Add severity mapping code step

Add another step and choose 'Run Node.js Code'. This step will examine the GitHub issue labels and map them to Jira severity levels. GitHub might use labels like 'critical', 'high', 'medium' that need conversion to Jira's priority scheme.

  1. 1Click + to add another step
  2. 2Select 'Run Node.js Code'
  3. 3Name the step 'Map Severity'
  4. 4Clear the default code
βœ“ What you should see: You'll see a code editor with export default defineComponent({}) template.
⚠
Common mistake β€” Make sure your GitHub label names match the mapping logic you write.

This code examines all GitHub issue labels and maps severity indicators to Jira priorities. Paste it in the Node.js code step between the filter and Jira creation.

JavaScript β€” Code Stepexport default defineComponent({
β–Έ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const issue = steps.trigger.event.issue;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const issue = steps.trigger.event.issue;
    const labels = issue.labels?.map(l => l.name.toLowerCase()) || [];
    
    // Map GitHub labels to Jira priorities
    let priority = 'Medium'; // default
    if (labels.includes('critical') || labels.includes('p0')) {
      priority = 'Highest';
    } else if (labels.includes('high') || labels.includes('p1')) {
      priority = 'High';
    } else if (labels.includes('low') || labels.includes('p3')) {
      priority = 'Low';
    }
    
    // Extract additional context
    const severity = labels.find(l => l.startsWith('severity-'));
    const component = labels.find(l => l.startsWith('component-'));
    
    return {
      title: issue.title,
      description: `${issue.body}\n\nGitHub Issue: ${issue.html_url}\nReporter: ${issue.user.login}`,
      priority,
      severity,
      component: component?.replace('component-', ''),
      originalLabels: labels,
      githubId: issue.id
    };
  }
});
GitHub fields
title
body
state
html_url
user.login
available as variables:
1.props.title
1.props.body
1.props.state
1.props.html_url
1.props.user.login
7

Code Step > Editor

Write severity mapping logic

Replace the default code with logic that checks all labels on the GitHub issue and converts them to Jira priority names. The code should return both the mapped priority and extract other useful fields like title and description for the Jira ticket.

  1. 1Delete the template code
  2. 2Paste the severity mapping code
  3. 3Update the label names to match your GitHub setup
  4. 4Test with sample data
βœ“ What you should see: Code editor shows your mapping function and any console output from testing.
8

Add Step > Jira > Create Issue

Add Jira create issue step

Add a new step and search for Jira. Select 'Create Issue' from the available actions. This step will take the mapped data from your code step and create the actual bug ticket in your Jira project.

  1. 1Click + to add a step
  2. 2Search for 'Jira'
  3. 3Choose 'Create Issue' action
  4. 4Click Continue
βœ“ What you should see: Jira authentication screen appears with connection options.
⚠
Common mistake β€” Jira Cloud and Server have different authentication methods - choose the right one.
9

Jira Step > Connect Account > Configure Issue

Connect Jira and configure project

Connect your Jira account through OAuth or API token depending on your Jira type. Once connected, select your target project from the Project dropdown. Set Issue Type to 'Bug' and map the Summary field to the GitHub issue title from your trigger data.

  1. 1Click Connect Account and complete Jira auth
  2. 2Select your project from the dropdown
  3. 3Set Issue Type to 'Bug'
  4. 4Map Summary to GitHub issue title
βœ“ What you should see: Jira project is selected and you see field mapping options for the new ticket.
⚠
Common mistake β€” The Issue Type dropdown only shows types enabled in your Jira project settings.
10

Jira Step > Field Mapping

Map remaining Jira fields

Fill out the Description field with the GitHub issue body text. Set Priority using the mapped severity from your code step. Add the GitHub issue URL to a custom field or in the description so your team can reference the original report.

  1. 1Map Description to GitHub issue body
  2. 2Set Priority from code step output
  3. 3Add GitHub URL to description or custom field
  4. 4Configure any required custom fields
βœ“ What you should see: All required Jira fields show mapped values from GitHub trigger or code step.
11

Test > Select Event Data

Test the workflow

Click the Test button in the top right to run your workflow with sample data. If you don't see recent GitHub events in the test data dropdown, go create a test issue in GitHub, add the 'bug' label, then come back and test. Check that your Jira project shows the new bug ticket.

  1. 1Click Test in the top navigation
  2. 2Select a recent GitHub issue event
  3. 3Click Run Test
  4. 4Check Jira project for new ticket
βœ“ What you should see: Test completes successfully and a new bug ticket appears in your Jira project.
⚠
Common mistake β€” Test data only includes events from the last 30 days - create a fresh test issue if needed.
Pipedream
β–Ά Deploy & test
executed
βœ“
GitHub
βœ“
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 Pipedream for this if your team codes in JavaScript and wants instant webhook processing. The Node.js code steps let you build complex label-to-priority mapping logic that handles edge cases. GitHub webhooks fire within 2-3 seconds of labeling, faster than polling-based platforms. Skip Pipedream if your team prefers visual workflow builders without code.

Cost

Each workflow run consumes 1 credit. At 50 bug reports per month, you'll use 50 credits which costs $0 on the free tier. Make charges $9/month minimum for webhooks. Zapier needs the $20/month plan for webhooks. Pipedream wins on cost until you hit 10,000 credits monthly.

Tradeoffs

Make has better visual debugging when workflows fail - you see exactly which module broke and why. Zapier's formatter handles text manipulation without code. n8n gives you more GitHub trigger options like PR events and repository changes. Power Automate integrates better if you're already using Microsoft tools. But Pipedream's instant webhook processing beats all of them for time-sensitive bug routing where every minute matters.

You'll hit GitHub's webhook delivery retry logic if your workflow fails repeatedly - GitHub will eventually disable the webhook. Jira's API sometimes returns cryptic required field errors that don't match what you see in the UI. The GitHub labels array comes back empty if the issue has no labels, which breaks code expecting at least one element. Always add null checks and fallback values in your mapping logic.

Ideas for what to build next

  • β†’
    Add assignee mapping β€” Map GitHub issue assignees to corresponding Jira users based on username or email matching.
  • β†’
    Create reverse status updates β€” Build a second workflow that comments on GitHub issues when Jira bug status changes to Done or Won't Fix.
  • β†’
    Route to different projects β€” Extend the code step to examine component labels and route bugs to appropriate Jira projects automatically.

Related guides

Was this guide helpful?
← GitHub + Jira overviewPipedream profile β†’