

How to Sync GitHub Milestones with Jira Sprints with Make
Automatically sync GitHub milestones with Jira sprints and create or link tickets when issues are added to milestones.
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 for code and Jira for sprint planning who need automatic ticket creation when issues join milestones.
Not ideal for
Teams syncing more than 1000 issues monthly or those needing real-time synchronization under 30 seconds.
Sync type
pollingUse case type
syncReal-World Example
A 12-person SaaS development team uses this to automatically create Jira sprint tickets when product managers add GitHub issues to release milestones. Before automation, the dev lead manually copied 40-60 issues per sprint from GitHub to Jira, taking 2 hours and often missing issues or duplicating work. Now milestone assignments trigger ticket creation within 5 minutes.
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 Make
Copy the pre-built Make blueprint and paste it straight into Make. 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 | title | |
| Milestone Name | milestone.title | |
| Issue Number | number | |
| Issue URL | html_url | |
4 optional fieldsβΈ show
| Issue Description | body |
| Assignee | assignee.login |
| Labels | labels |
| Repository Name | repository.name |
Step-by-Step Setup
Scenarios > Create new scenario > GitHub
Create new scenario in Make
Set up your workspace and initialize the automation scenario. This creates the foundation for connecting GitHub and Jira.
- 1Log into Make and click 'Create a new scenario'
- 2Click the large '+' button in the center
- 3Search for 'GitHub' in the app list
- 4Select 'Watch Issues' trigger
GitHub Module > Connection > Add
Connect GitHub account
Authenticate with GitHub to access your repositories and milestones. Make needs read access to issues and milestones.
- 1Click 'Add' next to the Connection field
- 2Select 'GitHub' connection type
- 3Click 'Continue' to open GitHub OAuth
- 4Authorize Make to access your repositories
- 5Name your connection 'GitHub Production'
GitHub Module > Configuration
Configure GitHub issue watching
Set up the trigger to monitor when issues are added to milestones. This watches for milestone assignment events specifically.
- 1Select your repository from the Repository dropdown
- 2Set State filter to 'All'
- 3Set Event to 'milestoned'
- 4Leave Assignee field empty to watch all issues
- 5Set Limit to 10
Scenario > Add Module > Jira Software
Add Jira connection
Connect to your Jira instance to create and link tickets. Make supports both cloud and server Jira instances.
- 1Click the '+' button after the GitHub module
- 2Search for and select 'Jira Software'
- 3Choose 'Create an Issue' action
- 4Click 'Add' for Connection
- 5Enter your Jira URL, email, and API token
Jira Module > Project Configuration
Configure Jira project mapping
Map your GitHub repository to the correct Jira project and issue type. This determines where new tickets get created.
- 1Select your Jira project from the Project dropdown
- 2Choose 'Story' as the Issue Type
- 3Set Priority to 'Medium'
- 4Leave Reporter as default (you)
Jira Module > Field Mapping
Map issue fields
Connect GitHub issue data to Jira fields. This ensures issue titles, descriptions, and metadata transfer correctly.
- 1Click in the Summary field
- 2Select 'title' from GitHub data
- 3Click in Description field
- 4Select 'body' from GitHub data
- 5Add GitHub issue URL to Comments field
Jira Module > Labels and Versions
Add milestone to sprint mapping
Connect GitHub milestones to Jira sprints using custom fields or labels. This keeps your sprint planning synchronized.
- 1Scroll to Labels section in Jira module
- 2Click 'Add item' for Labels array
- 3Map to GitHub milestone title: {{1.milestone.title}}
- 4Add static label 'github-synced'
- 5Set Fix Version to milestone title if available
Add Module > Jira > Search for Issues
Add duplicate prevention
Check if a Jira ticket already exists for this GitHub issue to avoid creating duplicates during sync.
- 1Add a new Jira module before Create Issue
- 2Select 'Search for Issues' action
- 3Use JQL: summary ~ '{{1.title}}' AND project = YOUR_PROJECT
- 4Set Maximum results to 1
Add Module > Flow Control > Router
Configure conditional logic
Use a router to either create new tickets or update existing ones based on the search results.
- 1Add a Router module after the Search
- 2Connect one path to Create Issue
- 3Add filter: {{2.issues}} is empty
- 4Connect second path to Update Issue
- 5Add filter: {{2.issues}} exists
Scenario > Run once
Test with sample data
Run the scenario with a test GitHub issue to verify field mapping and Jira ticket creation work correctly.
- 1Click 'Run once' at the bottom
- 2Add a GitHub issue to a milestone in your repo
- 3Watch the scenario execution in real-time
- 4Check that a Jira ticket was created
- 5Verify all fields mapped correctly
Module > Properties > Error Handling
Set up error handling
Configure what happens when API calls fail or rate limits are hit. This prevents the scenario from breaking in production.
- 1Right-click each module and select 'Properties'
- 2Set Error handling to 'Break'
- 3Add a WebHook module after Router for error notifications
- 4Configure retry settings: 2 attempts with 1 minute intervals
Scenario > Toggle > Scheduling
Activate scenario
Turn on automatic execution so the scenario runs whenever GitHub issues are added to milestones.
- 1Click the toggle switch at bottom left
- 2Set scheduling to 'Immediately'
- 3Save the scenario with name 'GitHub-Jira Sprint Sync'
- 4Click 'OK' to confirm activation
Drop this into a Make custom function.
JavaScript β Custom Function{{if(1.milestone.title; 1.milestone.title; "No Sprint")}} - Use this in Jira labels to handle issues without milestones gracefully instead of leaving blank fields.βΈ Show code
{{if(1.milestone.title; 1.milestone.title; "No Sprint")}} - Use this in Jira labels to handle issues without milestones gracefully instead of leaving blank fields.... expand to see full code
{{if(1.milestone.title; 1.milestone.title; "No Sprint")}} - Use this in Jira labels to handle issues without milestones gracefully instead of leaving blank fields.Scaling Beyond 300+ issues per sprint+ Records
If your volume exceeds 300+ issues per sprint records, apply these adjustments.
Batch API calls
Use Make's aggregator to group multiple GitHub issues into single Jira API calls. This reduces operation count by 60% and prevents rate limit issues.
Add processing delays
Insert 30-second sleep modules between GitHub webhook and Jira calls. High issue volumes can overwhelm Jira's API even within rate limits.
Split by repository
Create separate scenarios for different repositories to distribute load. Use filters based on repository name to route issues to appropriate Jira projects.
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 Make for this if you need visual debugging and your team creates 50+ issues per sprint. Make's router system handles the duplicate checking logic better than Zapier's branching, and you can see exactly where data transforms fail. The module library covers both GitHub webhooks and Jira's full API. Skip Make if you're syncing more than 1000 issues daily - N8N handles bulk operations faster and costs less at high volume.
This workflow uses 4 operations per GitHub issue: webhook trigger, Jira search, create/update issue, and error handling. At 200 issues per month, that's 800 operations monthly. Make's Core plan at $9/month includes 10,000 operations, so you're well under the limit. Zapier would cost $20/month for the same volume since their Starter plan only includes 750 tasks. N8N cloud runs $20/month but gives unlimited executions.
Zapier's Jira integration includes sprint field mapping that Make lacks - you have to use labels or custom fields instead. N8N lets you write custom JavaScript for complex milestone-to-sprint logic that Make's visual editor can't handle. But Make's error recovery is superior - when Jira API calls fail during sprints, Make retries automatically while Zapier just logs the failure. For most teams, the visual debugging outweighs the sprint field limitation.
GitHub's milestone webhook fires twice if you change the milestone date after assigning issues - your scenario will try to create duplicate Jira tickets. The search-before-create pattern catches this, but adds API calls to your quota. Jira's API returns cryptic field errors that don't mention the actual field name - enable Make's detailed logging to see the full request body. GitHub issues with 2000+ character descriptions will hit Jira's field limits and fail silently unless you truncate the body text in Make first.
Ideas for what to build next
- βAdd Slack notifications for new sprint tickets β Send a message to your dev team channel whenever GitHub issues create new Jira tickets, including milestone and assignee information.
- βSync Jira ticket completion back to GitHub β Close GitHub issues automatically when linked Jira tickets move to Done status, keeping both systems current.
- βCreate milestone progress tracking β Build a dashboard scenario that counts open vs closed tickets per milestone and posts weekly sprint progress to project management tools.
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