

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-timeUse case type
notificationReal-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.
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 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Issue Key | key | |
| Issue Summary | fields.summary | |
| Issue Status | fields.status.name | |
| Release Tag Name | ||
| Release Body | ||
| Repository Name | ||
| Transition ID | transition.id | |
| Project Key | fields.project.key | |
Step-by-Step Setup
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.
- 1Click 'My flows' in the left navigation
- 2Click the blue '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'GitHub Release Notes Generator' as the flow name
- 5Click 'Skip' on trigger selection
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.
- 1Click 'Choose your flow's trigger'
- 2Type 'GitHub' in the search box
- 3Select the GitHub connector
- 4Choose 'When a release is created' trigger
- 5Sign in to GitHub when prompted
- 6Select your repository from the dropdown
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.
- 1Click '+ New step' below the GitHub trigger
- 2Search for 'Compose' and select it
- 3Click in the Inputs field
- 4Select 'Expression' tab
- 5Enter the regex formula for ticket extraction
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.
- 1Click '+ New step'
- 2Search for 'Initialize variable' and select it
- 3Set Name to 'TicketIDs'
- 4Set Type to 'Array'
- 5Set Value to the Compose output from previous step
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.
- 1Click '+ New step'
- 2Search for 'Jira' and select the connector
- 3Choose 'Get issue' action
- 4Click 'Create new' for connection
- 5Enter your Jira server URL
- 6Provide email and API token for authentication
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.
- 1Click '+ New step'
- 2Search for 'Apply to each' under Control
- 3Select the control action
- 4Click in 'Select an output' field
- 5Choose 'TicketIDs' from dynamic content
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.
- 1Click 'Add an action' inside the Apply to each loop
- 2Search for 'Get issue' under Jira
- 3Set Issue Key to 'Current item' from dynamic content
- 4Leave other fields at default values
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.
- 1Click 'Add an action' inside the loop
- 2Search for 'Transition issue' under Jira
- 3Set Issue Key to 'Current item'
- 4Enter your Done transition ID number
- 5Add any required resolution fields
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.
- 1Go back above the loop and add 'Initialize variable'
- 2Set name to 'ReleaseNotes', type to 'String', value empty
- 3Inside the loop, add 'Append to string variable'
- 4Select 'ReleaseNotes' as variable name
- 5Format the value as bullet points with ticket key and summary
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.
- 1Click '+ New step' after the Apply to each loop
- 2Search for GitHub 'Create a comment'
- 3Select your repository
- 4Set Issue Number to release ID from trigger
- 5Set Body to ReleaseNotes variable content
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.
- 1Click 'Save' in the top toolbar
- 2Click 'Test' next to the Save button
- 3Select 'Manually' for test trigger
- 4Create a test release in GitHub
- 5Monitor the flow execution in real-time
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)))Scaling Beyond 15+ tickets per release+ Records
If your volume exceeds 15+ tickets per release records, apply these adjustments.
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.
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.
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
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.
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.
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 notifications — Send 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 files — Create 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 metrics — Log release data to Excel or SharePoint lists for sprint retrospectives. Include ticket counts, release frequency, and time-to-deployment analytics.
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