Back to blog
11 min read

How to Set Up Jira GitHub Sync Analytics to See What Your Engineering Team Is Really Doing

Jira knows what was planned and GitHub knows what was built, but neither shows where work stalls. This guide walks through setting up Jira GitHub sync analytics: defining the questions to answer, linking issues to pull requests reliably, and tracking a small set of metrics that expose quiet tickets, slow reviews, and initiatives at risk of slipping.

How to Set Up Jira GitHub Sync Analytics to See What Your Engineering Team Is Really Doing

Jira knows what was planned. GitHub knows what was built. Neither tells you which in-progress tickets have gone quiet, which pull requests are rotting in review, or which initiative is about to slip. Jira GitHub sync analytics closes that gap by linking the two data sets and measuring the result.

By the end of this guide you will have Jira issues and GitHub pull requests linked reliably, plus a small set of metrics that show where work stalls and where risk builds. Before you start, you need admin access to both tools, a team willing to agree on a branch and PR naming convention, and at least a few weeks of recent activity to examine.

Step 1: Decide which questions your sync analytics must answer

Write down three to five questions before you configure anything. Good ones are specific and tied to a decision you could make this week:

  • Which in-progress tickets have no code activity?
  • How long does work sit waiting for review?
  • Which initiatives are slipping against their expected timeline?
  • Which repositories are absorbing the most change right now?

Next, separate outcome signals from activity counts. Cycle time, stalled work, and deployment risk describe how work flows and where it might break. Commit counts and PR totals describe motion, are easy to inflate, and rarely lead to a decision. If a metric would not change what you do on Monday, leave it off the list.

Then choose your unit of analysis: the ticket, the epic or initiative, or the team. This matters because it determines the link data you need later. Ticket-level questions require every PR to carry an issue key. Initiative-level questions also require that tickets roll up cleanly to epics. Team-level questions can tolerate some missing links but will hide individual bottlenecks.

The mistake to avoid is connecting the tools first and hoping a dashboard reveals what to ask. You will get charts, but not answers, and the team will learn to ignore them. Keep your question list somewhere visible, because every later step is judged against it.

Step 2: Audit your Jira workflow and issue key hygiene

Analytics inherit the ambiguity of your workflow. If "In Progress" means both "someone is coding" and "waiting on a vendor," no metric built on it will be trustworthy. Start by mapping every Jira status to a real stage: To Do, In Progress, In Review, Done. Merge or remove statuses nobody uses, and decide where blocked work lives.

Then look for distortions in the history:

  • Skipped statuses: tickets that jump from To Do straight to Done produce cycle times near zero.
  • Bulk closures: a cleanup that closes 80 tickets in one afternoon creates a cluster of fake completions. Exclude them from analysis or note the date.
  • Reopened tickets: decide whether a reopen restarts the clock or counts as a new unit of work.

Next, confirm that issue keys are consistent. An issue key is the unique identifier Jira assigns to each ticket, such as PROJ-123, and it is the thread that connects Jira to GitHub. If you run multiple projects, list every key prefix in use. Also check that epics roll up to initiatives the way leadership actually thinks about them, since initiative health depends on that hierarchy.

Finally, measure your baseline link rate with a quick sample:

  1. Pull the 20 most recently merged PRs across your main repositories.
  2. For each, check whether the branch name, PR title, or a commit message contains a valid issue key.
  3. Count the linked ones and record the percentage with today's date.

Many teams find this number is lower than they assumed. That is useful: it tells you how much of your picture is currently invisible.

Step 3: Connect GitHub to Jira

Atlassian's official integration is GitHub for Jira, available from the Atlassian Marketplace. As of October 2026 the general flow is to install the app in Jira, choose to connect a GitHub organization, and authorize it on the GitHub side. The exact screens and permission prompts change, so follow the current instructions in Atlassian's documentation rather than a screenshot from an older tutorial. If you want a broader walkthrough of this kind of setup, see our guide on how to connect GitHub to project management.

During authorization, resist the urge to grant access to everything. Select only the repositories that matter to the questions from Step 1. Archived repos, experiments, and forks add noise and can pollute metrics like change volume.

Confirm it worked

Open a Jira ticket you know has related code work. The Development panel on the ticket should list linked branches, commits, and pull requests, along with their status. If you see them, the plumbing works. The Development panel is the same data source any downstream analytics will rely on, so treat it as your test.

If nothing appears

  • Issue key placement: the key must appear in the branch name, a commit message, or the PR title. A key only in the PR description may not link.
  • Repository permissions: the account that authorized the app needs sufficient access to the repos in question.
  • Third-party app approval: some GitHub organizations require an owner to approve new apps. Check for a pending request.
  • Wrong site or project: confirm the app is connected to the Jira site that actually holds the ticket.
  • Timing: historical data can take a while to backfill, so test with a fresh PR as well as an old one.

Step 4: Enforce a naming convention so every PR links to a ticket

The integration only links what it can recognize, so your convention is the real source of data quality. Adopt one rule and keep it simple: the issue key goes in the branch name and the PR title. For example, a branch named PROJ-123-add-billing-webhook and a PR titled "PROJ-123 Add billing webhook." Developers who create branches from the Jira ticket often get this for free.

Rules that depend on memory decay within a few weeks, so back the convention with automation:

  1. Add a GitHub pull request template with a required "Ticket" field at the top.
  2. Add a lightweight CI check or bot that inspects the branch name or PR title for a valid key pattern and fails the PR if none is found.
  3. Make the check required in branch protection rules so it cannot be skipped casually.

