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

How to Generate Release Notes from GitHub to Jira with Power Automate

Automatically compile release notes from Jira ticket summaries when GitHub releases are published and update ticket status to Done.

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

Best for

Development teams managing 10+ tickets per release who need automated documentation and status updates

Not ideal for

Teams with complex Jira workflows requiring multiple status transitions or custom field validation

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person product team at a B2B SaaS company releases bi-weekly updates with 15-25 linked Jira tickets. Before automation, the release manager spent 45 minutes manually updating ticket statuses and copying summaries into release notes. Now release notes generate automatically within 3 minutes of tagging a release.

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 access to create webhooks and read releases
Jira project permissions to read issues and transition ticket status
Jira API token generated from Atlassian account settings
Consistent ticket referencing format in GitHub release descriptions
Known Jira transition ID for moving tickets to Done status

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue Keykey
Issue Summaryfields.summary
Issue Statusfields.status.name
Release Tag Name
Release Body
Repository Name
Transition IDtransition.id
Project Keyfields.project.key

Step-by-Step Setup

1

My flows > + New flow > Automated cloud flow

Create automated cloud flow

Navigate to make.powerautomate.com and sign in with your work account. Click 'My flows' in the left sidebar, then the blue '+ New flow' button. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'GitHub Release Notes Generator' and leave the trigger selection for the next step.

  1. 1Click 'My flows' in the left navigation
  2. 2Click the blue '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Enter 'GitHub Release Notes Generator' as the flow name
  5. 5Click 'Skip' on trigger selection
What you should see: You should see the flow designer with a blank canvas and 'Choose your flow's trigger' at the top.
2

Flow designer > Choose trigger > GitHub > When a release is created

Add GitHub release webhook trigger

Click 'Choose your flow's trigger' and search for 'GitHub'. Select the GitHub connector, then choose 'When a release is created' trigger. You'll need to sign in to GitHub and authorize Power Automate to access your repositories. Select your target repository from the dropdown that appears.

  1. 1Click 'Choose your flow's trigger'
  2. 2Type 'GitHub' in the search box
  3. 3Select the GitHub connector
  4. 4Choose 'When a release is created' trigger
  5. 5Sign in to GitHub when prompted
  6. 6Select your repository from the dropdown
What you should see: The trigger shows your selected repository name with a green checkmark indicating successful connection.
Common mistake — GitHub connector requires admin access to the repository - owner permissions won't work for webhook creation.
Power Automate
+
click +
search apps
GitHub
GI
GitHub
Add GitHub release webhook t…
GitHub
GI
module added
3

Flow designer > + New step > Compose

Parse release body for ticket references

Add a 'Compose' action to extract Jira ticket IDs from the release notes. GitHub releases often contain ticket references like 'Fixes ABC-123' or 'Closes DEF-456'. We'll use a regular expression to find these patterns. In the Compose action, add an expression that searches the release body for your Jira project keys.

  1. 1Click '+ New step' below the GitHub trigger
  2. 2Search for 'Compose' and select it
  3. 3Click in the Inputs field
  4. 4Select 'Expression' tab
  5. 5Enter the regex formula for ticket extraction
What you should see: The Compose action shows your expression with dynamic content from the GitHub trigger selected.
Common mistake — Make sure your regex pattern matches your actual Jira project key format - test with a few recent release descriptions first.
4

Flow designer > + New step > Initialize variable

Add variable for ticket list

Initialize an array variable to store the Jira ticket IDs we found. Click 'New step' and search for 'Initialize variable'. Set the variable name to 'TicketIDs', type to 'Array', and value to the output from the previous Compose action. This variable will hold all ticket references for processing.

  1. 1Click '+ New step'
  2. 2Search for 'Initialize variable' and select it
  3. 3Set Name to 'TicketIDs'
  4. 4Set Type to 'Array'
  5. 5Set Value to the Compose output from previous step
What you should see: The variable action shows 'TicketIDs' as an Array type with the compose output as its value.
5

Flow designer > + New step > Jira > Get issue

Connect to Jira

