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

How to Link GitHub Commits to Jira with Power Automate

Automatically comment on Jira tickets with commit details whenever a GitHub commit message contains a Jira ticket key.

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 Jira for project tracking who want automatic commit visibility without manual ticket updates

Not ideal for

Teams needing complex commit parsing or those wanting bidirectional sync between GitHub and Jira

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person development team uses this to automatically link commits to Jira tickets. When a developer commits with message 'PROJ-123: Fix login bug', the flow adds a comment to ticket PROJ-123 with the commit hash, author, and GitHub link. Before automation, developers manually updated 8-10 tickets daily, often forgetting to link commits during crunch time.

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 with admin access to configure webhooks
Jira Cloud instance with API token generated from account settings
Power Automate license (included with most Microsoft 365 plans)
Jira project permissions to add comments on tickets

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Commit Message
Commit SHA
Author Name
Repository Name
Commit URL
Jira Ticket Key
2 optional fields▸ show
Author Email
Branch Name

Step-by-Step Setup

1

My flows > + New flow > Automated cloud flow

Create new automated flow

Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then the '+ New flow' button. Select 'Automated cloud flow' from the dropdown menu. Name your flow 'GitHub Commit to Jira Linker'.

  1. 1Click 'My flows' in the left navigation
  2. 2Click '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Enter 'GitHub Commit to Jira Linker' as flow name
What you should see: You should see the flow creation dialog with your flow name populated and trigger selection options below.
2

Flow creation > Choose trigger > GitHub

Add GitHub webhook trigger

Search for 'GitHub' in the connector search box and select it. Choose 'When a commit is pushed' trigger from the GitHub triggers list. You'll see connection setup if this is your first GitHub integration. Click 'Create' to proceed to the flow designer canvas.

  1. 1Type 'GitHub' in the connector search
  2. 2Select GitHub from results
  3. 3Click 'When a commit is pushed' trigger
  4. 4Click 'Create' to open flow designer
What you should see: The flow designer opens with the GitHub trigger as step 1, showing repository and branch configuration fields.
Common mistake — The GitHub trigger requires webhook permissions on your repository - personal repos work immediately, but organization repos need admin approval.
Power Automate
+
click +
search apps
GitHub
GI
GitHub
Add GitHub webhook trigger
GitHub
GI
module added
3

GitHub trigger > Repository settings

Configure GitHub repository settings

Click 'Sign in' to authenticate with GitHub if needed. Select your target repository from the Repository dropdown. Choose 'main' or your primary branch from the Branch dropdown. Leave other fields at defaults unless you need specific commit filtering.

  1. 1Click 'Sign in' and authorize Power Automate
  2. 2Select repository from Repository dropdown
  3. 3Choose target branch from Branch dropdown
  4. 4Leave additional filters empty
What you should see: You should see your selected repository and branch displayed, with a green checkmark indicating valid authentication.
Common mistake — If repositories don't appear, check that your GitHub account has access and refresh the browser tab.
4

Flow designer > + New step > Control > Condition

Add condition to check for Jira keys

Click '+ New step' below the GitHub trigger. Search for 'Condition' and select it from Control actions. In the condition builder, click the left value field and select 'Commits message' from dynamic content. Set the operator to 'contains' and enter a pattern like 'PROJ-' for your Jira project key prefix.

  1. 1Click '+ New step' button
  2. 2Search for 'Condition' and select it
  3. 3Click left value field and choose 'Commits message'
  4. 4Set middle dropdown to 'contains'
  5. 5Enter your Jira project prefix like 'PROJ-'
What you should see: The condition shows 'Commits message contains PROJ-' with Yes and No branches visible below.
Common mistake — Use your actual Jira project key prefix - this condition determines which commits trigger Jira updates.
GitHub
GI
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Jira
JI
notified
5

Condition Yes branch > Add an action > Data Operations > Compose

Extract Jira ticket number

In the 'Yes' branch, click 'Add an action'. Search for 'Compose' and select it from Data Operation actions. This will extract the ticket number from the commit message. We'll use this to build the Jira API call in the next step.

  1. 1Click 'Add an action' in the Yes branch
  2. 2Search for 'Compose' and select it
  3. 3Click in the Inputs field
  4. 4Add dynamic content 'Commits message'
What you should see: The Compose action appears in the Yes branch with the commit message as input.
6

Compose action > Inputs > Expression

Add expression to parse ticket ID

Click in the Compose Inputs field and select 'Expression' tab. Enter this formula to extract the ticket ID: split(outputs('Compose'),'-')[1]. This assumes your tickets follow PROJ-123 format. Click 'OK' to save the expression.

  1. 1Click in the Compose Inputs field
  2. 2Switch to 'Expression' tab
  3. 3Enter: first(split(last(split(triggerBody()['head_commit']['message'], ' ')), '-'))
  4. 4Click 'OK' to save expression
What you should see: The Compose action shows your expression formula in the Inputs field.
Common mistake — This expression assumes ticket keys appear at word boundaries - adjust the split logic for different commit message formats.
7

Compose action > Add an action > HTTP

Connect to Jira

Click 'Add an action' below the Compose step. Search for 'HTTP' and select the 'HTTP' connector. Choose 'HTTP - HTTP' action since Power Automate doesn't have a native Jira connector. We'll build the Jira REST API call manually.

  1. 1Click 'Add an action' below Compose
  2. 2Search for 'HTTP' and select it
  3. 3Choose 'HTTP' action
  4. 4Set Method to 'POST'
