GitLab + Microsoft Teams Setup Guide
Connect a GitLab group and get merge request notifications as Adaptive Cards in Microsoft Teams, in five minutes.
Skip the doc and start now
Setup starts on the GitLab side. The Microsoft Teams half is two clicks at the end.
Before you start
- A gitlab.com account (self-managed GitLab is not supported yet)
- The Maintainer role on the projects you want to connect, which GitLab requires to create webhooks. Only the person running the connect step needs it. Teammates need no special role.
- Permission to add an app to Microsoft Teams, or a Teams admin who can approve PullNotifier
- About five minutes
Setup steps
Steps 1 to 6 happen in PullNotifier. Step 7 happens inside Microsoft Teams. Every screenshot below shows the real screen with placeholder data.
Log in with your GitLab account
Open the GitLab login page and click "Continue with GitLab". This is a standard OAuth sign-in against gitlab.com. There is nothing to install on the GitLab side.
One clickAlready signed in with GitHub? Log out first. A session belongs to one provider, and your GitLab groups only appear in a GitLab session.

Step 1: sign in at pullnotifier.com/gitlab-login
Authorize API access
PullNotifier asks for API access to your GitLab account. It uses this to list the groups you belong to and to register merge request webhooks on the projects you choose.
ScopesThe token reads merge request metadata and writes webhooks. Creating a webhook is a write, so the read-only read_api scope is not enough for this step. It never reads your source code, and you can revoke it at any time from GitLab under Settings, Applications.

Step 2: grant API access so webhooks can be registered for you
Choose the group to connect
Pick the GitLab group you want notifications for. Subgroups are supported, so connecting a parent group lets you pick projects from any subgroup underneath it.
Maintainer roleOnly groups where you hold the Maintainer role appear here. GitLab requires that role to create project webhooks.

Step 3: groups you can connect, filtered by your role
Pick the projects to notify on
Tick the projects that should send merge request notifications, then click Connect. PullNotifier registers the webhooks for you and takes you to your dashboard.
Per projectWebhooks are registered per project, which every GitLab tier includes, Free among them. Group webhooks, a Premium feature, are not required.

Step 4: select projects, then click Connect
Switch the connection to Microsoft Teams
New connections default to Slack. On the dashboard, click "Using Microsoft Teams?" next to your group to switch it over. The row then offers a Teams connection instead of a Slack one.
Switch platformThe prompt appears on a freshly connected group that has no Slack channel yet. If you do not see it, connect Teams from the group's three-dot menu instead.

Step 5: move the group from Slack to Microsoft Teams
Open the Teams connect panel
The group now shows a "Connect Teams" button. Click it to see exactly what to install on the Microsoft Teams side.
Connect TeamsEach project row can also point at its own Teams channel once the group is linked.

Step 6: the group is connected, Teams is not linked yet
Install the PullNotifier bot in Microsoft Teams
In Microsoft Teams, open Apps in the left sidebar, search for "PullNotifier", click Add, and choose the channel that should receive notifications. The bot posts a setup card in that channel. Click "Complete Setup" on the card to link it back to your GitLab group.
In TeamsYour Teams admin may need to approve the app first. If PullNotifier is not in the catalog, ask them to allow it in the Microsoft Teams Admin Center under Manage apps.

Step 7: the exact steps, shown in the app
That is it, you are live
Your dashboard now shows the group, its connected projects, and the Microsoft Teams channel each one posts to. The next merge request opened in any of them arrives as an Adaptive Card that keeps updating itself as the MR moves.

A connected group, its projects, and the Teams channel each one posts to
Fine-tune it (optional)
The defaults work out of the box. These two settings are the ones teams reach for first.
Set per-project rules
Open the gear icon on any project to set the approvals it needs, mute comment notifications, route by label, or send a specific author or reviewer to a different Teams channel.

Per-project settings, including label and reviewer routing
Map GitLab users to Teams users
Mapping turns notifications into real @mentions inside the Adaptive Card, so a review request actually pings the reviewer instead of printing their username as plain text.

Map once, then every mention resolves correctly
What you get
One Adaptive Card per merge request, updated in place instead of a new post per event
Notifications for opened, reopened, merged, closed, draft and ready transitions
Approvals, comments, and new commits reflected on the same card
Routing by label, author, or reviewer, per project or across the whole group
Real @mentions once GitLab users are mapped to Teams users
Works on GitLab Free, because it uses per-project webhooks
Same dashboard as the Slack setup, so you can switch platforms later
Troubleshooting
- PullNotifier is not in the Teams app catalog: your tenant blocks third-party apps. A Teams admin has to allow it in the Microsoft Teams Admin Center under Manage apps.
- No "Using Microsoft Teams?" button: it only shows on a freshly connected group with no Slack channel. Use the group's three-dot menu to switch platform instead.
- The bot posted a card but nothing linked: click Complete Setup on that card while logged in to PullNotifier, so it can attach the channel to your GitLab group.
- Your group is not in the list: you need the Maintainer role on it. Ask an owner to raise your role, or have them run the connect step.
- Mentions show as plain text: map the GitLab user to a Teams user on the mapping screen shown above.
Setup FAQ
Can GitLab send merge request notifications to Microsoft Teams?
Yes. Connect your GitLab group to PullNotifier, install the PullNotifier bot in Microsoft Teams, and merge request notifications arrive in your chosen channel as Adaptive Cards.
How long does the setup take?
About five minutes. Four steps happen in PullNotifier and one happens inside Microsoft Teams, where you add the bot and click Complete Setup on the card it posts.
Do I need a Microsoft Teams admin?
Often not, but some tenants block third-party apps by default. If PullNotifier does not appear in the Teams app catalog, an admin has to allow it in the Microsoft Teams Admin Center under Manage apps.
Do I need a paid GitLab plan?
No. PullNotifier registers per-project webhooks, which every GitLab tier includes, Free among them.
What GitLab role do I need?
Maintainer (or Owner) on each project you connect, and only for the person who runs the connect step. GitLab requires that role to create project webhooks, so a Developer or Reporter cannot finish the step. Teammates who use the notifications afterwards need no special role: any membership in the group, Guest included, is enough to see the dashboard.
Can I connect with a read-only scope or a lower role?
Not today. Webhook registration is the one write PullNotifier makes, and GitLab gates it behind both the api scope and the Maintainer role. Everything else (open merge requests, approvals, comments, members) is read-only. If you are not a Maintainer, ask one to run the five-minute connect step once; you can manage channels and rules afterwards with any role.
Can different projects post to different Teams channels?
Yes. Set a default channel for the group, then override it per project, or route by label, author, or reviewer from the project settings screen.
Does it work with self-managed GitLab?
Not yet. gitlab.com is supported today and self-managed support is on the roadmap. Contact us if your team needs it.
Can I use Slack and Microsoft Teams at the same time?
Each connected group delivers to one platform. If you run both, connect the group to the platform your reviewers actually watch, and switch it later from the dashboard whenever you like.