> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Connect Microsoft Teams to Rootly to create incident channels, run workflow actions, and start Teams meetings from incidents.

Rootly's Microsoft Teams integration automates incident communication and collaboration. When an incident starts, Rootly can create a dedicated Teams channel, invite responders, and post real-time updates. You can also create Microsoft Teams meetings directly from incidents for live collaboration.

<CardGroup cols={2}>
  <Card title="Incident Channels" icon="hashtag">
    Automatically create dedicated Teams channels for each incident with responders invited
  </Card>

  <Card title="Real-time Updates" icon="bolt">
    Post incident status changes, severity updates, and key events to Teams channels
  </Card>

  <Card title="Video Meetings" icon="video">
    Create Microsoft Teams meetings for live incident collaboration with one click
  </Card>

  <Card title="Custom Notifications" icon="bell">
    Control which events trigger Teams notifications using workflow conditions
  </Card>
</CardGroup>

***

## How It Works

<Steps>
  <Step title="Connect Microsoft Teams">
    Authorize Rootly to access your Teams workspace via OAuth.
  </Step>

  <Step title="Install the Rootly Bot">
    Add the Rootly app to your Teams workspace to enable channel creation and messaging.
  </Step>

  <Step title="Configure Workflows">
    Set up workflows to automatically create channels, send messages, or start meetings when incidents occur.
  </Step>
</Steps>

***

## Before You Begin

<Warning>
  **Before you start:**

  * Rootly account with Admin permissions
  * Microsoft Teams account with access to the workspace you want to connect
  * Ability to install apps in your Teams workspace (or admin approval from your Microsoft 365 admin)
</Warning>

<Note>
  Rootly recommends connecting with a **service account** rather than a personal account. This ensures the integration stays active if team members leave your organization.
</Note>

***

## Installation

Setting up the Microsoft Teams integration involves two steps that work together. First, you authorize Rootly via OAuth so it can call the Microsoft Teams API on your behalf. Then, you install the Rootly bot directly inside Teams so it can create channels and post messages. Both steps are required — OAuth alone isn't enough to create channels or send messages.

### Part 1: Connect via OAuth

The OAuth flow grants Rootly permission to interact with your Microsoft Teams workspace through the API. You'll be redirected to Microsoft to sign in and approve the required permissions, then returned to Rootly automatically.

<Steps>
  <Step title="Open Integrations">
    In Rootly, go to **Configuration → Integrations** and search for **Microsoft Teams**.

    <img alt="Rootly integrations page with Microsoft Teams search" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-1.1.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=33f857a3d811296663e8bc0a9c788a04" width="331" height="509" data-path="images/integrations/microsoft-teams/installation/image-1.1.png" />
  </Step>

  <Step title="Start Setup">
    Click **Setup** on the Microsoft Teams integration to begin the OAuth flow.

    <img alt="Microsoft Teams integration setup button" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-1.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=6e6d761aebdfca35aabfa90241143b68" width="656" height="422" data-path="images/integrations/microsoft-teams/installation/image-1.png" />
  </Step>

  <Step title="Sign in to Microsoft">
    You'll be redirected to Microsoft. Select your Microsoft 365 work account — this should be the service account you intend to use for the integration.

    <img alt="Microsoft account selection screen" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-2.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=2a022bbdb9263adb4db44cd0001aca96" width="441" height="338" data-path="images/integrations/microsoft-teams/installation/image-2.png" />
  </Step>

  <Step title="Review and approve permissions">
    Microsoft will show you the permissions Rootly is requesting. Review them and click **Accept** to grant access.

    <img alt="Microsoft Teams permission approval screen" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-3.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=c84e4812e15b18b0fa7d539b7a237282" width="294" height="628" data-path="images/integrations/microsoft-teams/installation/image-3.png" />

    <img alt="Microsoft Teams consent confirmation" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-4.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=c6f90bf2e846a9ddfafd32c573ad192c" width="399" height="288" data-path="images/integrations/microsoft-teams/installation/image-4.png" />
  </Step>

  <Step title="Confirm connection">
    After approving, you'll be redirected back to Rootly. A success message confirms the integration is connected.

    <img alt="Rootly showing Microsoft Teams connected successfully" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-5.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=429548af7f9fe28adca5d68bb86ff17f" width="938" height="454" data-path="images/integrations/microsoft-teams/installation/image-5.png" />
  </Step>
