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

How to route GitHub bug reports to Jira with Power Automate

Auto-creates Jira bug tickets when GitHub issues get labeled 'bug', mapping severity from GitHub labels to Jira priority fields.

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

Best for

Development teams already using Microsoft 365 who need bug reports flowing from GitHub to Jira without manual copying.

Not ideal for

Teams needing complex conditional routing or custom field transformations beyond basic label mapping.

Sync type

real-time

Use case type

routing

Real-World Example

πŸ’‘

A 25-person development team gets 40-60 bug reports per week across 8 GitHub repositories. Before automation, the product manager spent 2 hours daily copying issue details into Jira and assigning severity levels. Now bug reports flow automatically 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 Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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.

GitHub account with admin access to the target repository for webhook creation
Jira Cloud instance with permission to create issues in the target project
Jira API token generated from Atlassian account settings
Microsoft 365 account with Power Automate license (included in most business plans)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue Titlesummary
Issue Descriptiondescription
Issue Typeissuetype
Project Keyproject
3 optional fieldsβ–Έ show
Priority Levelpriority
Reporterreporter
Labelslabels

Step-by-Step Setup

1

My flows > New flow > Automated cloud flow

Create new automated flow

Navigate to make.powerautomate.com and sign in. Click 'My flows' in the left sidebar, then the 'New flow' button. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'GitHub Bug to Jira Router'.

  1. 1Click 'My flows' in left navigation
  2. 2Click the 'New flow' dropdown button
  3. 3Select 'Automated cloud flow'
  4. 4Type 'GitHub Bug to Jira Router' as flow name
βœ“ What you should see: You should see the flow creation dialog with trigger selection options.
2

Trigger selection > Search > GitHub > When an issue is updated

Configure GitHub webhook trigger

In the trigger selection screen, search for 'GitHub' and select the GitHub connector. Choose 'When an issue is updated' trigger. This fires whenever issue labels change, get added, or removed in your repository.

  1. 1Type 'GitHub' in the search box
  2. 2Click the GitHub connector icon
  3. 3Select 'When an issue is updated' trigger
  4. 4Click 'Create' to proceed
βœ“ What you should see: The GitHub trigger step appears in your flow with connection prompts.
⚠
Common mistake β€” The trigger fires on ANY issue update, not just label changes. We'll filter for bug labels in the next step.
Power Automate
+
click +
search apps
GitHub
GI
GitHub
Configure GitHub webhook tri…
GitHub
GI
module added
3

GitHub trigger > Sign in

Connect your GitHub account

Click 'Sign in' in the GitHub trigger step. Authenticate with your GitHub account that has access to the repositories containing bug reports. Grant the requested permissions for reading issues and webhooks.

  1. 1Click 'Sign in' button in the GitHub step
  2. 2Enter your GitHub username and password
  3. 3Click 'Authorize PowerAutomate' if prompted
  4. 4Select the organization if you have multiple
βœ“ What you should see: You should see your GitHub username displayed in the connection field.
⚠
Common mistake β€” If you can't see your organization's repos, check that Power Automate has been approved by your GitHub organization admin.
Power Automate settings
Connection
Choose a connection…Add
click Add
GitHub
Log in to authorize
Authorize Power Automate
popup window
βœ“
Connected
green checkmark
4

GitHub trigger > Repository selection

Select repository and configure trigger

Choose your target repository from the dropdown. This should be the repo where developers label issues as bugs. Leave the other trigger settings at their defaults - we want all issue updates to fire the trigger.

  1. 1Click the Repository dropdown
  2. 2Select your main development repository
  3. 3Leave 'Events' field as default
  4. 4Click outside the step to save settings
βœ“ What you should see: The repository name should display in the dropdown field.
5

New step > Control > Condition

Add condition to filter bug labels

Click 'New step' below the GitHub trigger. Search for 'condition' and select the Control connector's Condition action. This filters for issues that actually have bug labels before creating Jira tickets.

  1. 1Click '+ New step' button
  2. 2Type 'condition' in the search box
  3. 3Select the Control connector
  4. 4Click 'Condition' action
βœ“ What you should see: A condition step appears with Yes/No branches for your logic.
⚠
Common mistake β€” Without this filter, every issue update creates a Jira ticket, including non-bug issues and duplicate tickets.
GitHub
GI
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Jira
JI
notified
6

Condition > Dynamic content > labels

Configure bug label condition

In the condition's left box, click and select 'labels' from the GitHub dynamic content. Set the middle dropdown to 'contains'. In the right box, type 'bug' (or whatever label your team uses for bugs).

  1. 1Click the left condition field
  2. 2Select 'labels' from GitHub dynamic content
  3. 3Set middle dropdown to 'contains'
  4. 4Type 'bug' in the right field
βœ“ What you should see: The condition should read 'labels contains bug'.
⚠
Common mistake β€” This is case-sensitive. If your team uses 'Bug' with capital B, match that exactly.
7

Condition Yes branch > Add action > Jira > Create a new issue

Add Jira connection in Yes branch

Click 'Add an action' under the Yes branch (when bug label is found). Search for 'Jira' and select the Jira Software Cloud connector. Choose 'Create a new issue' action to generate bug tickets.

  1. 1Click 'Add an action' under Yes branch
  2. 2Type 'Jira' in connector search
  3. 3Select 'Jira Software Cloud'
  4. 4Choose 'Create a new issue' action
