Skip to content

GitHub integration

Connect your GitHub repositories to Round Robin rotations and automatically notify on-duty team members about important GitHub events, such as pull requests, issues, and code reviews.

The GitHub integration allows you to:

  • Receive notifications about GitHub activity directly in Slack
  • Route notifications to on-duty users, specific channels, or both
  • Filter by repository — choose to monitor all repositories or select specific ones
  • Customize events — pick which GitHub events trigger notifications
  • Create custom templates — personalize notification messages with dynamic placeholders
  1. Navigate to SettingsIntegrationsGitHub
  2. Click Install GitHub App
  3. You’ll be redirected to GitHub to authorize the app
  4. Choose which organization or personal account to install the app on
  5. Select which repositories the app can access (all or specific repositories)
  6. Complete the installation

Once installed, you’ll see your connected GitHub account on the integrations page.

After connecting GitHub, you can enable GitHub notifications for any rotation:

  1. Go to the rotation’s detail page
  2. Click Configure GitHub
  3. Choose your settings (see below)
  4. Click Save

Choose which repositories will trigger notifications for this rotation:

  • All Repositories — Any repository accessible by the GitHub App will trigger notifications
  • Specific Repositories — Select individual repositories from the list

Control who receives GitHub notifications:

  • On-Duty Users: Only users currently on duty receive direct messages
  • Rotation Channels: Notifications are posted to the rotation’s configured Slack channels
  • Both: Notifications go to both on-duty users and channels

You can choose which GitHub events trigger notifications. You can use the Default Events preset or create a Custom Event Selection.

You can customize the notification message for any event type. Templates support both general (applies to all actions of an event type) and action-specific customizations.

When a GitHub event occurs, the system looks for a template in this order:

  1. Action-specific template (e.g., template for “PR merged”)
  2. Event-type template (e.g., template for all PR events)
  3. Default template (built-in message)

This allows you to have a general template for most actions but override specific ones. For example, you might want a special celebration message when a PR is merged, but use a standard template for other PR actions.

Use these placeholders in your templates to create dynamic messages:

Placeholder Description Example
%ROTATION_NAME% Name of the rotation “Backend Team On-Call”
%GITHUB_ACTOR% User who triggered the event “johndoe”
%GITHUB_REPOSITORY% Full repository name “acme/backend-api”
%GITHUB_REPOSITORY_SHORT% Repository name only “backend-api”
%GITHUB_EVENT_TITLE% Title of the PR or issue “Add user authentication”
%GITHUB_EVENT_URL% Link to the PR or issue (clickable link)
%GITHUB_EVENT_DESCRIPTION% Body/description (truncated) PR or issue body text
%GITHUB_EVENT_TYPE% Type of event “pull_request”
%GITHUB_ACTION% Specific action “opened”, “merged”, etc.
%GITHUB_LABEL% Label name (for label events) “bug”, “enhancement”

General PR template: 🔔 PR activity in `%GITHUB_REPOSITORY_SHORT%`: %GITHUB_EVENT_TITLE% By %GITHUB_ACTOR% • Rotation: %ROTATION_NAME%

PR merged celebration: 🎉 *PR merged!* %GITHUB_EVENT_TITLE% Great work, %GITHUB_ACTOR%! Another one shipped in `%GITHUB_REPOSITORY_SHORT%`

New issue notification: 🐛 New issue: %GITHUB_EVENT_TITLE% Opened by %GITHUB_ACTOR% in `%GITHUB_REPOSITORY_SHORT%` %GITHUB_EVENT_DESCRIPTION%

Label added: 🏷️ Label `%GITHUB_LABEL%` added to: %GITHUB_EVENT_TITLE%

When a GitHub event occurs in a monitored repository:

  1. GitHub sends a webhook to Round Robin
  2. Round Robin checks which rotations are configured for that repository
  3. For each matching rotation, it:
  • Verifies the event type is enabled
  • Finds the current on-duty users (if applicable)
  • Applies the appropriate template (custom or default)
  • Sends notifications to the configured targets

Default PR opened notification: > 🔄 New PR opened: Add user authentication

by johndoe in backend-api  repository

Rotation: Backend Team > > This PR adds OAuth2 authentication flow…

Default PR merged notification: > 💜 PR merged: Add user authentication

by johndoe in backend-api  repository

Rotation: Backend Team

Default issue comment notification: > 💬 New comment on issue: Bug: Login fails on Safari

by janedoe in frontend-app  repository

Rotation: Frontend Support

  1. Check the GitHub connection — Go to Settings → Integrations → GitHub and verify the connection is active
  2. Verify repository access — Ensure the GitHub App has access to the repository in question
  3. Check rotation settings — Confirm the event type is enabled and the repository is included
  4. Verify on-duty status — If targeting on-duty users, confirm someone is currently on duty

Templates are applied in order of specificity. If you’re seeing the wrong message: 1. Check if there’s an action-specific template overriding your general template 2. Verify the template key matches the expected format (e.g., pull_request:merged  for PR merge events)

This can happen if: - The app was uninstalled from GitHub - Permissions were revoked - The installation was suspended

To fix, reinstall the GitHub App from the integrations page.

Q: Can I use GitHub integration with a free plan?

A: No, GitHub integration is available on paid plans only.

Q: How many repositories can I monitor?

A: There’s no limit. You can monitor as many repositories as the GitHub App has access to.

Q: Can different rotations monitor the same repository?

A: Yes! Multiple rotations can be configured for the same repository, each with their own event settings and templates.

Q: Are private repositories supported?

A: Yes, as long as the GitHub App is installed with access to those private repositories.

Q: What happens if no one is on duty?

A: If notification target is set to “On-Duty Users” and no one is on duty, no notification is sent. Consider using “Both” to ensure channel notifications always go through.