How to Set Up a GitHub Analytics Integration in Slack (and Make the Alerts Worth Reading)
Most guides to a GitHub analytics integration in Slack stop at installing the app, leaving teams with noisy event streams. This step-by-step guide shows how to start from the decisions your team needs to make, route alerts to the right channels, turn raw events into meaningful analytics signals, and deliver a concise weekly summary to leadership.
Most guides to a GitHub analytics integration in Slack stop at installing the GitHub app, which gets you a stream of events and very little insight. This guide goes further. You will end up with a focused set of channels, a small number of alerts that point to something worth doing, and a weekly summary for leadership. Before you start, make sure you have admin rights on your GitHub organization, permission to add apps to your Slack workspace, and a rough idea of who should see what. Two terms matter throughout: an event notification tells you something happened (a PR opened), while an analytics signal tells you what it means (review time is growing).
Step 1: Decide which questions Slack should answer
Start from decisions, not data. The question is not "what can GitHub send us?" but "what would someone act on if they saw it today?" Good candidates look like this:
- Which PRs are stuck waiting for review?
- Is this release riskier than usual?
- Is work slowing down this sprint?
- Which initiatives have stalled?
Next, sort the questions by audience. Engineers need PR-level nudges they can act on in minutes. Engineering managers need trends and stalled work, the kind of signals covered in GitHub analytics for engineering managers. Leadership needs a weekly summary and nothing more frequent. A signal sent to the wrong audience is noise even if it is accurate.
Then cut the list to three to five signals. The most common failure is piping every GitHub event into Slack, which teaches everyone to mute the channel within a week. Once muted, even the one alert that matters goes unseen.
Write each signal as a one-line spec with four parts: signal, audience, channel, cadence. For example:
- PR waiting on review beyond 24 hours | engineers | #eng-prs | real time
- Elevated deployment risk before a release | tech leads | #eng-releases | real time
- Team momentum and initiative health | leadership | #eng-leadership-digest | weekly
Keep this spec handy. Steps 5 and 7 refer back to it, and it is the easiest way to say no when someone asks for "just one more alert."
Step 2: Check permissions and prepare GitHub and Slack
Do the approvals and setup now, because waiting on an admin is the most common reason this project stalls midway.
GitHub
Confirm you are an organization owner, or know who is. Organizations can restrict third-party app access, in which case installs need owner approval. If you are not an owner, send the request with the exact app name and the repositories involved so it can be approved in one pass.
Slack
Confirm you can install apps. Some workspaces require admin approval for every new app, so find your workspace admin early and tell them which apps you plan to add.
Scope and channels
Decide which repositories are in scope. All repos is simple, but a chosen set is usually better. Exclude archived repos, forks, and experimental or throwaway repos, since they add noise and no signal.
Create the Slack channels now, using a consistent naming convention:
- #eng-prs for review and stalled-work nudges
- #eng-releases for deployment and release risk
- #eng-leadership-digest for the weekly summary
Make private any channel that discusses individuals or team wellbeing, such as a manager-only channel for team health reads. Public by default is fine for PR and release channels, but not for anything people could feel monitored by.
Finally, menus and permission names change. Check the current GitHub and Slack documentation for the exact install screens rather than relying on a screenshot from an older guide.
Step 3: Connect GitHub to Slack for event-level notifications
This layer handles real-time events: a PR opened, a review requested, a deployment finished. It is useful, but it only tells you what happened, not whether it matters.
- Install the official GitHub app for Slack from the Slack App Directory.
- In any channel, run
/github signinand complete the authentication for your GitHub account. (Your own handle is fine; the command is typed into Slack, not into your page.) - In each channel, subscribe to the repos that belong there with
/github subscribe owner/repo. - Limit the event types. The subscription supports feature flags so you can keep pulls, reviews, and deployments and drop everything else.
- Unsubscribe from noisy event types, especially commits. A commit feed in a shared channel is the fastest route to a muted channel.
As of November 2026 this is how the official app works, but treat the exact command syntax and flag names as something to confirm against the GitHub integration docs, since they can change.
A sensible starting point: subscribe #eng-prs to pull request and review events for active repos only, and #eng-releases to deployment events. Leave the leadership channel without any raw GitHub events at all.
If the bot does not respond: first invite it to the channel. Private channels require an explicit invite (/invite @GitHub). If that does not fix it, check that your GitHub organization has approved the app, because an unapproved app can sign in successfully yet see nothing.
Step 4: Add an analytics layer that interprets activity
Event notifications cannot show you cycle time trends, review bottlenecks, code churn, or momentum. Cycle time is the time from work starting to it shipping, and you only see its direction by comparing weeks, which a stream of individual events does not do. For that you need an analytics layer on top. If you are still comparing options, this roundup of GitHub integration analytics platforms is a good place to start.
Progress fills this role. It ingests data from GitHub and from Linear (or a similar issue tracker) and links work items to code activity, so a stalled PR can be tied to the initiative it belongs to. Connect both sources, and follow the principle of read-only access wherever the integration allows it. Review the scopes requested during authorization, and confirm the current onboarding steps and required scopes in the product itself rather than assuming, since they can change.
Then choose what to enable. Match these to your Step 1 spec:
- Stalled-work flags: work that has stopped moving past an expected window.
- Deployment risk and change pressure: an assessment based on merge volume plus code churn, the amount of code being rewritten or reworked. High change pressure in one service shortly before a release is a classic risk pattern.
- Initiative health: whether a larger work stream is on track.
- Team momentum: whether work is accelerating or slowing down.
Allow time for the initial data backfill before judging the output. Early readings built on partial history can look odd, and trends need a few weeks of data to mean anything.
Pitfall: do not compare raw counts of PRs or commits per person. Those numbers reward busyness and punish people who review, mentor, or tackle hard problems. Favor team-level signals, and treat any individual-level number as a prompt for a conversation, never a score.
Step 5: Route analytics signals into the right Slack channels
Open the spec from Step 1 and map each signal to exactly one channel. Stalled work goes to #eng-prs. Deployment risk goes to #eng-releases. Momentum and initiative health go to #eng-leadership-digest.
Then set the threshold and cadence for each. A simple rule: real time only for items that need action now, such as a risky release or a PR stalled beyond your agreed review window. If you need a refresher on diagnosing the latter, see this guide to finding and fixing stalled pull requests. Trends belong in a daily or weekly post, because nobody can act on a trend at 3 p.m. on a Tuesday.
A good alert answers three things: what is at risk, why, and where to look. For example, imagine this message in #eng-releases:
Release risk is elevated for Thursday's deploy. The payments service has seen unusually high merge volume and code churn over the past three days, with most changes landing after the last review pass. Details and the PR list: [link].
Compare that with "12 PRs merged today." The first suggests an action (take a closer look at payments before shipping). The second leaves the reader to work out whether it matters.
Team morale and wellness reads need extra care. Put them in a private manager channel and frame them as team-level context that helps you notice when workload or pace is becoming a problem. They are not a way to watch individuals, and the team should know they exist and what they measure.
Mistake to avoid: sending the same signal to several channels. When a stalled PR alert appears in three places, everyone assumes someone else will handle it, and the alert earns less attention each time it repeats.
Step 6: Schedule a weekly executive summary and ask questions in plain language
Set up a weekly summary post for a fixed time, such as Monday morning, in #eng-leadership-digest. It should cover shipped work, stalled initiatives, risk, and which way momentum is heading, which is the essence of engineering team momentum tracking. Keep it short enough to read in a minute. A reliable structure is:
- Three bullets on progress: what shipped and which initiatives moved.
- Two bullets on risks: stalled work or elevated release risk.
- One bullet on a decision needed: the thing leadership must weigh in on.
The single decision bullet matters most. It turns the summary from a status report into something that prompts action, and it gives readers a reason to open it every week.
Beyond scheduled posts, use the MCP server and Claude integration to ask questions in plain language, such as "what is blocking the billing initiative?" The answers are grounded in your actual GitHub and Linear activity rather than a generic guess. Confirm the setup steps for connecting the MCP server in the product documentation, as these details can change.
Treat answers as a fast starting point, not a verdict. When a question leads to a decision, such as delaying a release or reassigning work, open the source PRs and tickets and verify the specifics first. Questions about causes ("why did momentum drop?") especially deserve a check, since activity data shows what happened but rarely the full reason.
Tip: ask the same three questions every week, for instance what is blocked, what is riskiest for the next release, and where momentum changed. A consistent set builds a baseline, so a change in the answers stands out.
Step 7: Test, tune, and review after two weeks
Before announcing anything, test the pipeline end to end. Open a draft PR in an in-scope repo, leave it idle past your stalled-work threshold, and confirm the alert fires in the correct channel and only that channel. Do the same for any release-risk alert you can reasonably trigger, and check that private channels really are private.
After two weeks of real use, review alert health. For each signal, note roughly how many alerts led to an action and how many were ignored. A signal acted on far less than you expected has one of three problems: the threshold is too sensitive, it is in the wrong channel, or it simply is not useful. Retune it, move it, or mute it.
Bring the team into this. A short retro item works: which alerts helped, which did you scroll past, and what did you wish you had been told? Adjust thresholds, channel membership, and cadence based on what you hear. Engineers will tell you quickly if a nudge feels like nagging.
Put a quarterly review on the calendar. Repos get archived, teams reorganize, and a signal that mattered in January may be irrelevant by April. Prune repos and signals on a schedule so the setup does not quietly decay.
On benchmarks: avoid quoting review-time or cycle-time targets from memory. If you want an external reference point, cite a named source with its year, such as the DORA State of DevOps report, and read the current edition for its definitions. Your own trend over time is usually a more useful yardstick than anyone else's average, and a dedicated walkthrough on development cycle time tracking can help you establish that baseline.
Keep trimming until every alert earns its place
You now have the pieces in place: event notifications for what happened, an analytics layer for what it means, and a weekly summary for the people who decide. The work from here is maintenance. Confirm each signal reaches the right channel and actually gets acted on, revisit thresholds after two weeks, and keep removing anything the team scrolls past. A small set of alerts people trust beats a large set they have muted.