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
-
Reviewer requested 09:41:02 thread opened
!77 Harden edge cache invalidation
-
Pipeline failed 09:52:38
integration-tests, lint · 4m 12s
-
Pipeline recovered 10:06:11
all 9 jobs passed · 3m 48s
-
Approved 10:14:57
Priya Raman approved
-
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
-
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.
-
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.
-
02
Authorise the Slack workspace
Pick the workspace and let ForgeRelay post as an app. Channels appear in the searchable picker.
-
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.
-
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.
| Scope | Why it's needed |
|---|---|
| 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. |
-
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.
Put the review where the team already is.
Start with platform/edge → #eng-reviews, then add routes as the team grows.