Add a Jira action to establish the connection. Search for 'Jira' and select 'Get issue' as a test action. You'll be prompted to create a connection to your Jira instance. Enter your Jira server URL, username, and API token. For Jira Cloud, use your email and an API token generated from your Atlassian account settings.

  1. 1Click '+ New step'
  2. 2Search for 'Jira' and select the connector
  3. 3Choose 'Get issue' action
  4. 4Click 'Create new' for connection
  5. 5Enter your Jira server URL
  6. 6Provide email and API token for authentication
What you should see: Jira connection shows green 'Connected' status with your instance URL visible.
Common mistake — Jira Server uses different auth than Jira Cloud - double-check you're using the right credential format for your setup.
6

Flow designer > + New step > Apply to each

Create apply to each loop

Add an 'Apply to each' control to process each ticket ID individually. This loop will iterate through our TicketIDs array and perform actions on each ticket. Select the TicketIDs variable as the input for the loop. All subsequent Jira actions will go inside this loop container.

  1. 1Click '+ New step'
  2. 2Search for 'Apply to each' under Control
  3. 3Select the control action
  4. 4Click in 'Select an output' field
  5. 5Choose 'TicketIDs' from dynamic content
What you should see: The Apply to each container appears with 'TicketIDs' selected as input and an empty action area inside.
7

Apply to each > Add an action > Jira > Get issue

Get ticket details inside loop

Inside the Apply to each loop, add a 'Get issue' Jira action. Set the Issue Key to the current item from the loop iteration. This will retrieve full ticket details including summary, description, and current status. We need this data to compile the release notes and check if status updates are needed.

  1. 1Click 'Add an action' inside the Apply to each loop
  2. 2Search for 'Get issue' under Jira
  3. 3Set Issue Key to 'Current item' from dynamic content
  4. 4Leave other fields at default values
What you should see: The Get issue action shows 'Current item' in the Issue Key field with Jira connection established.
Common mistake — If tickets don't exist or are restricted, this step will fail - add error handling for production workflows.
8

Apply to each > Add an action > Jira > Transition issue

Update ticket status to Done

Still inside the loop, add a 'Transition issue' Jira action. Set the Issue Key to current item and Transition to your 'Done' status ID. Different Jira projects use different transition IDs - you may need to check your project's workflow configuration. This marks each ticket as completed when the release is published.

  1. 1Click 'Add an action' inside the loop
  2. 2Search for 'Transition issue' under Jira
  3. 3Set Issue Key to 'Current item'
  4. 4Enter your Done transition ID number
  5. 5Add any required resolution fields
What you should see: The Transition issue action shows the current item as Issue Key and your Done transition configured.
Common mistake — Transition IDs vary by Jira project - use your browser's network tab to find the correct ID when manually transitioning a ticket.
9

Apply to each > Add an action > Append to array variable

Collect ticket summaries

Add an 'Append to array variable' action inside the loop to build your release notes content. Initialize a new string variable called 'ReleaseNotes' before the loop, then append each ticket's key and summary in a formatted string. This creates a bulleted list of completed features for your release documentation.

  1. 1Go back above the loop and add 'Initialize variable'
  2. 2Set name to 'ReleaseNotes', type to 'String', value empty
  3. 3Inside the loop, add 'Append to string variable'
  4. 4Select 'ReleaseNotes' as variable name
  5. 5Format the value as bullet points with ticket key and summary
What you should see: Each loop iteration adds a formatted line to the ReleaseNotes variable with ticket information.
10

Flow designer > + New step > GitHub > Create a comment

Create GitHub release comment

After the Apply to each loop completes, add a GitHub 'Create a comment' action. Set the repository to your connected repo, Issue Number to the release ID, and Body to your compiled ReleaseNotes variable. This adds the formatted ticket list as a comment on the GitHub release for easy reference.

  1. 1Click '+ New step' after the Apply to each loop
  2. 2Search for GitHub 'Create a comment'
  3. 3Select your repository
  4. 4Set Issue Number to release ID from trigger
  5. 5Set Body to ReleaseNotes variable content
What you should see: The GitHub comment action shows your repository selected and ReleaseNotes variable as the comment body.
Common mistake — GitHub releases don't support comments directly - this creates a comment on the associated Git tag issue if one exists.
11