</Steps>

<Check>Microsoft Teams is now connected to Rootly.</Check>

#### Required OAuth Permissions

<Accordion title="View all OAuth scopes">
  | Permission                                  | Purpose                                                     |
  | ------------------------------------------- | ----------------------------------------------------------- |
  | `offline_access`                            | Keeps the Rootly → Teams connection active between sessions |
  | `User.Read`                                 | Identifies the account connecting to Rootly                 |
  | `Team.ReadBasic.All`                        | Lets Rootly see your Teams and channels                     |
  | `ChatMessage.Send`                          | Rootly can post messages in chats and channels              |
  | `Channel.Create`                            | Rootly can create incident channels                         |
  | `Channel.ReadBasic.All`                     | Read channel names and descriptions                         |
  | `ChannelMessage.Send`                       | Rootly can send channel messages                            |
  | `ChannelMessage.ReadWrite`                  | Rootly can update messages it posts                         |
  | `ChannelSettings.ReadWrite.All`             | Allows Rootly to manage channel settings                    |
  | `ChannelMember.ReadWrite.All`               | Rootly can add and remove users in incident channels        |
  | `TeamsTab.ReadWriteSelfForChat`             | Rootly can install tabs in chats                            |
  | `TeamsTab.ReadWriteSelfForTeam`             | Rootly can install tabs in teams                            |
  | `TeamsAppInstallation.ReadWriteSelfForTeam` | Rootly can install itself in teams                          |
  | `TeamsAppInstallation.ReadWriteSelfForChat` | Rootly can install itself in chats                          |
  | `Chat.Create`                               | Rootly can create group and one-on-one chats                |
  | `Chat.ReadWrite`                            | Rootly can read and send messages in chats                  |
</Accordion>

***

### Part 2: Install the Rootly Bot

OAuth gives Rootly API access, but channel creation and messaging also require the Rootly bot to be present inside Microsoft Teams. Without the bot installed, workflows that create channels or send messages will fail. You install it directly from the Teams app store.

<Steps>
  <Step title="Open Apps in Teams">
    In Microsoft Teams, click **Apps** in the left sidebar and search for **Rootly**.

    <img alt="Microsoft Teams Apps store with Rootly search" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-6.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=70be8fa415a433acfdcb5e35a2f49674" width="353" height="567" data-path="images/integrations/microsoft-teams/installation/image-6.png" />
  </Step>

  <Step title="Add Rootly">
    Click **Add** on the Rootly app listing.

    <img alt="Rootly app in Teams store with Add button" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-7.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=908d48a54b6bb24da103765e3915482d" width="802" height="666" data-path="images/integrations/microsoft-teams/installation/image-7.png" />
  </Step>

  <Step title="Choose a team">
    Select the team where you want to install Rootly. Rootly recommends starting with the General channel of your primary incident response team.

    <img alt="Team selection for Rootly bot installation" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-8.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=8bdc3ebf7a99c919619c727fae30d5cb" width="519" height="509" data-path="images/integrations/microsoft-teams/installation/image-8.png" />
  </Step>

  <Step title="Installation complete">
    The Rootly bot is now installed in your team and ready to create channels and send messages.

    <img alt="Rootly bot installation confirmation" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/installation/image-9.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=59b4a046c8ef331643e903bbded9aac0" width="600" height="603" data-path="images/integrations/microsoft-teams/installation/image-9.png" />
  </Step>
</Steps>

<Note>
  You'll need to repeat the bot installation for each team where you want Rootly to create incident channels. The service account must be a member of each team.
</Note>

***

## Verify Installation

Once both parts are complete, confirm everything is working before setting up workflows:

1. **Check Rootly** — The integration status shows **Connected** on the integrations page
2. **Check Teams** — The Rootly app appears in your team's installed apps
3. **Test end-to-end** — Create a test incident in Rootly and verify a Teams channel is created automatically

