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

How to PR to Jira status with Power Automate

Auto-update Jira ticket status to 'In Review' when a GitHub pull request is opened with the ticket key in the branch name.

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

Best for

Development teams using GitHub and Jira who want automatic ticket status updates without manual intervention

Not ideal for

Teams needing complex branch name parsing or multiple status transitions based on PR events

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-developer team at a fintech startup uses this to move Jira tickets to 'In Review' the moment someone opens a PR with a branch like 'feature/PROJ-123-payment-flow'. Before automation, developers forgot to update Jira 40% of the time, causing confusion during standups about actual work progress.

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 repository admin or write access to configure webhooks
Jira instance with API token generated from account security settings
Jira project permissions to view and edit issues
Consistent branch naming convention that includes Jira ticket IDs

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue IDkey
Statusstatus
4 optional fields▸ show
Pull Request URLcomment
Branch Namecustomfield_branch
Authorreporter
PR Titlesummary

Step-by-Step Setup

1

My flows > + New flow > Automated cloud flow

Create automated cloud flow

Navigate to make.powerautomate.com and sign in. Click 'My flows' in the left sidebar, then the '+ New flow' button in the top toolbar. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'GitHub PR to Jira Status' and search for 'GitHub' in the trigger selection.

  1. 1Click '+ New flow' in the top toolbar
  2. 2Select 'Automated cloud flow'
  3. 3Enter flow name 'GitHub PR to Jira Status'
  4. 4Search for 'GitHub' in the trigger box
  5. 5Select 'When a pull request is opened' trigger
What you should see: You should see the GitHub connector selected with the pull request trigger configured in the flow designer.
2

GitHub connector > Sign in

Configure GitHub connection

Click 'Sign in' to authenticate with GitHub. You'll be redirected to GitHub's OAuth page where you need to authorize Power Automate access to your repositories. Select the organization and repository where you want to monitor pull requests. The connection will validate and show a green checkmark when successful.

  1. 1Click 'Sign in' button in the GitHub trigger
  2. 2Authorize Power Automate in GitHub OAuth dialog
  3. 3Select your organization from the dropdown
  4. 4Choose the target repository
  5. 5Click 'Save' to confirm the connection
What you should see: You should see your GitHub account name displayed with a green connected status below the trigger configuration.
Common mistake — You need admin or write access to the repository to set up webhooks - read-only access won't work.
3

+ New step > Control > Condition

Add condition to check branch name

Click '+ New step' below the GitHub trigger. Search for 'Condition' and select the Control connector's Condition action. This will filter PRs that contain Jira ticket keys in their branch names. Set up the condition to check if the branch name contains your Jira project prefix pattern.

  1. 1Click '+ New step' under the GitHub trigger
  2. 2Search for 'Condition' in the connector list
  3. 3Select 'Condition' from Control connector
  4. 4Click the first value field
  5. 5Select 'Head ref' from GitHub dynamic content
What you should see: You should see a diamond-shaped condition block with 'Head ref' populated in the left comparison field.
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.
GitHub
GI
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Jira
JI
notified
4

Condition > contains > PROJ-

Configure branch name pattern matching

In the condition's middle dropdown, select 'contains'. In the right value field, enter your Jira project key pattern like 'PROJ-' or whatever prefix your team uses for ticket IDs. This ensures the automation only fires when branch names include actual Jira ticket references, not for branches like 'hotfix' or 'main'.

  1. 1Click the middle dropdown in the condition
  2. 2Select 'contains' from the list
  3. 3Click the right value field
  4. 4Type your Jira project prefix like 'PROJ-'
  5. 5Verify the condition shows 'Head ref contains PROJ-'
What you should see: The condition should display as 'Head ref contains PROJ-' with both values properly configured.
Common mistake — Use your actual Jira project key prefix - this is case-sensitive and must match your branch naming convention exactly.
5

If yes > + Add an action > Jira > Update work item

Add Jira connection in Yes branch

Click '+ Add an action' inside the 'If yes' branch of the condition. Search for 'Jira' and select the Jira connector. Choose 'Update work item' as the action since we're changing the ticket status. Power Automate will prompt you to create a connection to your Jira instance.

  1. 1Click '+ Add an action' in the 'If yes' section
  2. 2Search for 'Jira' in the connector search
  3. 3Select the Jira connector
  4. 4Choose 'Update work item' action
  5. 5Click 'Sign in' to authenticate with Jira
What you should see: You should see the Jira Update work item action added with authentication fields visible.
6

Jira connection > Server URL, Email, API Token

Authenticate with Jira

