Pick your provider
A workspace connects one source provider. The Slack side is identical either way; only the provider connection differs:- GitLab connects via OAuth (gitlab.com) or a
read_apipersonal access token, plus a webhook you point at PRFlow. Works with gitlab.com and self-managed instances. - GitHub is a one-click install of the read-only PRFlow GitHub App — no webhook URLs, no tokens or secrets to paste. Works with github.com organizations and personal accounts.
Set up with GitLab
1
Sign in and pick a workspace
Sign in at app.prflow.dev and create or select a
workspace. Each PRFlow workspace connects to one GitLab organization
(top-level group) and one Slack workspace.
2
Connect GitLab
From Home or Settings → Connections, choose your instance type:
- gitlab.com — connect via OAuth (PRFlow requests only the
read_apiscope; tokens auto-refresh), or save a personal access token instead. - Self-managed GitLab — enter your instance root URL (HTTPS required;
PRFlow appends
/api/v4automatically) and save a personal access token. OAuth is not available for self-managed instances.
read_api scope and access to the
GitLab group you want PRFlow to use. PRFlow validates the token on save —
scope, expiry, and revocation — and recommends a dedicated service-account
token over a personal one to reduce operational risk. Token health
(expiring, expired, revoked) is surfaced on the dashboard afterwards.During connection, PRFlow resolves the top-level GitLab group your
credential can access and binds the workspace to it. One GitLab
organization maps to one PRFlow workspace — connecting the same GitLab
group to a second workspace is rejected.3
Add the webhook in GitLab
PRFlow shows your workspace’s unique webhook URL under
Settings → Connections → GitLab Webhook. In GitLab, add it as either:
- Group webhook (recommended) — add the URL once on your top-level group (Group → Settings → Webhooks). Covers all projects in the group. Requires the Owner role and GitLab Premium or Ultimate.
- Per-project webhooks — add the same URL to each project (Project → Settings → Webhooks). Works on every GitLab tier, including Free. Requires Maintainer or Owner on each project.
X-Gitlab-Token header on every delivery.4
Connect Slack
Authorize PRFlow’s Slack app via OAuth. PRFlow requests four bot scopes:
chat:write, chat:write.public, channels:read, and groups:read —
enough to list channels and post/update messages, nothing more.5
Create a notification rule
Click + New rule on the dashboard, pick the destination Slack channel
(PRFlow fills in the rule name for you), and choose what routes there: a
specific project, a wildcard pattern on the full GitLab path such as
acme/frontend/*, or every repository as a catch-all. Rules are checked
top to bottom and the first match wins — see
Notification rules for the details. From then on, every
non-draft merge request in the matched projects posts itself to the
rule’s channel.GitLab compatibility: gitlab.com on any tier (group webhooks need
Premium or Ultimate; per-project webhooks work on Free), and self-managed
GitLab instances reachable over HTTPS. Self-managed instances behind a
firewall need outbound HTTPS to
app.prflow.dev for webhooks; PRFlow’s API
polling additionally requires the instance to be reachable from the
internet.Set up with GitHub
- Sign in at app.prflow.dev, open Settings → Connections, and select GitHub as the source provider.
- Click Install GitHub App. GitHub asks which account or organization to install to and which repositories the App may see, and shows the read-only permissions it requests.
- Back in PRFlow, connect Slack and map repositories to Slack channels from the dashboard.