Be realistic about exceptions. Dependency bumps, automated updates, and urgent hotfixes sometimes have no ticket. Rather than letting them sit unlinked and unexplained, agree on a tag, such as a NOTICKET or CHORE marker, that the check accepts. This keeps exceptions visible and countable. If the exception tag grows past a small share of merges, that is a signal in itself: either work is happening off the books or the ticket process is too heavy.

Announce the rule, explain that it exists so planning and code can be read together, and make it easy to follow. After two weeks, re-run the 20-PR sample from Step 2 and compare it to your baseline. The goal is a link rate high enough that missing links no longer change your conclusions.

Step 5: Build the core metrics from the linked data

With links in place, define each metric explicitly so everyone reads the same number the same way.

  • Cycle time: elapsed time from the first commit (or the move to In Progress) to merge (or Done). Pick one start and end definition and keep it. For a deeper treatment, see our guide to development cycle time tracking.
  • Review wait time: time from PR opened to the first review. This isolates queueing from the work of reviewing itself, and it is the core of pull request cycle time tracking.
  • Stalled work: a ticket in In Progress with no linked commits, PR updates, or reviews for a set number of days.
  • Change pressure: merge volume and code churn per week, per repository. Heavy churn concentrated in one repo, especially near a release, shows where deployment risk is gathering.

Choose thresholds you can tune

Flagging stalled work after three to five working days is a reasonable starting point for a small team, but treat it as a hypothesis. A team working on large, research-heavy tickets will need a longer window, and a team shipping small changes daily may want a shorter one. Start with a threshold that flags a handful of items per week. If it flags dozens, people stop looking. If it flags nothing, it is too loose.

Use medians, not averages

Cycle time distributions are skewed: most tickets finish quickly, and a few drag on for weeks. A mean gets pulled upward by those outliers and describes almost no real ticket. Report the median, plus a high percentile such as the 85th or 90th, to show how long the slow tail runs. Better still, look at the distribution itself, and read the outliers individually, since each one usually has a story.

Step 6: Look for mismatches between Jira status and GitHub reality

Some of the most valuable findings come from places where the two systems disagree. Check for three classic mismatches:

  1. In Progress with no commits. The ticket is claimed but nothing is happening. It may be blocked, forgotten, or waiting on a decision.
  2. PR merged, ticket still open. The work shipped but the board does not show it, which understates progress and confuses planning.
  3. Ticket Done with open or reverted PRs. The board claims completion while the code says otherwise.

Here is an illustration. Suppose an epic has 10 tickets and 8 are Done, so it looks 80% complete. Looking at the linked PRs, the remaining two tickets each have a large pull request, thousands of changed lines, that has been open for nine days with one unanswered review comment. By ticket count the epic is nearly finished. By code reality, the hardest and riskiest work is still ahead and is stuck in the review queue. A ticket-count view would have hidden that until the deadline. Learning to find and fix stalled pull requests is often the fastest way to unstick a case like this.

Treat every mismatch as a prompt for a conversation, not a score for an individual. Most are caused by process gaps, unclear ownership, or work that is harder than estimated. If people feel the data is used to judge them, they will start gaming the links, and the whole exercise loses value.

Finding these by hand is tedious. Progress is an AI-native engineering intelligence platform that ingests data from tools such as Linear and GitHub and pre-computes stalled-work and risk signals, so leaders see flagged mismatches instead of hunting for them. Confirm its current Jira support for your setup before relying on it.

Step 7: Turn the analytics into a weekly review habit

Metrics that nobody reviews are decoration. Set a 15-minute weekly slot with a fixed agenda: stalled work, review queues, and initiative health. Every flagged item gets one named owner and a next action, even if that action is "confirm this is blocked and note why." If a meeting ends with no owners assigned, it was a status update, not a review.

Look at direction over four to six weeks rather than reacting to a single week. One slow week can be a holiday or a release crunch. A steady climb in review wait time, or a cycle time median that creeps up month after month, points to a structural problem. The useful question is whether delivery is accelerating or slowing, which is the heart of engineering team velocity tracking.

Pair delivery data with team health signals. Sustained after-hours merges, a growing review backlog concentrated on one or two senior engineers, or a steady drop in activity from someone who was previously active can all precede burnout or attrition. These are signals to check in with people, not to draw conclusions from. Our piece on engineering team health metrics covers how to read them responsibly.

Once a month, revisit your setup:

  • Re-check the link rate with a fresh 20-PR sample.
  • Adjust stalled-work and review thresholds to match how the team actually works.
  • Retire any metric that has never changed a decision.

A short list of metrics that people act on beats a long one that they scroll past.

Keeping the sync trustworthy as your team grows

Two checks tell you whether this is working. First, your link rate should stay high without constant nagging. If it drifts down, tighten the automated check or simplify the convention. Second, each weekly review should produce at least one concrete action, such as unblocking a ticket, redistributing reviews, or resizing an initiative. If a review ends with nothing to do for several weeks in a row, either the team is healthy or your thresholds are too loose, and the monthly tune-up will tell you which.

After that, expand to more repositories, add team-level and initiative-level views, and consider natural-language questions and automated executive summaries so leaders can ask "what is at risk this sprint?" and get an answer grounded in real activity. Learn more about our services


Start your 7-day free trial

Try it on this week's work.

Connect your tools and Progress fills in your last two weeks, so you see what's moving and what's stuck from day one.

7-day free trial · cancel anytime