What you should see: The HTTP action appears with Method, URI, Headers, and Body configuration fields visible.
Common mistake — Power Automate lacks native Jira integration, so HTTP requests require manual API configuration and authentication.
8

HTTP action > Configuration

Configure Jira API request

Set Method to 'POST'. In URI field, enter your Jira base URL plus API path: https://yourcompany.atlassian.net/rest/api/3/issue/PROJ-[ticket]/comment. Replace [ticket] with dynamic content from the Compose step. Add Content-Type header as 'application/json'.

  1. 1Set Method to 'POST'
  2. 2Enter URI: https://yourcompany.atlassian.net/rest/api/3/issue/
  3. 3Add dynamic content from Compose for ticket number
  4. 4Complete URI with /comment
  5. 5Add header: Content-Type = application/json
What you should see: The HTTP action shows your complete Jira API endpoint with dynamic ticket number insertion.
Common mistake — Replace 'yourcompany' with your actual Jira domain - test the URL format in your browser first.
9

HTTP action > Show advanced options > Authentication

Add Jira authentication

In the HTTP action, click 'Show advanced options'. Set Authentication Type to 'Basic'. Enter your Jira email as Username. For Password, use an API token generated from your Jira account settings, not your login password. Generate this token at id.atlassian.com/manage/api-tokens.

  1. 1Click 'Show advanced options'
  2. 2Set Authentication Type to 'Basic'
  3. 3Enter your Jira email in Username
  4. 4Paste API token in Password field
  5. 5Click outside to save settings
What you should see: Authentication section shows your email and masked API token, with Basic auth type selected.
Common mistake — Never use your Jira login password - only API tokens work with REST API authentication.
10

HTTP action > Body

Build comment JSON body

In the Body field of HTTP action, enter JSON for the Jira comment. Include commit details using dynamic content from the GitHub trigger. The body should contain commit message, author, SHA, and GitHub link formatted for Jira's comment structure.

  1. 1Click in the Body field
  2. 2Enter opening JSON structure
  3. 3Add dynamic content for commit details
  4. 4Include GitHub commit URL
  5. 5Close JSON structure
What you should see: The Body field shows properly formatted JSON with dynamic content placeholders for commit information.
Common mistake — Jira's comment API requires specific JSON structure - test with a simple static message before adding dynamic content.
11

Flow designer > Save > Test

Test and save flow

Click 'Save' in the top right to save your flow. Then click 'Test' and choose 'Manually' to test with a sample commit. Make a commit to your configured repository with a Jira ticket key in the message. Check both the flow run history and your Jira ticket for the comment.

  1. 1Click 'Save' button in top right
  2. 2Click 'Test' button
  3. 3Select 'Manually' test option
  4. 4Make a test commit with Jira key
  5. 5Check flow run results
What you should see: Flow runs successfully and creates a comment on the specified Jira ticket with commit details.

Add this JSON structure to the HTTP Body field to create properly formatted Jira comments with commit details and GitHub links.

Copy this template{
▸ Show code
{
  "body": {
    "type": "doc",

... expand to see full code

{
  "body": {
    "type": "doc",
    "version": 1,
    "content": [
      {
        "type": "paragraph",
        "content": [
          {
            "text": "📝 Commit: @{triggerBody()['head_commit']['message']}",
            "type": "text"
          }
        ]
      },
      {
        "type": "paragraph",
        "content": [
          {
            "text": "👤 Author: @{triggerBody()['head_commit']['author']['name']}",
            "type": "text"
          }
        ]
      },
      {
        "type": "paragraph",
        "content": [
          {
            "text": "🔗 View commit: ",
            "type": "text"
          },
          {
            "text": "@{triggerBody()['head_commit']['url']}",
            "type": "text",
            "marks": [
              {
                "type": "link",
                "attrs": {
                  "href": "@{triggerBody()['head_commit']['url']}"
                }
              }
            ]
          }
        ]
      }
    ]
  }
}
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 your team already lives in the Microsoft ecosystem and wants native Office 365 integration. The HTTP connector gives you full control over Jira's REST API, and webhook triggers fire within 30 seconds of commits. Skip this if you need complex commit parsing or regex matching - n8n handles text manipulation much better.

Cost

Real math time. GitHub webhooks don't count against your action limits, but each HTTP call to Jira does. At 50 commits per day with ticket references, that's 1,500 actions monthly. Power Automate Premium costs $15/month and includes 5,000 actions, so you're covered. Zapier's Professional plan costs $19.99 for the same volume but includes better error handling.

Tradeoffs

n8n crushes this workflow with regex nodes and proper JSON parsing - no weird expression syntax required. Make offers better HTTP error handling and retry logic out of the box. Zapier's GitHub integration catches more webhook events reliably. But Power Automate wins if you're already paying for Office 365 and need the flow to integrate with SharePoint or Teams notifications later.

You'll hit Jira's rate limits at 100+ commits per hour - add delays between HTTP calls. The GitHub webhook occasionally delivers duplicate events during repository migrations or branch operations. Power Automate's expression language is clunky for text parsing compared to actual code, so complex commit message formats become painful fast.

Ideas for what to build next

  • Add commit diff size trackingEnhance comments with lines added/removed counts and file change summaries for better code review context.
  • Create pull request linkingExtend the flow to comment on Jira tickets when PRs are opened, merged, or closed with ticket references.
  • Build deployment notificationsAdd a second flow to update Jira tickets when commits are deployed to staging or production environments.

Related guides

Was this guide helpful?
GitHub + Jira overviewPower Automate profile →