GitLab → Slack

GitLab merge requests, threaded in Slack.

Relay GitLab merge requests and pipeline status to Slack. Failures and recoveries stay in the review thread that caused them.

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

platform/edge !77 rt_02 branch = main #eng-reviews
  1. Reviewer requested 09:41:02 thread opened

    !77 Harden edge cache invalidation

  2. Pipeline failed 09:52:38

    integration-tests, lint · 4m 12s

  3. Pipeline recovered 10:06:11

    all 9 jobs passed · 3m 48s

  4. Approved 10:14:57

    Priya Raman approved

  5. Merged 10:21:04

    !77 merged into main

What gets relayed

GitLab events, chosen per route.

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

  • merge_request.opened
  • merge_request.review_requested
  • merge_request.approved
  • merge_request.changes_requested
  • merge_request.merged
  • merge_request.closed
  • pipeline.failed
  • pipeline.recovered
  • build (job) events
  • note.created (top-level)
  • push.commits (commit digests)

In the channel

One conversation in Slack.

Reviewers see the merge request summary in the channel and the pipeline story inside its thread.

Route
rt_02
Source
platform/edge
Destination
Northwind HQ #eng-reviews
Northwind HQ · #eng-reviews
thread · 6 messages
  • FR

    ForgeRelay APP 14:02

    !77 Review requested — cache invalidation

    Status: Awaiting review

    platform/edge · 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 merge 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

    !77 Merged — cache invalidation

    Status: Merged

    platform/edge · 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 merge request

Setup

Connect GitLab and Slack.

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

  1. 01

    Connect GitLab with OAuth

    A token with read_api and read_repository is enough to relay merge request, pipeline and job events. ForgeRelay registers pipeline and job webhooks automatically. Push webhooks are added only when you opt into commit digests.

  2. 02

    Authorise the Slack workspace

    Pick the workspace and let ForgeRelay post as an app. Channels appear in the searchable picker.

  3. 03

    Create the route

    platform/edge → Northwind HQ #eng-reviews with the Full merge request lifecycle preset. Optional commit routes can watch main without opening a merge request.

  4. 04

    Turn on MR pipeline status

    Choose failures and recovery, post into the existing merge request thread, and include failed jobs.

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
  • MR pipeline status — failures, recovery, or all changes

MR pipeline status

MR pipeline status is a first-class feature.

Pick failures only, failures and recovery, or all changes. Post into the existing merge request thread or as a new message, and include failed jobs, duration, SHA, and a link to the pipeline.

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.

  • read_api

    Read merge request state, reviewers, diff totals and pipeline metadata.

  • read_repository

    Resolve branch names and commit SHAs in messages, and support commit digests.

  • Pipeline events

    Relay pipeline failure, recovery and suite-level snapshots for Live CI.

  • Job events

    Receive each Job Hook (build) so Live CI cards keep every parallel job — pipeline snapshots alone are not enough.

  • Webhook: push events

    Receive push hooks; digests only post when a Commits route matches.

  • Project members: read

    Suggest identity mappings for reviewer mentions.

  • Webhook secret token

    Verify every incoming payload 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

GitLab and Slack, specifically.

Yes. With a GitLab source, the route editor and messages say merge request and pipeline, and reference !77 rather than #77.

Yes. Set MR pipeline status to post as a new message when a failing pipeline needs channel-level visibility.

The prototype assumes a reachable GitLab API and webhook endpoint. Self-managed support is a planned capability, not a shipped one.

The next pipeline for the same merge request that finishes successfully after a failure.

Digests post when a Commits route matches. They are filtered by branch, author, bots and conventional commit type — not every push everywhere.

Put the review where the team already is.

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