reviewGOOSE:Slack is the Slack integration for reviewGOOSE — it keeps your team informed about GitHub pull requests. It creates threads for PRs, tracks their status with emojis, and sends smart notifications so reviewers know when it's their turn.
- Install the Slack app
- Configure your repositories
- Understand the status emojis
- Customize notifications
When you click "Add to Slack", you'll be asked to authorize these permissions:
- Post messages (
chat:write) - Create PR threads and send notifications - Read channel info (
channels:read,groups:read) - Find channels to post to - Read messages (
channels:history,groups:history) - Detect if users were already notified - Send DMs (
im:write) - Notify reviewers directly - Add reactions (
reactions:write) - Update PR status emojis - View workspace (
team:read) - Validate workspace configuration - View users (
users:read) - Find Slack users matching GitHub usernames
All permissions are used exclusively for PR notifications and status tracking. The bot is hosted as a SaaS service - you don't need to run any servers.
Once installed, the bot needs to know which GitHub repositories to track. Continue to the next section to configure your repos.
reviewGOOSE:Slack reads its configuration from a special GitHub repository in your organization. This lets you version-control your notification settings centrally.
In your GitHub organization, create a repository named .codeGROOVE (note the leading dot). This repository can contain multiple configuration files for various codeGROOVE tools.
In the .codeGROOVE repository, create a file named slack.yaml
Here's a minimal configuration to get started:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
channels:
engineering:
repos:
- "*"What this does:
- Validates that this config is for your Slack workspace (by team ID)
- Maps GitHub users to Slack users using your email domain
- Posts all PRs to the
#engineeringchannel
Finding your Team ID:
- In Slack, click your workspace name → Settings & administration → Workspace settings
- Look at the URL - it contains your team ID (e.g.,
T09CJ7X7T7Y) - Or use the Slack API tester: https://api.slack.com/methods/auth.test/test
By default, repositories automatically map to channels with the same name:
- Repository
backend→ Channel#backend - Repository
mobile-app→ Channel#mobile-app - Repository
docs→ Channel#docs
You don't need to configure anything for this to work! The bot automatically discovers channels.
To override auto-discovery, explicitly add repos to a channel:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
channels:
# Send backend & api PRs to #platform instead of their own channels
platform:
repos:
- backend
- api
# Mute auto-discovered #mobile-app channel
mobile-app:
mute: true
# Catch-all for repos without specific channels
general-engineering:
repos:
- "*"git add slack.yaml
git commit -m "Configure reviewGOOSE:Slack"
git pushThe bot will automatically detect the configuration in your .codeGROOVE repository and start posting PR updates for all PRs in your organization!
The bot updates the emoji at the start of each PR message to reflect its current state:
| Emoji | Status | Meaning | Blocked On |
|---|---|---|---|
| 🧪 | Tests Running | CI/CD checks are pending or in progress | GitHub Actions |
| 🪳 | Tests Broken | One or more checks have failed | Author |
| ⌛ | Awaiting Review | Ready for review, waiting on reviewers | Reviewers |
| 🪚 | Needs Work | Approved but requested changes | Author |
| ✅ | Approved | Reviewed and approved, ready to merge | Author |
| 🚀 | Merged | PR has been merged | None |
| ❌ | Closed | PR was closed without merging | None |
:hourglass: Add user authentication • backend#42 by @alice
When tests pass and the PR gets approved, the message updates to:
:white_check_mark: Add user authentication • backend#42 by @alice
Pro tip: The PR URL includes a debug state parameter (e.g., ?st=awaiting_review) that shows what state the bot detected when it last updated.
By default, the bot uses smart logic to avoid spamming DMs:
If a user is tagged in a channel they're in:
- Bot waits 65 minutes before sending a DM
- Gives them time to see the channel notification first
- Prevents duplicate notifications
If a user is NOT in the channel where they're tagged:
- Bot sends an immediate DM
- Ensures they don't miss the notification
One DM per user per PR:
- Even if the PR is posted to multiple channels
- Each user only gets notified once
You can customize how long the bot waits before sending DMs:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
reminder_dm_delay: 30 # Wait 30 minutes instead of default 65Set to 0 to disable delayed reminders entirely (DMs sent immediately):
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
reminder_dm_delay: 0 # No delays, always DM immediatelyOverride the delay for specific channels:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
reminder_dm_delay: 65 # Default for most channels
channels:
urgent-fixes:
repos:
- backend
reminder_dm_delay: 5 # Only wait 5 minutes for urgent channelEnable daily reminders sent between 8-9am in each user's local timezone:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
daily_reminders: true # Default: falseDaily reminders only trigger if:
- More than 8 hours have passed since last notification
- The user has PRs waiting on them
- It's between 8-9am in their timezone
Add a custom emoji prefix to all PR messages:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
prefix: ":postal_horn:"Messages will appear as:
:postal_horn: :hourglass: Add user authentication • backend#42 by @alice
Send PRs from one repo to multiple channels:
channels:
backend-team:
repos:
- backend
all-prs:
repos:
- backend
- frontend
- mobileNow backend PRs appear in both #backend-team and #all-prs.
Use "*" to catch all repositories:
channels:
all-engineering:
repos:
- "*" # Catch all repos
security:
repos:
- auth-service # Also send auth-service hereEvery PR goes to #all-engineering, but auth-service also goes to #security.
If a channel auto-discovery is matching a channel you don't want to post to:
channels:
# Don't post to auto-discovered #staging channel
staging:
mute: true
# Send staging repo PRs to #platform instead
platform:
repos:
- stagingglobal:
team_id: T09CJ7X7T7Y
email_domain: acme-corp.com
prefix: ":bell:"
reminder_dm_delay: 45
daily_reminders: true
channels:
# High-priority repos with immediate notifications
critical:
repos:
- auth-service
- payment-api
reminder_dm_delay: 0 # Immediate DMs
# Backend team repos
backend:
repos:
- user-service
- data-pipeline
- analytics
# Frontend repos (auto-discovery)
# web-app → #web-app
# mobile-app → #mobile-app
# No explicit config needed!
# Mute auto-discovered internal-tools channel
internal-tools:
mute: true
# Catch-all for repos without specific channels
general:
repos:
- "*"
reminder_dm_delay: 120 # Wait 2 hours for general channelreviewGOOSE:Slack provides two ways to view your PRs:
- Click "reviewGOOSE" in your Slack sidebar
- Select the "Home" tab
- View incoming PRs (waiting on you) and outgoing PRs (waiting on others)
Visit reviewgoose.dev for a comprehensive web view.
Check your configuration:
- Do you have a
.codeGROOVErepository in your GitHub organization? - Is
slack.yamlcommitted to the.codeGROOVErepo's main branch? - Does the
team_idfield match your Slack workspace's team ID exactly? - Is the
email_domainset correctly for mapping GitHub users to Slack users? - Are you posting to a channel that exists?
Check channel permissions:
- The bot needs permission to post in the channel
- Try inviting the bot:
/invite @goose
Check notification settings:
- Verify
reminder_dm_delayisn't set too high - Check if you were already notified in a channel you're in
- Ensure Slack notifications are enabled for DMs
User mapping:
- The bot maps GitHub usernames to Slack usernames
- If they don't match, the bot can't find you
- Contact your admin to check the user mapping
If auto-discovery isn't working:
- Channel name must match repository name exactly
- Use explicit mapping in config if names differ:
channels:
my-channel:
repos:
- my-differently-named-repoAfter changing slack.yaml:
- Commit and push your changes
- Wait up to 5 minutes for the bot to reload
- Test with a new PR or comment
Still having issues? Check the bot's logs or contact support.
Begin with a minimal config and add complexity as needed:
global:
team_id: T09CJ7X7T7Y
email_domain: mycompany.com
channels:
engineering:
repos:
- "*"Let the bot automatically map repos to channels - only override when necessary.
- Create a test repository
- Add configuration pointing to a test channel
- Open a PR and verify notifications work
- Roll out to production repos
Store slack.yaml in Git alongside your code:
- Track configuration changes
- Review changes in PRs
- Roll back if needed
Before enabling:
- Announce the bot to your team
- Explain the emoji meanings
- Share this guide
- Invite feedback on notification timing
- Documentation: github.com/codeGROOVE-dev/slacker
- Issues: GitHub Issues
- Support: Contact your reviewGOOSE administrator
reviewGOOSE:Slack is part of the codeGROOVE ecosystem of developer tools. Check out:
- reviewGOOSE:Desktop - Desktop app with honk notifications
- reviewGOOSE Dashboard - Web-based PR dashboard
- codeGROOVE.dev - Developer acceleration tools
Happy reviewing!