<Tip>
  If channels aren't being created, check your workflow configuration first. The bot must be installed in the specific team referenced in the workflow action.
</Tip>

***

## Microsoft Teams Meeting

The **Microsoft Teams Meeting** integration is a separate OAuth connection that enables creating video meetings directly from Rootly incidents. It uses a different set of permissions than the main Teams integration and must be connected independently — even if you've already set up the main Teams integration.

Once connected, a **Create a Microsoft meeting** button appears in the incident header, letting anyone on the response team spin up a live video call with one click.

### Setup

1. Go to **Configuration → Integrations** and search for **Microsoft Teams Meeting**
2. Click **Setup** and sign in with your Microsoft 365 work account
3. Approve the requested permissions
4. Once connected, the **Create a Microsoft meeting** button will appear on every incident

<Note>
  Rootly recommends connecting with a **service account** so the meeting integration stays active if a user leaves your organization.
</Note>

### Required OAuth Permissions

| Permission                 | Purpose                                                                    |
| -------------------------- | -------------------------------------------------------------------------- |
| `offline_access`           | Required for OAuth authentication                                          |
| `User.Read`                | Identifies the account connecting to Rootly                                |
| `OnlineMeetings.ReadWrite` | Allows Rootly to create online meetings on behalf of the connected account |

### Uninstall the Meeting Integration

1. Log into your **Microsoft Teams Meeting** account
2. Click **Manage → Installed Apps** or search for the **Rootly** app
3. Click the **Rootly** app and click **Uninstall**

***

## Workflows

<CardGroup cols={2}>
  <Card title="Smart Defaults" icon="bolt">
    Auto-create Teams channels at incident start using built-in settings
  </Card>

  <Card title="Custom Workflows" icon="diagram-project">
    Build workflows with triggers, conditions, and multiple Teams actions
  </Card>
</CardGroup>

***

### Available Actions

| Action                                      | What It Does                                                   |
| ------------------------------------------- | -------------------------------------------------------------- |
| **Create Microsoft Teams Channel**          | Creates a new channel for the incident                         |
| **Create Microsoft Teams Chat**             | Creates a group or one-on-one chat                             |
| **Add Microsoft Teams Tab**                 | Adds a tab to the incident channel                             |
| **Archive Microsoft Teams Channel**         | Archives the incident channel                                  |
| **Rename Microsoft Teams Channel**          | Changes the channel name                                       |
| **Invite Users to Microsoft Teams Channel** | Invites users to a private incident channel                    |
| **Send Microsoft Teams Message**            | Posts a message to a Teams channel                             |
| **Send Microsoft Teams Attachments**        | Sends attachments to a Teams channel                           |
| **Create Microsoft Teams Meeting**          | Starts a video meeting (requires separate Meeting integration) |

***

### Create a Workflow

<Steps>
  <Step title="Open Workflows">
    Go to **Rootly → Workflows → Create Workflow**.

    <img alt="Rootly workflows page" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-1.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=3c7392c5c43aa47cb8baccac520e9e34" width="186" height="491" data-path="images/integrations/microsoft-teams/workflows/image-1.png" />

    <img alt="Create workflow button" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-2.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=4bd3aca8a6c5ea526696fa0a6c8be8d8" width="1165" height="578" data-path="images/integrations/microsoft-teams/workflows/image-2.png" />
  </Step>

  <Step title="Choose workflow type">
    Select the workflow type that matches your use case (for example, Incident, Retrospective, or Pulse).

    <img alt="Workflow type selection" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-3.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=1e9ad82c497ea7dbf07755686e4b47a0" width="1365" height="630" data-path="images/integrations/microsoft-teams/workflows/image-3.png" />
  </Step>

  <Step title="Configure triggers">
    Triggers define when this workflow runs.

    <img alt="Workflow trigger configuration" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-triggers.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=92ddbf0c0407c72aff142ff3199beb7a" width="621" height="305" data-path="images/integrations/microsoft-teams/workflows/image-triggers.png" />

    | Trigger                         | When It Fires                       |
    | ------------------------------- | ----------------------------------- |
    | **Incident Created**            | New incident opens                  |
    | **Incident Updated**            | Severity, status, or fields change  |
    | **Incident Status Changed**     | Incident moves to a specific status |
    | **Incident Commander Assigned** | Someone takes ownership             |
    | **Incident Resolved**           | Incident is resolved                |
    | **Manual Trigger**              | Run on demand from the UI           |
  </Step>

  <Step title="Add conditions (optional)">
    Conditions filter when the workflow should run after it's been triggered — keeping Teams activity focused on the incidents that matter.

    <img alt="Workflow conditions panel" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-condition.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=02df47496a44bd36764c3143acc9f97d" width="626" height="334" data-path="images/integrations/microsoft-teams/workflows/image-condition.png" />

    Examples:

    * Only for SEV-1 or SEV-2 incidents
    * Only for specific teams or services
    * Only for production environments
  </Step>

  <Step title="Add a Microsoft Teams action">
    Click **Add Action** and search for **Microsoft Teams** to see all available actions.

    <img alt="Add action button with Microsoft Teams search" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-4.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=c528fa2062d6553d7eb7277180e5b9d6" width="677" height="221" data-path="images/integrations/microsoft-teams/workflows/image-4.png" />
  </Step>
