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

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-time

Use case type

sync

Real-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.

/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 create webhooks on target repositories
Jira project administrator permissions to create issues and assign to sprints
Atlassian API token generated from your account security settings
Consistent naming pattern between GitHub milestones and Jira sprint names

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Issue Titlesummary
GitHub Issue URLdescription
Issue Numbersummary
5 optional fieldsβ–Έ show
Issue Bodydescription
Issue Assigneeassignee
Issue Labelslabels
Milestone Titlecustomfield_sprint
Repository Namecomponents

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 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'.

  1. 1Click 'My flows' in the left navigation
  2. 2Click the blue '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Enter 'GitHub Milestone to Jira Sprint Sync' as the flow name
βœ“ What you should see: You should see the flow creation dialog with your flow name populated and connector options below.
2

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.

  1. 1Type 'GitHub' in the search connector box
  2. 2Click on the GitHub connector icon
  3. 3Select 'When an issue is assigned to a milestone'
  4. 4Click the blue 'Create' button
βœ“ What you should see: The flow builder opens with the GitHub trigger configured and connection prompt visible.
⚠
Common mistake β€” This trigger only fires on milestone assignment, not when issues are moved between milestones.
Power Automate
+
click +
search apps
GitHub
GI
GitHub
Set up GitHub webhook trigger
GitHub
GI
module added
3

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.

  1. 1Click the 'Sign in' button
  2. 2Authorize Power Automate in the GitHub popup
  3. 3Select your organization from the dropdown
  4. 4Choose the target repository
βœ“ What you should see: Green checkmark appears next to GitHub connection with your selected repository displayed.
⚠
Common mistake β€” Repository must allow webhook creation - check your GitHub org permissions if this fails.
Power Automate settings
Connection
Choose a connection…Add
click Add
GitHub
Log in to authorize
Authorize Power Automate
popup window
βœ“
Connected
green checkmark
4

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'.

  1. 1Click '+ New step' below the GitHub trigger
  2. 2Search for and select 'Condition' from Control
  3. 3Click the left value box and select 'Milestone title'
  4. 4Set operator to 'contains' and enter your sprint prefix
βœ“ What you should see: Condition step appears with 'Yes' and 'No' branches, milestone title properly mapped.
⚠
Common mistake β€” Case-sensitive matching - ensure your prefix matches exactly how milestones are named in GitHub.
GitHub
GI
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Jira
JI
notified
5

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.

  1. 1Click 'Add an action' in the Yes branch
  2. 2Search for and select 'Jira'
  3. 3Choose 'Create issue' action
  4. 4Click to configure the Jira connection
βœ“ What you should see: Jira create issue form appears with empty fields ready for mapping.
⚠
Common mistake β€” Use Jira Software Cloud connector, not the Server version unless you're on Jira Server.
6

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.

  1. 1Enter your Jira site URL without https://
  2. 2Enter your Atlassian account email
  3. 3Paste your API token from Atlassian account settings
  4. 4Click 'Create' to test the connection
βœ“ What you should see: Connection succeeds and project dropdown populates with your available Jira projects.
⚠
Common mistake β€” API tokens expire - save the token somewhere secure for future flow updates.
7

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.

  1. 1Select your Jira project from the dropdown
  2. 2Choose 'Story' or 'Task' as Issue Type
  3. 3Map GitHub 'Issue title' to Jira 'Summary'
  4. 4Map GitHub 'Issue body' to Jira 'Description'
βœ“ What you should see: All required Jira fields show mapped values from GitHub dynamic content.
⚠
Common mistake β€” Some Jira custom fields are required - check your project settings if creation fails.
8

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.

  1. 1Click '+ New step' after the Create issue action
  2. 2Search for and add 'Jira - Update issue'
  3. 3Set Issue ID to the ID from the previous Create step
  4. 4Configure sprint field mapping
βœ“ What you should see: Update issue action configured with sprint field ready for dynamic assignment.
⚠
Common mistake β€” Sprint names must match exactly between GitHub milestones and Jira sprints for auto-assignment.
9

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.

  1. 1Add 'Get issues' action before Create issue
  2. 2Build JQL query using GitHub issue number
  3. 3Wrap Create issue in a new condition
  4. 4Set condition to check if search returned zero results
βœ“ What you should see: Flow only creates Jira tickets when no duplicate exists, preventing double-creation.
⚠
Common mistake β€” JQL syntax is case-sensitive and requires exact URL matching in description text.
10

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.

  1. 1Click 'Save' in the top toolbar
  2. 2Click 'Test' next to the Save button
  3. 3Select 'Automatically' for trigger-based testing
  4. 4Add a GitHub issue to a matching milestone to test
βœ“ What you should see: Test shows successful run with green checkmarks and new Jira ticket created correctly.
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 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.

Cost

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.

Tradeoffs

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

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