

How to sync GitHub milestones with Jira sprints using Power Automate
Auto-create Jira tickets when issues get added to GitHub milestones and link them to matching sprint boards.
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 both platforms who want sprint tickets created automatically without manual issue transfer.
Not ideal for
Teams needing two-way sync or complex issue state mapping between the platforms.
Sync type
real-timeUse case type
syncReal-World Example
A 12-person development team at a fintech startup runs 2-week sprints in Jira but tracks feature requests in GitHub milestones. Product managers add GitHub issues to milestones but developers work exclusively in Jira. This automation creates corresponding Jira tickets within 30 seconds, eliminating the daily task of manually copying 8-15 issues per sprint.
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 Title | summary | |
| GitHub Issue URL | description | |
| Issue Number | summary | |
5 optional fieldsβΈ show
| Issue Body | description |
| Issue Assignee | assignee |
| Issue Labels | labels |
| Milestone Title | customfield_sprint |
| Repository Name | components |
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 Microsoft account. Click 'My flows' in the left sidebar, then the blue '+ New flow' button. Select 'Automated cloud flow' from the dropdown. Name it 'GitHub Milestone to Jira Sprint Sync'.
- 1Click 'My flows' in the left navigation
- 2Click the blue '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'GitHub Milestone to Jira Sprint Sync' as the flow name
Flow builder > Choose trigger > GitHub
Set up GitHub webhook trigger
In the connector search box, type 'GitHub' and select the GitHub connector. Choose 'When an issue is assigned to a milestone' as your trigger. This fires whenever an issue gets added to any milestone in your selected repository. Click 'Create' to proceed to the connection setup.
- 1Type 'GitHub' in the search connector box
- 2Click on the GitHub connector icon
- 3Select 'When an issue is assigned to a milestone'
- 4Click the blue 'Create' button
GitHub trigger > Sign in > Repository selection
Connect your GitHub account
Click 'Sign in' and authorize Power Automate to access your GitHub repositories. You'll need admin or write access to the target repository to create webhooks. Select your organization and repository from the dropdowns that appear after authentication.
- 1Click the 'Sign in' button
- 2Authorize Power Automate in the GitHub popup
- 3Select your organization from the dropdown
- 4Choose the target repository
Flow builder > + New step > Control > Condition
Add milestone name condition
Click '+ New step' and search for 'Condition' in the Control category. We need to filter only issues added to milestones that match your sprint naming pattern. Set the left value to 'Milestone title' from dynamic content, choose 'contains' as the operator, and enter your sprint prefix like 'Sprint' or 'v'.
- 1Click '+ New step' below the GitHub trigger
- 2Search for and select 'Condition' from Control
- 3Click the left value box and select 'Milestone title'
- 4Set operator to 'contains' and enter your sprint prefix
Condition > Yes branch > Add an action > Jira
Add Jira connection in Yes branch
In the 'Yes' branch of your condition, click 'Add an action' and search for 'Jira'. Select the official Jira Software Cloud connector, then choose 'Create issue' as your action. This creates a new Jira ticket for each GitHub issue added to matching milestones.
- 1Click 'Add an action' in the Yes branch
- 2Search for and select 'Jira'
- 3Choose 'Create issue' action
- 4Click to configure the Jira connection
Jira action > Create connection > Authentication
Authenticate with Jira
Enter your Jira site URL (like company.atlassian.net), your email, and an API token. Generate the API token from your Atlassian account settings under Security > API tokens. Test the connection to ensure it can access your Jira projects and issue types.
- 1Enter your Jira site URL without https://
- 2Enter your Atlassian account email
- 3Paste your API token from Atlassian account settings
- 4Click 'Create' to test the connection
Jira Create issue > Field mapping
Configure Jira issue creation
Select your target Jira project and 'Story' or 'Task' as the issue type. Map the GitHub issue title to Summary, GitHub issue body to Description, and set Reporter to your service account. Use dynamic content to pull GitHub issue URL, labels, and assignee information into appropriate Jira fields.
- 1Select your Jira project from the dropdown
- 2Choose 'Story' or 'Task' as Issue Type
- 3Map GitHub 'Issue title' to Jira 'Summary'
- 4Map GitHub 'Issue body' to Jira 'Description'
Flow builder > + New step > Jira > Update issue
Add sprint assignment logic
Click '+ New step' and add another Jira action called 'Update issue'. We'll use this to assign the newly created ticket to the correct sprint. Use an expression to extract the sprint name from the GitHub milestone title and match it to your Jira sprint naming convention.
- 1Click '+ New step' after the Create issue action
- 2Search for and add 'Jira - Update issue'
- 3Set Issue ID to the ID from the previous Create step
- 4Configure sprint field mapping
Before Create issue > Add action > Jira > Get issues
Add duplicate prevention
Before creating the Jira issue, add a 'Get issues' Jira action to search for existing tickets with the same GitHub issue URL. Use JQL query 'description ~ "github.com/yourorg/yourrepo/issues/NUMBER"' to find duplicates. Wrap your Create issue action in a condition that only runs when no existing tickets are found.
- 1Add 'Get issues' action before Create issue
- 2Build JQL query using GitHub issue number
- 3Wrap Create issue in a new condition
- 4Set condition to check if search returned zero results
Flow builder > Save > Test > Automatically
Test and activate flow
Click 'Save' to save your flow, then 'Test' to run a test. Choose 'Automatically' to test with the next real trigger event. Add a GitHub issue to a milestone that matches your naming pattern and verify the Jira ticket gets created within 2-3 minutes with correct field mappings and sprint assignment.
- 1Click 'Save' in the top toolbar
- 2Click 'Test' next to the Save button
- 3Select 'Automatically' for trigger-based testing
- 4Add a GitHub issue to a matching milestone to test
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 Power Automate for this if you're already deep in the Microsoft ecosystem and need enterprise-grade compliance logging. The GitHub and Jira connectors are solid, and webhook delivery is reliable within 30 seconds. The built-in retry logic handles temporary API failures automatically. Choose Make instead if you need complex conditional logic or field transformations - their visual flow builder handles sprint name parsing much better.
Real cost breakdown: Each GitHub issue added to a milestone = 3 Power Automate actions (trigger + duplicate check + create ticket). At 50 new sprint issues per month, that's 150 actions monthly. Power Automate Premium starts at $15/month for 2,000 actions, while Make's cheapest paid plan handles this volume for $9/month with better error handling.
Make beats Power Automate on conditional logic and has a cleaner Jira sprint assignment module. Zapier's GitHub integration catches more edge cases like milestone updates. n8n gives you full control over the duplicate prevention logic with custom JavaScript. Pipedream handles webhook failures more gracefully with built-in exponential backoff. But Power Automate wins on enterprise security controls and audit trails that larger dev teams actually need.
You'll hit GitHub webhook reliability issues during high repository activity - the webhook sometimes delivers duplicate events or fails silently. Jira's sprint assignment API is finicky about active vs inactive sprints, causing tickets to create but not assign properly. The biggest gotcha: Power Automate's JQL query builder doesn't validate syntax, so typos in your duplicate prevention logic fail silently and create duplicate tickets.
Ideas for what to build next
- βAdd comment sync β Extend the flow to sync new GitHub issue comments as Jira comments for full conversation tracking.
- βStatus mapping β Create reverse sync to update GitHub issue status when Jira tickets move through workflow states.
- βBatch processing β Build a scheduled flow to handle bulk milestone assignments and catch any missed webhook events.
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