

How to sync GitHub issues to Jira with Pipedream
Automatically create Jira tickets whenever new GitHub issues are opened with title, description, labels, and assignee mapping.
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 GitHub for code and Jira for project tracking who need instant ticket creation.
Not ideal for
Teams that only need weekly summaries or batch imports should use scheduled workflows instead.
Sync type
real-timeUse case type
syncReal-World Example
A 12-person development team at a fintech startup uses this to create Jira tickets instantly when GitHub issues are filed by QA or product managers. Before automation, developers checked GitHub manually twice per day and tickets were created 4-6 hours late, delaying sprint planning.
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 Pipedream
Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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.
Optional
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Summary | summary | |
| Issue Type | issuetype | |
| Project | project | |
5 optional fieldsβΈ show
| Description | description |
| Assignee | assignee |
| Labels | labels |
| Priority | priority |
| Reporter | reporter |
Step-by-Step Setup
pipedream.com > New > Workflow
Create new Pipedream workflow
Go to pipedream.com and click New in the top navigation. Select Workflow from the dropdown menu. You'll see an empty workflow canvas with a placeholder trigger step. This is where you'll configure the GitHub webhook that fires when issues are created.
- 1Click 'New' in the top navigation bar
- 2Select 'Workflow' from the dropdown
- 3Click on the default trigger step to configure it
Trigger Step > Search Apps > GitHub > New Issue (Instant)
Configure GitHub webhook trigger
Click the trigger step and search for GitHub in the app list. Select 'New Issue (Instant)' as your trigger type. This creates a webhook that GitHub will call immediately when issues are created. You'll see a unique webhook URL generated automatically.
- 1Search for 'GitHub' in the app selector
- 2Choose 'New Issue (Instant)' trigger
- 3Copy the generated webhook URL for the next step
GitHub Trigger > Connect Account
Connect GitHub account
Click 'Connect Account' in the GitHub trigger step. A popup will open asking for GitHub permissions. Grant access to the repositories where you want issue sync enabled. Pipedream needs read access to issues and repository metadata to process the webhook data.
- 1Click 'Connect Account' button
- 2Authorize Pipedream in the GitHub popup
- 3Select which repositories to grant access to
- 4Click 'Install & Authorize'
GitHub Repo > Settings > Webhooks > Add webhook
Add GitHub webhook in repository
Go to your GitHub repository settings and navigate to Webhooks. Click Add webhook and paste the Pipedream URL. Set Content type to 'application/json' and select 'Let me select individual events'. Check only the 'Issues' event box since we don't want other events triggering this workflow.
- 1Go to your GitHub repository settings
- 2Click 'Webhooks' in the left sidebar
- 3Click 'Add webhook' button
- 4Paste the Pipedream webhook URL in Payload URL
- 5Set Content type to 'application/json'
- 6Select 'Let me select individual events'
- 7Check only 'Issues' event
GitHub Repo > New Issue, then Pipedream Workflow > Trigger Step
Test GitHub trigger
Create a test issue in your GitHub repository with a title, description, and assignee. Go back to Pipedream and check the trigger step for incoming data. You should see the full issue payload including title, body, labels array, and assignee object within 5-10 seconds.
- 1Create a new issue in your GitHub repository
- 2Add a title, description, assign it to someone
- 3Go back to Pipedream workflow
- 4Check the trigger step for the test data
Workflow > + Add Step > Jira > Create Issue
Add Jira action step
Click the + button below your trigger to add a new step. Search for Jira and select 'Create Issue' action. This step will receive the GitHub issue data and create a corresponding Jira ticket. The step will appear connected to your trigger with a flow arrow.
- 1Click the + button below the GitHub trigger
- 2Search for 'Jira' in the app list
- 3Select 'Create Issue' action
- 4The step appears below your trigger
Jira Step > Connect Account
Connect Jira account
Click 'Connect Account' in the Jira step. Enter your Jira site URL (like company.atlassian.net), email, and API token. You'll need to generate an API token from your Jira account settings first. Pipedream will test the connection and show your available projects.
- 1Click 'Connect Account' in the Jira step
- 2Enter your Jira site URL (company.atlassian.net)
- 3Enter your email address
- 4Paste your Jira API token
- 5Click 'Connect'
Jira Step > Project > Issue Type > Field Mapping
Configure Jira field mapping
Select your target Jira project and issue type (usually Bug or Task). Map the GitHub issue title to Jira summary field. Map GitHub body to Jira description. For assignee, you'll need to map GitHub usernames to Jira account IDs since they're different systems.
- 1Select your Jira project from dropdown
- 2Choose issue type (Bug, Task, etc)
- 3Map Summary to GitHub issue title
- 4Map Description to GitHub issue body
- 5Configure assignee mapping if needed
Between Steps > + > Code > Node.js
Add label transformation code
Click + to add a Node.js code step between GitHub and Jira. This step will convert GitHub labels array to Jira-compatible format. GitHub sends labels as objects with name/color, but Jira expects simple strings or specific label IDs depending on your setup.
- 1Click + between GitHub and Jira steps
- 2Select 'Code' then 'Run Node.js'
- 3Name the step 'Transform Labels'
- 4Add the label conversion code
This code step transforms GitHub labels and handles assignee mapping between the two systems. Paste it in a Node.js code step between your GitHub trigger and Jira action.
JavaScript β Code Stepexport default defineComponent({βΈ Show code
export default defineComponent({
async run({ steps, $ }) {
const issue = steps.trigger.event;... expand to see full code
export default defineComponent({
async run({ steps, $ }) {
const issue = steps.trigger.event;
// Map GitHub usernames to Jira account IDs
const userMap = {
'sarah-dev': '5d2a8b0c1f2a3b4c5d6e7f8g',
'mike-frontend': '1a2b3c4d5e6f7g8h9i0j1k2l',
'alex-backend': '9z8y7x6w5v4u3t2s1r0q9p8o'
};
// Convert GitHub labels to Jira format
const jiraLabels = issue.labels
.map(label => label.name)
.filter(name => !['wontfix', 'duplicate'].includes(name))
.slice(0, 5); // Jira has label limits
// Set priority based on labels
let priority = 'Medium';
if (issue.labels.some(l => l.name.includes('urgent') || l.name.includes('critical'))) {
priority = 'Highest';
} else if (issue.labels.some(l => l.name.includes('high'))) {
priority = 'High';
}
// Map assignee if exists
const assigneeId = issue.assignee ? userMap[issue.assignee.login] : null;
return {
summary: issue.title,
description: `*From GitHub Issue #${issue.number}*\n\n${issue.body}\n\n[View on GitHub](${issue.html_url})`,
labels: jiraLabels,
priority: priority,
assignee: assigneeId,
githubUrl: issue.html_url,
githubNumber: issue.number
};
}
});GitHub Repo > New Issue, then Pipedream Workflow > Step Results
Test complete workflow
Create another test GitHub issue and watch the workflow execute. Check each step's output data to verify the transformation is working correctly. The final Jira step should show the created ticket ID and URL. Verify in Jira that the ticket appears with correct title, description, and labels.
- 1Create a new test issue in GitHub
- 2Watch workflow execution in Pipedream
- 3Check each step's output data
- 4Verify the Jira ticket was created correctly
- 5Check ticket details in Jira interface
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 Pipedream for this if your team needs instant GitHub to Jira sync with custom transformation logic. The Node.js code steps handle complex label mapping and assignee lookups that basic platforms struggle with. Pipedream's webhook processing is genuinely instant - tickets appear in Jira within 3-5 seconds of GitHub issue creation. Skip this for simple field mapping where Zapier's pre-built actions work fine.
At 50 GitHub issues per month, you'll use about 100 Pipedream credits (trigger + Jira action) costing $10/month on the Basic plan. Zapier charges $20/month for the same volume on their Starter plan. Make handles this free up to 1,000 operations monthly, but their GitHub integration misses webhook retries that Pipedream handles automatically.
Make wins on visual debugging - their scenario execution logs are cleaner than Pipedream's JSON dumps. Zapier's Jira integration has better field mapping helpers for custom fields. N8N gives you more control over HTTP requests if you need custom Jira API calls. Power Automate integrates better if you're already using Azure DevOps. But Pipedream's code-first approach means you're not stuck when APIs change or requirements get complex.
You'll hit GitHub's webhook retry limits if your workflow fails repeatedly - GitHub stops delivering after a few failures. Jira's API is pickier about field formats than their UI suggests, especially for user assignments and custom fields. The biggest gotcha: GitHub usernames rarely match Jira email addresses, so assignee mapping breaks unless you build a lookup table upfront.
Ideas for what to build next
- βAdd bidirectional sync β Create a reverse workflow so Jira ticket updates flow back to GitHub issue comments.
- βInclude pull request linking β Automatically link Jira tickets when developers reference issue numbers in pull requests.
- βSet up digest notifications β Send daily Slack summaries of all GitHub issues that became Jira tickets.
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