Skip to content

Slack Integration

Posts PR updates to channels and sends DMs when action needed.

Installation

Install the Slack App

  1. Visit: Add to Slack

  2. Select your Slack workspace and click Allow

Privacy

The Slack app only accesses channels you explicitly invite it to.

Configure Slack Mapping

This step connects your Slack workspace to your GitHub organization.

Create Configuration Repository

  1. Go to your GitHub organization: https://github.com/your-org
  2. Click New repository
  3. Name it .codeGROOVE (note the leading dot)
  4. Choose Public or Private - your choice
  5. Click Create repository

Find Your Slack Team ID

You'll need this to validate that notifications go to the correct workspace.

  1. In Slack, click your workspace name in the top-left
  2. Select Settings & administrationWorkspace settings
  3. Look at the URL in your browser address bar
  4. Your Team ID is in the URL (format: T09CJ7X7T7Y)
  5. Copy this ID
  1. Visit api.slack.com/methods/auth.test/test
  2. Click Test Method
  3. Copy the team_id from the response

Create Slack Configuration

In your .codeGROOVE repository, create slack.yaml:

global:
    team_id: T09CJ7X7T7Y        # Your Slack Team ID from step above
    email_domain: company.com   # Maps GitHub emails to Slack (alice@company.com → @alice)

channels:
    engineering:                 # Slack channel name (no # symbol)
        repos:
            - api-server         # GitHub repository name

Replace the team_id, email_domain, channel, and repo with your values.

global:
    team_id: T09CJ7X7T7Y
    email_domain: company.com

channels:
    engineering:
        repos:
            - api-server
            - mobile-app
    general:                    # Catch-all for unmapped repos
        repos:
            - "*"

Auto-discovery: Repos automatically map to same-named channels (e.g., backend repo → #backend channel). Only configure explicitly to override.

Commit and Push Configuration

  1. Add the file: git add slack.yaml
  2. Commit: git commit -m "Configure reviewGOOSE Slack integration"
  3. Push: git push

The app will automatically detect your configuration within 5 minutes.

Invite Bot to Channels

Now invite the bot to the Slack channels where you want PR notifications:

  1. Open the Slack channel (e.g., #engineering or #test-repo)
  2. Type and send: /invite @goose
  3. Repeat for each channel you want to receive notifications

Critical Step

The bot can only post to channels it's been invited to. Even with perfect configuration, you won't see messages until you invite the bot to the channel.

Evaluating?

Create a dedicated test channel like #goose-test to keep evaluation separate from your team's regular channels.

Verify Slack Integration

Create a test PR and confirm it appears in your Slack channel within seconds with status emoji updates.

Advanced Configuration

Auto-Discovery

Repos automatically map to same-named channels:

  • api-server repo → #api-server channel
  • mobile-app repo → #mobile-app channel

No config required.

Custom Mapping

To customize channel mapping, create a repository named .codeGROOVE in your GitHub organization, then add a file named slack.yaml to it:

Steps: 1. Create a new repository in your organization: .codeGROOVE (note the leading dot) 2. Add a file named slack.yaml with the following content:

global:
    slack: yourworkspace.slack.com

channels:
    engineering:
        repos:
            - api-server
            - mobile-app

    frontend:
        repos:
            - website

    all-repos:
        repos:
            - "*"  # Wildcard

    # Mute auto-discovered channel
    internal-tools:
        mute: true

Precedence: Explicit mapping > Muted channel > Auto-discovery > Wildcard

After editing slack.yaml:

  1. Validate YAML syntax at yamllint.com before committing
  2. Commit and push changes to the .codeGROOVE repository
  3. Changes take effect automatically (under 1 minute)
  4. Create a test PR to verify the configuration

Notification Timing

global:
    slack: yourworkspace.slack.com
    reminder_dm_delay: 65  # Minutes before DM if user in channel (0 = immediate)
    daily_reminders: true  # 8-9am local time

Default: If user is in the channel where PR posted, DM delayed 65 minutes. If not in channel, immediate DM.

Status Emojis

  • 🪿 reviewGOOSE prefix
  • ✅ Approved
  • 🔄 Changes requested
  • 👀 Needs review
  • 🔁 Needs re-review
  • ❌ CI failed
  • ✔️ CI passed
  • ⚠️ Merge conflict
  • 🎉 Merged

Commands

/goose dashboard - Open dashboard

/goose help - Show help

Security

Slack OAuth scopes:

  • channels:*, groups:* - Read channels, detect if user saw notification
  • chat:write* - Post messages
  • im:write - Send DMs
  • users:read.email - Match GitHub ↔ Slack users by email
  • team:read - Workspace verification

User emails hashed for matching, never stored plaintext. Details: Security

Troubleshooting

No channel messages: Verify app installed (Slack → Apps → Manage). Check slack.yaml syntax in your .codeGROOVE repository. Invite bot: /invite @goose. Verify workspace URL correct.

No DMs: Check email match (GitHub email = Slack email). Verify DM delay (default 65 min if in channel). Test: /goose help.

Too many notifications: Increase reminder_dm_delay: 120 or disable daily_reminders: false. Mute noisy repos.

Wrong channel: Check slack.yaml in your .codeGROOVE repository for typos. Review precedence rules above.

Get Support →