</Steps>

***

### Action Reference

<AccordionGroup>
  <Accordion title="Create Microsoft Teams Channel" icon="hashtag">
    Creates a dedicated Teams channel for the incident. Use this as your first action when an incident opens to give responders a central place to coordinate.

    <img alt="Create Microsoft Teams Channel action" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-5.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=7dc31ea4a616ac26b1fc93e8aa49593b" width="896" height="566" data-path="images/integrations/microsoft-teams/workflows/image-5.png" />

    <img alt="Channel configuration options" src="https://mintcdn.com/rootly/_CGYMlZfaYjpTtE8/images/integrations/microsoft-teams/workflows/image-6.png?fit=max&auto=format&n=_CGYMlZfaYjpTtE8&q=85&s=cdedfa6defa7ccfc1723c42336775583" width="713" height="563" data-path="images/integrations/microsoft-teams/workflows/image-6.png" />

    <ParamField body="Team" type="select">
      The Microsoft Teams workspace where the channel will be created.
    </ParamField>

    <ParamField body="Title" type="string">
      The channel name. Supports Liquid syntax (for example, `{{ incident.title }}`).

      <Note>
        Channel names are automatically lowercased, parameterized, and truncated to 50 characters.
      </Note>
    </ParamField>

    <ParamField body="Description" type="string">
      An optional description for the channel. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Private" type="select">
      Controls channel visibility:

      * **auto** — Private for private incidents, public for non-private incidents
      * **true** — Always private
      * **false** — Always public
    </ParamField>

    <Note>
      If the incident already has a Teams channel, this action skips creation to avoid duplicates.
    </Note>
  </Accordion>

  <Accordion title="Create Microsoft Teams Chat" icon="comments">
    Creates a group or one-on-one chat for the incident. Once created, the chat ID and URL are stored on the incident for use in subsequent actions.

    <ParamField body="Chat Type" type="select">
      * **group** — Creates a group chat with multiple members and an optional topic
      * **oneOnOne** — Creates a one-on-one chat between exactly two members
    </ParamField>

    <ParamField body="Topic" type="string">
      A topic for the chat. Only used for group chats. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Members" type="string">
      A JSON array of members to add. Each member requires an `email` field. Supports Liquid syntax.

      ```json theme={null}
      [
        {"email": "alice@company.com"},
        {"email": "bob@company.com", "roles": ["guest"]}
      ]
      ```

      <Note>
        Group chats require at least three members (including the service account). One-on-one chats require exactly two.
      </Note>
    </ParamField>
  </Accordion>

  <Accordion title="Add Microsoft Teams Tab" icon="browser">
    Adds a tab to the incident Teams channel. Use this to give responders quick access to dashboards, runbooks, or the Rootly incident page directly within the channel.

    <ParamField body="Team" type="select">
      The team that contains the channel.
    </ParamField>

    <ParamField body="Channel" type="string">
      The channel to add the tab to. Use `{{ incident.microsoft_teams_channel_id }}` to target the incident's channel.
    </ParamField>

    <ParamField body="Title" type="string">
      The display name shown on the tab. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Link" type="string">
      The URL the tab should point to. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Playbook" type="select">
      Optionally select a playbook to add as a dedicated playbook tab. When a playbook is selected, the tab renders only the playbook checklist — it is a distinct tab type and does not include the Rootly incident dashboard. Leave this empty to use the Title and Link fields to add a URL-based tab, such as a link to the incident page or an external runbook.
    </ParamField>

    <Note>
      The Rootly app must be installed in the target team for this action to work.
    </Note>
  </Accordion>

  <Accordion title="Archive Microsoft Teams Channel" icon="box-archive">
    Archives the incident channel when it's no longer needed. Keeps the workspace clean while preserving conversation history.

    <ParamField body="Team" type="select">
      The team that contains the channel.
    </ParamField>

    <ParamField body="Channels" type="string">
      The channel(s) to archive. Use `{{ incident.microsoft_teams_channel_id }}` to target the incident's channel.
    </ParamField>

    **Common trigger:** Incident Status Changed to "Closed"
  </Accordion>

  <Accordion title="Rename Microsoft Teams Channel" icon="pen-to-square">
    Renames an existing Teams channel. Use this to reflect status changes — for example, prefixing resolved incidents with `[RESOLVED]`.

    <ParamField body="Team" type="select">
      The team that contains the channel.
    </ParamField>

    <ParamField body="Channel" type="string">
      The channel to rename. Use `{{ incident.microsoft_teams_channel_id }}` to target the incident's channel.
    </ParamField>

    <ParamField body="Title" type="string">
      The new channel name. Supports Liquid syntax.

      ```liquid theme={null}
      [RESOLVED] {{ incident.title }}
      ```
    </ParamField>

    **Common trigger:** Incident Resolved
  </Accordion>

  <Accordion title="Invite Users to Microsoft Teams Channel" icon="user-plus">
    Invites users to a private incident channel by email. Use this to automatically add on-call responders when they're assigned a role.

    <ParamField body="Team" type="select">
      The team that contains the channel.
    </ParamField>

    <ParamField body="Channel" type="string">
      The private channel to invite users to. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Emails" type="string">
      Comma-separated list of email addresses to invite. Supports Liquid syntax.
    </ParamField>

    <Warning>
      This action only works with **private** channels. Public channels are accessible to all team members by default.
    </Warning>

    **Common triggers:** Incident Created, Incident Commander Assigned
  </Accordion>

  <Accordion title="Send Microsoft Teams Channel Message" icon="message">
    Posts a message to a Teams channel using the Rootly bot. Use Liquid variables to include dynamic incident details in the message.

    <ParamField body="Channels" type="select">
      The channel(s) to post to. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Text" type="string">
      The message content. Supports Liquid variables.

      ```liquid theme={null}
      🚨 **Incident Update**

      **Title:** {{ incident.title }}
      **Severity:** {{ incident.severity }}
      **Status:** {{ incident.status }}
      **Commander:** {{ incident.commander.name | default: "Unassigned" }}

      {{ incident.summary }}
      ```
    </ParamField>

    <Note>
      If the message text is empty, the action will be skipped.
    </Note>

    **Common triggers:** Incident Created, Incident Updated, Status Changed
  </Accordion>

  <Accordion title="Send Microsoft Teams Attachments" icon="paperclip">
    Sends Adaptive Card attachments to one or more Teams channels. Use this to send richly formatted, interactive content such as structured incident summaries.

    <ParamField body="Channels" type="select">
      The channel(s) to send the attachments to. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Attachments" type="string">
      A JSON payload defining the Adaptive Card content. Supports Liquid syntax. Follows the [Microsoft Adaptive Card schema](https://adaptivecards.io/).
    </ParamField>
  </Accordion>

  <Accordion title="Create Microsoft Teams Meeting" icon="video">
    Creates a Microsoft Teams video meeting for live incident collaboration. The meeting link is automatically stored on the incident.

    <Note>
      This action requires the **Microsoft Teams Meeting** integration to be installed separately.
    </Note>

    <ParamField body="Subject" type="string">
      The meeting title. Supports Liquid syntax (for example, `{{ incident.title }}`).
    </ParamField>

    **Common trigger:** Incident Created (for high-severity incidents)
  </Accordion>
</AccordionGroup>

***

## Liquid Variables

<Tip>
  Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to test variables with real incident data.
</Tip>

### Incident Variables

| Variable                         | Description                          |
| -------------------------------- | ------------------------------------ |
| `{{ incident.title }}`           | Incident title                       |
| `{{ incident.summary }}`         | Incident summary                     |
| `{{ incident.severity }}`        | Severity level (for example, "SEV1") |
| `{{ incident.status }}`          | Current status                       |
| `{{ incident.started_at }}`      | When the incident started            |
| `{{ incident.commander.name }}`  | Incident commander name              |
| `{{ incident.commander.email }}` | Incident commander email             |
| `{{ incident.url }}`             | Link to the incident in Rootly       |

### Microsoft Teams Variables

| Variable                                     | Description                           |
| -------------------------------------------- | ------------------------------------- |
| `{{ incident.microsoft_teams_channel_id }}`  | ID of the incident's Teams channel    |
| `{{ incident.microsoft_teams_channel_url }}` | URL to the Teams channel              |
| `{{ incident.microsoft_teams_chat_id }}`     | ID of the incident's Teams chat       |
| `{{ incident.microsoft_teams_meeting_url }}` | URL to the Teams meeting (if created) |

## Troubleshooting

<AccordionGroup>
  <Accordion title="Rootly not showing in Microsoft Teams" icon="circle-xmark">
    After completing OAuth, Rootly doesn't appear as a connected app in Teams.

    **Solutions:**

    * Verify you completed OAuth using the same email as your Teams account
    * Make sure Rootly was installed in a specific team, not just your personal app space
    * Try uninstalling and reinstalling the Rootly app from the Teams store
    * Check if your organization restricts third-party app installations — a Microsoft 365 admin may need to approve Rootly
  </Accordion>

  <Accordion title="Cannot add Rootly to a team" icon="circle-xmark">
    Teams shows an error when trying to add Rootly to a team.

    **Solutions:**

    * Ensure you have owner or admin permissions in the team
    * Ask a Team Owner or Microsoft 365 admin to approve the Rootly app
    * Verify that third-party app installations are enabled in your Microsoft 365 admin center
  </Accordion>

  <Accordion title="Email not associated with account" icon="circle-xmark">
    Teams reports that the signed-in email isn't linked to a Rootly account.

    **Solutions:**

    * Verify the OAuth email matches exactly the email registered in Rootly
    * Confirm this email exists as a user in Rootly
    * Add the email under **Rootly → Organization Settings → Members** if needed
    * Disconnect and reconnect the Microsoft Teams integration
  </Accordion>

  <Accordion title="Channels not being created" icon="circle-xmark">
    Workflows run successfully but no Teams channels appear.

    **Solutions:**

    * Verify the Rootly bot is installed in the specific team referenced in the workflow action
    * Check workflow run logs for errors: **Workflows → Your Workflow → ... → View Runs**
    * Confirm the team name in the workflow action exactly matches the team in Teams
  </Accordion>
</AccordionGroup>

## Uninstall

To remove the main Microsoft Teams integration from Rootly:

1. Go to **Configuration → Integrations** and find **Microsoft Teams**
2. Click **Connected** to reveal the disconnect option
3. Click **Disconnect**

<Frame>
  <img src="https://mintcdn.com/rootly/QMD-dNqeYW4BA9dg/images/integrations/common/uninstall-connected.png?fit=max&auto=format&n=QMD-dNqeYW4BA9dg&q=85&s=dbb790e2576c8969bba96bc26c95265f" alt="Click Connected to reveal the Disconnect option" width="319" height="188" data-path="images/integrations/common/uninstall-connected.png" />
</Frame>

<Warning>
  Disconnecting from Rootly does not remove the Rootly bot from Teams. To fully uninstall, open **Microsoft Teams → Apps → Manage your apps**, find **Rootly**, and click **Uninstall**.
</Warning>

***