Enter your Jira instance URL (like https://yourcompany.atlassian.net), email address, and API token. Generate the API token from your Jira account settings under Security. Power Automate will test the connection and show available projects once authenticated successfully.

  1. 1Enter your Jira URL in Server field
  2. 2Add your email address
  3. 3Paste your Jira API token (create from Jira account settings)
  4. 4Click 'Create' to establish connection
  5. 5Wait for green connection confirmation
What you should see: You should see 'Connected to Jira' with your instance URL and available project dropdowns populated.
Common mistake — Generate API tokens from Jira Account Settings > Security > API tokens - regular passwords won't work.
7

If yes > + Add an action > Data Operations > Compose

Extract ticket ID from branch name

Before updating Jira, we need to parse the ticket ID from the branch name. Click '+ Add an action' above the Jira step and search for 'Compose'. Add a Compose action to extract the ticket ID using Power Automate expressions. This handles branches like 'feature/PROJ-123-new-feature' to get 'PROJ-123'.

  1. 1Click '+ Add an action' above the Jira update step
  2. 2Search for 'Compose' and select Data Operations > Compose
  3. 3Click in the Inputs field
  4. 4Switch to Expression tab
  5. 5Enter expression to extract ticket ID from branch name
What you should see: You should see a Compose action ready to accept the ticket ID extraction expression.
8

Compose > Inputs > Expression

Configure ticket ID extraction expression

In the Compose action's expression field, enter: split(split(triggerOutputs()?['body/pull_request/head/ref'], '-')[0], '/')[1]. This expression splits the branch name on slashes, takes the last part, then splits on dashes to reconstruct the ticket ID format. Test this logic matches your branch naming pattern.

  1. 1Click Expression tab in the inputs field
  2. 2Enter the ticket ID extraction expression
  3. 3Verify the expression syntax is correct
  4. 4Click 'OK' to save the expression
  5. 5Rename the Compose action to 'Extract Ticket ID'
What you should see: The Compose action should show the expression with proper syntax highlighting and be renamed to 'Extract Ticket ID'.
Common mistake — This expression assumes branches follow 'feature/PROJ-123-description' format - modify the split logic for different patterns.
9

Update work item > Issue ID, Status

Configure Jira work item update

In the Update work item action, set the Issue ID or Key field to reference the output from your Extract Ticket ID compose action. Select your Jira project from the dropdown. Choose the fields to update - typically you'll set the Status field to 'In Review' or whatever status represents code review in your workflow.

  1. 1Click Issue ID or Key field
  2. 2Select 'Outputs' from Extract Ticket ID dynamic content
  3. 3Select your project from Project dropdown
  4. 4Click 'Show advanced options' if needed
  5. 5Set Status field to 'In Review'
  6. 6Configure any other required fields
What you should see: The Jira action should show the ticket ID from the compose step and Status set to your target status value.
Common mistake — Status values must match exactly what's configured in your Jira workflow - check the exact spelling and capitalization.
10

Save > Test flow

Test and save the flow

Click 'Save' in the top right to save your flow. Create a test branch with a Jira ticket ID in the name, then open a pull request. Monitor the flow run history to verify it triggers correctly and updates the Jira ticket status. Check both Power Automate run history and the actual Jira ticket to confirm the status change.

  1. 1Click 'Save' in the top toolbar
  2. 2Create a test branch like 'feature/PROJ-123-test'
  3. 3Open a pull request from that branch
  4. 4Go to 'Run history' to see flow execution
  5. 5Verify the Jira ticket status changed to 'In Review'
What you should see: You should see a successful flow run in the history and the corresponding Jira ticket should show status 'In Review'.

This expression handles complex branch naming patterns and extracts clean ticket IDs. Paste it in the Compose action's expression field to handle branches like 'feature/team/PROJ-123-description'.

JavaScript — Code Step// Extract ticket ID from branch name with flexible parsing
▸ Show code
// Extract ticket ID from branch name with flexible parsing
first(filter(split(triggerOutputs()?['body/pull_request/head/ref'], '/'), 
  lambda('item', contains(item(), 'PROJ-'))))

... expand to see full code

// Extract ticket ID from branch name with flexible parsing
first(filter(split(triggerOutputs()?['body/pull_request/head/ref'], '/'), 
  lambda('item', contains(item(), 'PROJ-'))))

// Alternative for multiple project prefixes
first(filter(split(triggerOutputs()?['body/pull_request/head/ref'], '/'),
  lambda('item', or(contains(item(), 'PROJ-'), contains(item(), 'FEAT-'), contains(item(), 'BUG-')))))

// Extract just the ticket number if you need it separately
last(split(first(filter(split(triggerOutputs()?['body/pull_request/head/ref'], '/'), 
  lambda('item', contains(item(), 'PROJ-')))), '-'))
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 Microsoft Power Automate for this if your team is already in the Microsoft ecosystem and needs enterprise-grade security controls. Power Automate handles GitHub webhooks reliably and the Jira connector includes proper error handling for ticket updates. The expression language works well for branch name parsing. Skip Power Automate if you need complex conditional logic or your team prefers open-source solutions like n8n.

Cost

This costs 2 flow runs per pull request - one for the trigger and one for the Jira update. At 100 PRs per month, you'll use 200 runs total. Power Automate includes 2,000 runs in the $15/month plan, so this automation costs effectively nothing until you hit high volumes. Zapier charges per trigger at their lowest tier, making Power Automate cheaper for teams opening 50+ PRs monthly.

Tradeoffs

Zapier's GitHub integration offers more trigger options like PR status changes and has better branch name parsing built-in. Make provides superior error handling with automatic retries and clearer debugging when Jira updates fail. n8n gives you complete control over the ticket ID extraction logic with JavaScript expressions that are easier to debug than Power Automate's formula syntax. Pipedream offers real-time webhook processing with better latency. But Power Automate wins on enterprise compliance - it inherits your Microsoft 365 security policies and audit logging without extra configuration.

You'll hit issues with branch naming edge cases that break the ticket ID extraction. Teams often use prefixes like 'feature/team-name/PROJ-123' or suffixes that confuse the parsing logic. Jira workflow transitions are another pain point - tickets in 'Done' status usually can't move back to 'In Review', causing silent failures. The GitHub webhook occasionally delivers duplicate events during heavy repository activity, so add duplicate detection if your team merges frequently throughout the day.

Ideas for what to build next

  • Add reverse sync for PR mergeMove Jira tickets to 'Done' when pull requests are merged or closed. Requires additional GitHub trigger for PR state changes.
  • Include PR details in Jira commentsAdd the PR title, description, and link as comments on the Jira ticket for better context during review.
  • Handle multiple ticket referencesModify the extraction logic to handle branches that reference multiple tickets like 'feature/PROJ-123-PROJ-124-shared-component'.

Related guides

Was this guide helpful?
GitHub + Jira overviewPower Automate profile →