GitHub → Slack

GitHub pull requests, threaded in Slack.

Relay GitHub pull requests and checks to Slack. Keep one thread per request, mention mapped reviewers, and nudge delayed reviews once.

Free for up to 3 mapped people · Unlimited repos · No credit card

northwind/api #482 rt_01 branch = main #eng-reviews
  1. Reviewer requested 14:02:11 thread opened

    #482 Cache invalidation for edge reads

  2. Checks failed 14:09:44

    build (node 20) · 2m 31s

  3. Checks recovered 14:24:02

    all 6 checks passed · 2m 07s

  4. Stale review reminder 09:30:00

    open 19h with one reviewer requested

  5. Merged 10:47:19

    #482 merged into main

What gets relayed

GitHub events, chosen per route.

Pick a preset or select events individually. Everything below can travel to #eng-reviews through one route.

  • pull_request.opened
  • pull_request.review_requested
  • pull_request.approved
  • pull_request.changes_requested
  • pull_request.merged
  • pull_request.closed
  • check_run.completed
  • check_suite.completed
  • workflow_run.completed
  • issue_comment.created (top-level)
  • push.commits (commit digests)

In the channel

One conversation in Slack.

Slack threads keep the review out of the main channel while the summary message stays visible.

Route
rt_01
Source
northwind/api
Destination
Northwind HQ #eng-reviews
Northwind HQ · #eng-reviews
thread · 6 messages
  • FR

    ForgeRelay APP 14:02

    #482 Review requested — cache invalidation

    Status: Awaiting review

    northwind/api · feat/edge-cache main

    Opened by
    dana.k
    Reviewers
    alex.r
    CI
    2 pending, 4 total
    Size
    +128 · −41 · 3 files

    Opened 2 hours ago · Last activity 4 minutes ago · ForgeRelay

    Open pull request

  • FR

    ForgeRelay APP 14:09

    Open pipeline #58217

    2 of 9 jobs failed.

    Passed

    build, typecheck, security, e2e, deploy-preview, docs, coverage

    Failed

    integration-tests, lint

    Duration
    2m
    SHA
    83c1a8e

    ForgeRelay

  • DK

    Dana Køhler 14:16

    Missing lockfile bump. Pushing now.

  • FR

    ForgeRelay APP 14:24

    Open pipeline #58217

    Checks are green again.

    Passed

    integration-tests, lint, build, typecheck, security, e2e, deploy-preview, docs +1 more

    Duration
    2m
    SHA
    83c1a8e

    ForgeRelay

  • FR

    ForgeRelay APP Next day, 09:30

    Still waiting on review · @dana.k

  • FR

    ForgeRelay APP 11:04

    #482 Merged — cache invalidation

    Status: Merged

    northwind/api · feat/edge-cache main

    Opened by
    dana.k
    Reviewers
    None
    CI
    4 passing
    Size
    +128 · −41 · 3 files

    Opened 2 hours ago · Last activity 4 minutes ago · ForgeRelay

    Open pull request

Setup

Connect GitHub and Slack.

Four steps in the control panel. Nothing to deploy, no YAML to maintain.

  1. 01

    Install the GitHub app

    Grant the listed read permissions for the repositories you want to relay. ForgeRelay never asks for write access to code, and never pushes to your repositories.

  2. 02

    Authorise the Slack workspace

    Pick the workspace, then let ForgeRelay post as an app. Channels appear in the searchable destination picker.

  3. 03

    Create the route

    northwind/api → Northwind HQ #eng-reviews. Start from Review essentials for the PR lifecycle, or Full lifecycle when you also want CI. Optional commit digest routes can watch branches like main when you opt in.

  4. 04

    Map the reviewers

    Accept the suggested matches on the People page so review requests mention real Slack users.

Message customisation

Route behaviour and a shared status palette.

Set message behaviour per route, then choose one organisation-wide PR/MR status palette for Slack and Discord.

  • Custom PR/MR status colours — one organisation palette across Slack and Discord
  • One thread per request — keep every update in one place
  • Mention mapped reviewers — resolve forge accounts to chat users
  • Include diff summary — files changed and line counts
  • Include link to the forge — one click back to the request
  • Compact messages — a single line for low-signal channels
  • Relay top-level comments — discussion without review noise
  • Stale review reminder — one quiet nudge, then silence

Check status

Check runs, including recovery.

Relay failures only, failures and recovery, or all changes. Updates can post into the existing pull request thread or as a new message, and carry the failed check, duration, SHA, plus a link back to GitHub.

Open pipeline #58217

2 of 9 jobs failed.

Passed

build, typecheck, security, e2e, deploy-preview, docs, coverage

Failed

integration-tests, lint

Duration
2m
SHA
83c1a8e

ForgeRelay

Open pipeline #58217

Checks are green again.

Passed

integration-tests, lint, build, typecheck, security, e2e, deploy-preview, docs +1 more

Duration
2m
SHA
83c1a8e

ForgeRelay

Permissions

What ForgeRelay asks for, and why.

Least-privilege by design. ForgeRelay never needs to push code or manage members.

  • Pull requests: read

    Read request titles, reviewers, state changes and diff totals.

  • Checks: read

    Subscribe to check_run and check_suite so Live CI cards list each job, failure, duration and recovery.

  • Actions: read

    Subscribe to workflow_run so PR and Live CI cards refresh when a GitHub Actions workflow finishes (per-job detail still comes from check_run).

  • Contents: read

    Required to subscribe to Push events and resolve compare or commit links for digests — not to browse or mirror the repository.

  • Metadata: read

    Resolve repository names and default branches.

  • Members: read

    Suggest identity mappings between forge and chat accounts.

  • Webhook: Check suite / Check run

    Receive per-job CI updates for Live CI cards and failure/recovery pings.

  • Webhook: Workflow run

    Refresh CI status when an Actions workflow completes, even before every check_run has landed.

  • Webhook: Push

    Receive push payloads; ForgeRelay ignores them unless a Commits route matches.

  • Webhook secret

    Verify every incoming payload signature before processing.

  • chat:write

    Post the relayed message and its thread updates.

  • channels:read

    List channels in the searchable destination picker.

  • users:read

    Resolve mapped reviewers so mentions reach a real person.

  • chat:write.customize

    Send as ForgeRelay with a consistent app identity.

no code write access Full security overview

FAQ

GitHub and Slack, specifically.

The first event posts a message in #eng-reviews. Every later update for that pull request goes into its thread while One thread per request is on.

Yes. Create a second route for northwind/api with a different destination — for example merges into #releases.

The message falls back to the GitHub handle as plain text rather than mentioning the wrong Slack user.

Only branches allowed by the route conditions. Leave conditions empty to relay everything, or set branch = main to narrow it.

GitHub requires Contents: read to subscribe to Push events and to resolve compare or commit links for digests. ForgeRelay does not clone repositories or store your source tree, and never writes to code.

Optional commit digest routes can post one filtered digest per push to a watched branch. Reviews stay in threads. Direct-to-main stays visible. Push events stay off until you opt in.

Put the review where the team already is.

Start with northwind/api → #eng-reviews, then add routes as the team grows.