βœ“ What you should see: The Jira step appears with connection and configuration fields.
8

Jira step > Sign in > API token

Connect to Jira Cloud

Click 'Sign in' for the Jira connection. Enter your Jira Cloud site URL (yourcompany.atlassian.net), email, and API token. Get your API token from Atlassian account settings if you don't have one.

  1. 1Click 'Sign in' in the Jira step
  2. 2Enter your Jira site URL
  3. 3Enter your email address
  4. 4Paste your Jira API token
βœ“ What you should see: Connection shows as successful with your Jira site name.
⚠
Common mistake β€” Jira Server (on-premise) requires different authentication. This only works for Jira Cloud instances.
9

Jira step > Field mapping

Map GitHub issue to Jira fields

Select your Jira project from the dropdown. Set Issue Type to 'Bug'. Map the Summary field to GitHub's 'title' using dynamic content. Map Description to 'body' from GitHub. This creates structured bug tickets.

  1. 1Select your target Jira project
  2. 2Set Issue Type to 'Bug'
  3. 3Click Summary field and select 'title' from GitHub
  4. 4Click Description and select 'body' from GitHub
βœ“ What you should see: Jira fields should show GitHub dynamic content tokens in blue pills.
⚠
Common mistake β€” If 'Bug' issue type doesn't exist in your project, ask your Jira admin to add it or use 'Task' instead.
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
10

Jira step > Priority > Expression

Add priority mapping with expressions

Click the Priority field in Jira step. Click 'Expression' tab and enter: if(contains(triggerBody()?['issue']?['labels'], 'critical'), 'Highest', if(contains(triggerBody()?['issue']?['labels'], 'high'), 'High', 'Medium')). This maps GitHub labels to Jira priority levels.

  1. 1Click Priority dropdown in Jira step
  2. 2Click 'Expression' tab at top
  3. 3Paste the priority mapping expression
  4. 4Click 'OK' to save expression
βœ“ What you should see: Priority field shows the expression formula instead of a static value.
11

Top toolbar > Save > Test

Test and activate flow

Click 'Save' in the top right to save your flow. Navigate to your GitHub repo, create a test issue, and add both 'bug' and 'critical' labels. Check your Jira project for the new bug ticket within 60 seconds.

  1. 1Click 'Save' button in top toolbar
  2. 2Go to your GitHub repository
  3. 3Create a new issue with 'bug' label
  4. 4Check Jira for the created ticket
βœ“ What you should see: A new Jira bug ticket appears with Highest priority and GitHub issue details.
⚠
Common mistake β€” The first webhook delivery can take 2-3 minutes. Subsequent triggers fire within 30 seconds.

Add this expression in the Jira Assignee field to automatically assign bugs based on GitHub repository. Paste it in the Expression tab when configuring the assignee field.

JavaScript β€” Code Stepif(equals(triggerBody()?['repository']?['name'], 'frontend-app'), '[email protected]',
β–Έ Show code
if(equals(triggerBody()?['repository']?['name'], 'frontend-app'), '[email protected]',
  if(equals(triggerBody()?['repository']?['name'], 'api-backend'), '[email protected]',
    if(equals(triggerBody()?['repository']?['name'], 'mobile-ios'), '[email protected]',

... expand to see full code

if(equals(triggerBody()?['repository']?['name'], 'frontend-app'), '[email protected]',
  if(equals(triggerBody()?['repository']?['name'], 'api-backend'), '[email protected]',
    if(equals(triggerBody()?['repository']?['name'], 'mobile-ios'), '[email protected]',
      '[email protected]'
    )
  )
)
Power Automate
β–Ά Test flow
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 Power Automate for this if you're already in the Microsoft ecosystem and need reliable webhook delivery without vendor management overhead. The GitHub and Jira connectors handle authentication renewal automatically, and webhook registration happens behind the scenes. Skip Power Automate if you need complex field transformations or multiple conditional branches - Make handles those scenarios better.

Cost

Real math: GitHub webhook triggers are free, and Jira actions cost 1 run per bug report. At 50 bug reports per month, you'll use 50 runs total. Most Microsoft 365 business plans include 2,000 runs monthly, so this workflow costs effectively nothing unless you're processing 500+ bugs monthly.

Tradeoffs

Make wins on conditional logic complexity - their visual router handles 5+ different Jira projects cleaner than nested Power Automate conditions. Zapier's GitHub integration updates faster and includes more trigger options like specific label additions. n8n gives you raw webhook payload access for custom GitHub Enterprise setups. But Power Automate integrates natively with Teams for notifications and SharePoint for bug report documentation without extra authentication steps.

You'll hit GitHub webhook delivery delays during high-traffic periods - expect 2-3 minute delays instead of the promised 30 seconds. Jira Cloud API occasionally returns 500 errors during maintenance windows, failing your flow until the next retry. Priority mapping breaks if your team starts using emoji labels or changes label naming conventions without updating the expressions.

Ideas for what to build next

  • β†’
    Add reverse sync for status updates β€” Create a second flow that updates GitHub issue labels when Jira tickets move to Done or Won't Fix status.
  • β†’
    Route to different Jira projects by repository β€” Modify the condition to check repository name and create tickets in project-specific Jira instances.
  • β†’
    Send Slack notifications for critical bugs β€” Add a Slack action after Jira creation to notify #dev-urgent channel when priority is Highest.

Related guides

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