The Ultimate Manual to GitHub-Slack Integration
Every day, hundreds of thousands of developers use GitHub to store and manage their code. The service has made version control and collaboration on software development projects a breeze. However, what’s missing from GitHub is easy real-time communication. This is where Slack comes in.
Slack is a powerful IRC-style chat software designed specifically for work. It allows teams to communicate in chat rooms organized by topic or departments that can be public or private. Slack is more than just a chat software though and offers powerful integrations that allow users to execute commands on integrated apps right from the chat interface.
In this article, we’re going to examine what it means to integrate GitHub with Slack, how this integration works, and can you get started with your own GitHub-Slack integration.
What is the GitHub-Slack Integration Anyway?
Integrating any two apps allows them to “talk” to each other. This is usually done using an API or in simpler words, a bridge of sorts that allows data to flow between the two apps.
When you integrate GitHub with Slack, it becomes possible for the apps to read each other’s data, send notifications of different events in the Slack channels of your choosing, and process inputs from each other in a variety of ways. This lets you use the two apps in conjunction to add real-time communication to your code management processes.
How the GitHub-Slack Integration Works
The GitHub-Slack integration gives you and your teams a complete view of your GitHub projects directly from your Slack channels. Teams can generate ideas, discuss issues, and work with other teams to make progress on their projects quickly and reliably – all from within the Slack app.
Let’s take a closer look at how the integration works and what it can do for you.
Slash Commands for GitHub Actions
Teams using Slack often reach decisions in their chatrooms. Slash commands allow them to immediately take action on those decisions. Once you’ve successfully integrated GitHub with Slack, you can use Slack’s “slash commands” right from the chat window. Slash commands form the basis of how you can interact with GitHub from Slack.
The default syntax for slash commands for common GitHub actions is:
/github [action] [resource]
Examples of things you can do with slash commands are:
- Close an issue or pull request with /github close [issue link]
- Reopen an issue or pull request with /github reopen [pull request link]
- Open a new issue with /github open [owner/repo]
Follow Your Team’s Repositories
You can use the subscribe argument with the /github slash command followed by the location of your target repository to follow it.
Use /github subscribe [owner/repo]
Once you subscribe to a repository, you’ll receive updates on it. The types of updates you receive depend on what kind of notifications you have enabled. The following notifications are enabled by default:
- Issues – Opened or closed issues
- Pulls – New or merged pull requests, as well as draft pull requests marked “Ready for Review”
- Commits – New commits on the default branch (usually main)
- Deployments – Deployment review notifications and Deployment status updates.
On the other hand, the following types of updates are disabled by default and need to be enabled by the user:
- Reviews – Pull request reviews.
- Comments – New comments on issues and pull requests.
- Branches – Created or deleted branches.
- Commits:all – All commits pushed to any branch.
- +label:”your label” – Filter issues, pull requests, and comments based on their labels.
- Discussions – Discussions created or answered
To enable/disable certain kinds of notifications, use the following slash command format:
To subscribe: /github subscribe [owner/repo] [notification type]
To unsubscribe: /github unsubscribe [owner/repo] [notification type]
See Rich Previews When Sharing Links
When you post a link from GitHub to Slack, its contents show up as a preview in your Slack channel. Previews are enabled for the following types of links:
- Issues
- Pull requests
- Directly linked comments
- Code blobs with line numbers
- Organizations
- Repositories
- Users
Previews of links are not shown if:
- Your workplace has disabled link previews for github.com.
- The same link was already shared within the last 30 minutes in the same channel.
- The same chat message contains three or more links.
- The link is for a private repository and the user who shared the link has not signed in to their GitHub account.
- When prompted, you choose not to show a preview.
- The GitHub app was not invited to the channel, which you can remedy with /invite @github
Get Updates As You Go
Receive notifications and updates on Slack about the activities taking place on your repositories, such as:
- New commits
- New pull requests
- New issues
- Code reviews
Turn Conversations Into Next Steps
Take decisions and actions on issues in the same chat window with the GitHub-Slack integration. Using slash commands, you can:
- Close an issue or pull request with /github close [issue link]
- Reopen an issue or pull request with /github open [pull request link]
- Open a new issue with /github open [owner/repo]
This added functionality helps development teams document everything without a hassle and move their projects forward at a faster pace.
Scheduled Reminders
Scheduled reminders are a priority-setting tool. You can set scheduled reminders to make sure your team members spend their time working on the highest priority review requests that require their attention.
Scheduled reminders for pull requests send a message to the target recipient in Slack, listing open pull requests needing their review at a time of your choosing. You can set these reminders for yourself as well.
For instance, you can configure scheduled reminders such that they message you in Slack at 9 AM every morning, listing pull requests that require a review from you or your team members.
Depending on your needs, you can set up scheduled reminders for yourself, your team, and your organization.
Personal Scheduled Reminders
You can configure personal scheduled reminders as part of your GitHub personal app in Slack. These reminders can be set for personal or team-level review requests for pull requests in organizations you’re a part of. Personal reminders also allow you to set up real-time alerts for your pull requests
Channel level scheduled reminders
To keep your whole team on top of their priorities, you can configure scheduled reminders for pending pull requests for your Slack channels. For a specific Slack channel, you can set up scheduled reminders for your team or your organization.
Permissions
To complete the GitHub-Slack integration, you’d be required to grant certain permissions to both platforms. Here are the permissions required along with the reasons why they’re necessary:
Slack Permissions
Permission Scope | Why is it Required |
Access private conversations between you and the App | To message you with instructions. |
View links to GitHub.com in messages | To render rich links from github.com |
Add link previews to GitHub.com to messages | To render rich links to github.com |
Add slash commands | To add the /github slash command to your Slack workspace |
View the workspace or organization’s name, email domain, and icon | To store subscriptions you set up |
Post messages as the app | To notify you of activity that happens on GitHub in Slack |
GitHub Permissions
Permission Scope | Why is it Required |
Read access to code | To render code snippets in Slack |
Read access to commit statuses, checks, discussions, issues, metadata, pull requests, and repository projects | To render previews of links shared in Slack |
Write access to issues, deployments, and pull requests | To take action from Slack with the /github command and directly from messages |
Example #1: Notification Customization
With the GitHub-Slack integration, you can choose which notifications to subscribe and unsubscribe from based on their relevance and priority for you and your team. For this example, let’s unsubscribe and then resubscribe from the “issues” notifications for the repository “test” by the user “atharalikhan”.
It’s important to note here that we’re running the unsubscribe argument first because we’re already subscribed to the “issues” notifications by default.
The slash command for this would be:
/github unsubscribe atharalikhan/test issues
To resubscribe, enter the following:
/github subscribe atharalikhan/test issues
Here’s what it looks like when you execute these commands in Slack:
Notice how the GitHub bot removes and then adds the “Issues” tag after each of the commands, confirming correct execution.
Example #2: Open a New Issue
Using the GitHub-Slack integration, you can directly open and close issues from your Slack chatroom. For this example, let’s open a new issue on a repository called “test” by the user “atharalikhan”. The slash command for this would be:
/github open atharalikhan/test
Upon execution of the command, a new box opens up in Slack, asking for more details about the issue to be created. Enter the required information and click “Open” to complete the task.
Here’s the acknowledgment from the GitHub bot after you create the issue.
Further confirmation that the issue was created in your GitHub repository:
How to Get Started With GitHub-Slack Integration
Step 1: Locate the Integration Page
You can integrate GitHub with Slack in two easy ways:
- Slack App Directory
- GitHub-Slack Integration Page
In either case, you need to be signed in to your Slack and GitHub accounts for the integration exercise to be successful.
Let’s look at each of the methods in more detail.
Slack App Directory
- To trigger the integration from the Slack App Directory, the first step is to go to https://slack.com/apps.
- Here, you can use the search option to find the GitHub integration page.
GitHub-Slack Integration Page
- To integrate GitHub with Slack from the GitHub website, simply go to https://slack.github.com
Step 2: Initiate Integration
Slack App Directory
- From the GitHub App Page in the Slack App Directory, click the “Add to Slack” button to initiate the integration process.
- The next screen is going to ask you to review and accept app permissions.
- Click “Allow” to accept the permissions request and move forward with the integration process.
GitHub-Slack Integration Page
- On the GitHub-Slack Integration page, click the “Add to Slack” button to initiate the integration process.
- You will receive the same permissions access request as on the Slack App Directory.
- Click “Allow” to complete the move the integration process forward.
Step 3: Complete the Integration
- As soon as you click the “Allow” button, your Slack app would be activated where you’d see welcome messages from GitHub.
- At this stage, you’re required to connect and authenticate your GitHub as instructed by the GitHub bot. Click the “Connect GitHub account” button to continue.
- GitHub will present you with another app integration screen. Click “Connect GitHub account” to proceed.
- On the next screen, you may be asked to sign in to your GitHub account.
- Once you’re signed in, you’ll be presented with yet another authorization request screen.
- Click on “Authorize Slack” to move to the next step.
- On the next screen, you’re finally going to receive the authorization code you need to complete the integration. Click the “Enter code” button in Slack to get a prompt where you can paste the code.
- Upon receiving the correct code, the GitHub bot immediately messages you to confirm the completion of the integration at its end and offers you guidance on what you can do next.
- After getting confirmation from the GitHub bot in Slack, you can enter your first slash command. For example, let’s use /github unsubscribe [user]/[repository] issues. This sample command will unsubscribe you from notifications about issues created in the repository mentioned.
- At this point, the GitHub bot is going to ask you to install Slack on your GitHub account. Click “Install GitHub App” to proceed.
- When installing the Slack app on your GitHub account, you can choose to install it for all repositories or only for a few. Once you’ve made your selection, click “Install”.
Congratulations! You have completed the GitHub-Slack integration!
Step 4: Customize your notifications
Now that you’ve completed the integration, it’s time to decide on what notifications you’d like to receive.
GitHub makes it simple to customize what gets posted on Slack. Just subscribe to the activities that are relevant for the whole channel to see and unsubscribe from other types that don’t directly concern you or your team. As mentioned before, you can use the following command to manage notification subscriptions:
To subscribe: /github subscribe [owner/repo] [notification type]
To unsubscribe: /github unsubscribe [owner/repo] [notification type]