Flow designer > Save > Test

Test and save flow

Click 'Save' in the top right to save your flow. Then click 'Test' to run a manual test. You'll need to create a test GitHub release to trigger the flow. Monitor the run history to verify each step executes successfully and check that Jira tickets are updated and release notes are generated correctly.

  1. 1Click 'Save' in the top toolbar
  2. 2Click 'Test' next to the Save button
  3. 3Select 'Manually' for test trigger
  4. 4Create a test release in GitHub
  5. 5Monitor the flow execution in real-time
What you should see: Flow runs successfully with green checkmarks on all steps and updated Jira tickets showing Done status.
Common mistake — Test with a small number of tickets first - bulk status changes are hard to undo if something goes wrong.

Add this expression in the Compose action to extract Jira ticket IDs using regex matching. Paste this formula in the Expression tab when configuring the ticket parsing step.

JavaScript — Code Stepsplit(replace(replace(body('When_a_release_is_created')?['body'], ' ', '|'), '
▸ Show code
split(replace(replace(body('When_a_release_is_created')?['body'], ' ', '|'), '
', '|'), '|')
|> filter(item, contains(item, variables('ProjectKey')))

... expand to see full code

split(replace(replace(body('When_a_release_is_created')?['body'], ' ', '|'), '
', '|'), '|')
|> filter(item, contains(item, variables('ProjectKey')))
|> map(item, 
  if(
    contains(item, '-'),
    trim(split(item, ' ')[0]),
    null
  )
)
|> filter(item, not(equals(item, null)))
Power Automate
▶ Test flow
executed
GitHub
Jira
Jira
🔔 notification
received

Scaling Beyond 15+ tickets per release+ Records

If your volume exceeds 15+ tickets per release records, apply these adjustments.

1

Implement parallel processing

Use nested flows or concurrent branches to process tickets in batches of 5-10 instead of sequential processing. This reduces total execution time and avoids timeout limits.

2

Add API rate limiting delays

Insert 1-2 second delays between Jira API calls using the Delay action. Jira Cloud has rate limits that can cause failures when processing many tickets rapidly in succession.

3

Cache transition IDs by project

Store project-specific transition IDs in a SharePoint list or variable to avoid repeated API calls. Different projects often have different workflow configurations and transition numbers.

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 already lives in the Microsoft ecosystem and needs enterprise-grade audit logging. The GitHub and Jira connectors are solid, and the visual flow designer makes it easy for non-developers to modify the release note formatting. Skip Power Automate if you need complex text processing or regex - the expression language is clunky compared to dedicated automation platforms.

Cost

This workflow costs 2 runs per execution - one for the webhook trigger, one for each Apply to each iteration. At 4 releases per month with 15 tickets each, that's 244 runs monthly. You'll stay within the 750-run free tier easily. Zapier would cost $20/month for the same volume since webhook triggers require a paid plan.

Tradeoffs

Make handles regex and text parsing much better with dedicated string functions and cleaner syntax. n8n gives you proper JavaScript for complex ticket extraction logic instead of Power Automate's limited expressions. Zapier's Formatter tools are more intuitive for text manipulation than Power Automate's compose actions. But Power Automate wins on enterprise features - connection security, admin controls, and integration with existing Microsoft governance policies matter more than workflow complexity for most corporate teams.

You'll hit Jira's API rate limits faster than expected when processing large releases. The transition API is particularly strict - add delays between status updates or batch them differently. GitHub's webhook delivery can be unreliable during high-traffic periods, so implement retry logic or manual trigger options. Power Automate's regex support is weak - test your ticket extraction patterns thoroughly before going live.

Ideas for what to build next

  • Add Slack notificationsSend formatted release notes to your team's deployment channel when releases are published. Include ticket counts and release version for quick status updates.
  • Generate changelog filesCreate or update CHANGELOG.md files in your repository with structured release notes. Use GitHub's create/update file actions to maintain version history automatically.
  • Track deployment metricsLog release data to Excel or SharePoint lists for sprint retrospectives. Include ticket counts, release frequency, and time-to-deployment analytics.

Related guides

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