> ## 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.

# Zoom

> Connect Zoom to Rootly to create an incident meeting automatically and capture transcripts and summaries with Meeting Scribe.

## Overview

Rootly's Zoom integration automatically creates a Zoom meeting when an incident starts and posts the link directly in the incident's Slack channel. Responders can join instantly without manual setup — no time wasted creating or sharing meeting links during a critical incident.

<Frame>
  <img alt="Zoom integration connected in Rootly" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/overview/image-1.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=4dcb88b1fa276faafa37a08dd1ada724" width="874" height="417" data-path="images/integrations/zoom/overview/image-1.png" />
</Frame>

## Features

<CardGroup cols={2}>
  <Card title="Instant Meetings" icon="bolt">
    Zoom calls created automatically when incidents start.
  </Card>

  <Card title="Slack Integration" icon="comments">
    Meeting links posted directly in the incident Slack channel.
  </Card>

  <Card title="Recording Options" icon="circle-dot">
    Configure local or cloud recording and AI meeting capture.
  </Card>

  <Card title="Customizable Behavior" icon="gear">
    Configure triggers, conditions, hosts, and recording options per workflow.
  </Card>
</CardGroup>

## Meeting Scribe on Zoom

The Zoom integration powers **[Rootly AI Meeting Scribe](/ai/meeting-scribe)** on your Zoom incident bridges — automatic recording, live transcription, PII-redacted transcripts, and Rootly AI meeting summaries fed straight into the incident's post-incident artifacts.

To enable:

1. Go to **Integrations → Zoom** in Rootly.
2. Toggle on **Meeting transcript and summary**.
3. **Enable Auto-join bot** — highly recommended. Without this, someone needs to manually admit the scribe on every call, and it drops off after 10 minutes if no one does.

<Tip>
  Auto-join is the single biggest lever for reliable Zoom scribe behavior. If you're seeing intermittent "the bot never joined" reports, check this first.
</Tip>

Running into issues? See **Zoom Meeting Scribe Troubleshooting** for the common failure modes and fixes.

***

## Before You Begin

<Warning>
  Rootly recommends performing the installation with a **shared service account** (for example, `incidents@yourcompany.com`) rather than a personal account. This ensures the integration continues working if someone leaves the company. Ensure you are logged in as an **Admin** in Rootly.
</Warning>

## Installation

To connect Zoom to Rootly, you will authorize Rootly via OAuth. This grants Rootly the permissions it needs to create and manage meetings on your behalf.

<Steps>
  <Step title="Open Rootly Integrations">
    Navigate to **Configuration → Integrations** in Rootly.

    <Frame>
      <img alt="Configuration menu showing Integrations option in Rootly sidebar" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-1.1.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=ff879a200b0f9f1ec253ed7feb32abc5" width="331" height="509" data-path="images/integrations/zoom/installation/image-1.1.png" />
    </Frame>
  </Step>

  <Step title="Find and set up Zoom">
    Search for **Zoom** and click **Setup**.

    <Frame>
      <img alt="Zoom integration card in Rootly integrations catalog" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-1.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=655575bb0dbb01027fdc89a35caf77db" width="522" height="382" data-path="images/integrations/zoom/installation/image-1.png" />
    </Frame>
  </Step>

  <Step title="Sign in to Zoom">
    Select your sign-in method — Google, SSO, or email and password.

    <Frame>
      <img alt="Zoom sign-in method selection screen" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-2.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=3120ed441a625322e57d6c568048d25f" width="520" height="527" data-path="images/integrations/zoom/installation/image-2.png" />
    </Frame>
  </Step>

  <Step title="Select your account">
    Choose the Zoom account you want to connect to Rootly.

    <Frame>
      <img alt="Account selection for Zoom sign-in" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-3.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=caf637e3437f077c8bb8330d41f3b062" width="956" height="408" data-path="images/integrations/zoom/installation/image-3.png" />
    </Frame>
  </Step>

  <Step title="Create or confirm your Zoom account">
    If no Zoom account exists for this email, you will be prompted to create one.

    <Frame>
      <img alt="Zoom account creation prompt" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-4.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=52ba849db94a6860aaafb56ffcbb52f3" width="1365" height="631" data-path="images/integrations/zoom/installation/image-4.png" />
    </Frame>

    <Frame>
      <img alt="Zoom account setup confirmation" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-5.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=a98ee2358541e2ab504c26235ab926c4" width="448" height="564" data-path="images/integrations/zoom/installation/image-5.png" />
    </Frame>
  </Step>

  <Step title="Authorize Rootly">
    Review and accept the OAuth permissions to grant Rootly access to your Zoom account.

    <Frame>
      <img alt="Zoom OAuth permission request for Rootly" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-6.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=6ef4e62d13798065a09859b026f15591" width="644" height="574" data-path="images/integrations/zoom/installation/image-6.png" />
    </Frame>
  </Step>

  <Step title="Confirm connection">
    You will be redirected back to Rootly with a success message. The integration status will show **Connected** with your Zoom account email.

    <Frame>
      <img alt="Zoom integration successfully connected in Rootly" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/installation/image-7.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=ceb221a6f22c8b0c4ba43663d19aac7f" width="885" height="270" data-path="images/integrations/zoom/installation/image-7.png" />
    </Frame>
  </Step>
</Steps>

<Check>
  Your Zoom account is now connected to Rootly. You can configure meeting name defaults and recording preferences from the integration settings page.
</Check>

### OAuth Scopes

Rootly requests the following Zoom permissions during authorization:

| Scope           | Purpose                                            |
| --------------- | -------------------------------------------------- |
| `meeting:write` | Create meetings on behalf of the connected account |
| `meeting:read`  | Read meeting details to generate join links        |
| `user:read`     | Read user information to assign hosts              |
| `user_zak:read` | Required by Zoom SDK — not actively used by Rootly |

## Creating the Incident Meeting

Rootly workflows automatically create Zoom meeting rooms when incidents occur. You can use the built-in **Auto-Create Incident Call** setting for quick setup, or build a **custom workflow** when you need conditional logic, specific triggers, or advanced routing.

<Info>
  Rootly enforces one Zoom meeting per incident. Running the same automation multiple times updates the existing link rather than creating a new one. For additional meetings, create a sub-incident.
</Info>

### Option 1: Auto-Create Incident Call

The Auto-Create Incident Call setting lets you automatically generate a Zoom meeting when an incident begins — no workflow required.

<Frame>
  <img alt="Auto-Create Incident Call settings panel" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-1.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=86917c837593f224ef350f14dacd60f2" width="876" height="75" data-path="images/integrations/zoom/workflows/image-1.png" />
</Frame>

Configure the following options directly in the integration settings:

| Setting                                | Description                                                |
| -------------------------------------- | ---------------------------------------------------------- |
| **Create Zoom Call on Incident Start** | Automatically spin up a meeting when an incident opens     |
| **Meeting Name**                       | Default or custom name using Liquid variables              |
| **Bookmark in Slack**                  | Add the meeting link as a bookmark in the incident channel |
| **Notify Slack Channels**              | Announce new calls in specific Slack channels              |
| **Record Call**                        | Enable automatic recording — None, Local, or Cloud         |
| **Specify Host**                       | Assign a specific host by email                            |
| **AI Meeting Capture**                 | Enable transcription and AI-generated meeting summaries    |
| **Bot Recording**                      | Start recording automatically without host approval        |

<Info>
  Use Auto-Create for quick setup. Build a custom workflow when you need conditions, specific triggers, or advanced routing.
</Info>

### Option 2: Custom Workflow

For more control — such as only creating meetings for SEV-1 incidents or routing to specific hosts — build a custom Incident workflow.

<Steps>
  <Step title="Open workflow creation">
    Navigate to **Workflows** in Rootly and click **Create Workflow**.

    <Frame>
      <img alt="Create Workflow button in Rootly" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-8.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=f9bdc13aad409f7c48385c4a7e8386e2" width="892" height="207" data-path="images/integrations/zoom/workflows/image-8.png" />
    </Frame>
  </Step>

  <Step title="Choose workflow type">
    Select **Incident** as the workflow type.

    <Frame>
      <img alt="Workflow type selection" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-10.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=c904ef7eb4498a030e445c94e04b54d6" width="1365" height="630" data-path="images/integrations/zoom/workflows/image-10.png" />
    </Frame>
  </Step>

  <Step title="Configure triggers">
    Choose when the workflow fires. Common triggers for Zoom meeting creation:

    <Frame>
      <img alt="Trigger configuration panel" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-triggers.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=44ef73d3682500061cbabf31898a2731" width="621" height="305" data-path="images/integrations/zoom/workflows/image-triggers.png" />
    </Frame>

    | Trigger                     | When it fires                                               |
    | --------------------------- | ----------------------------------------------------------- |
    | **Incident Created**        | Creates a Zoom call as soon as a new incident opens         |
    | **Incident Status Changed** | Creates a call when the incident moves to a specific status |
    | **Commander Assigned**      | Creates a call once someone takes ownership of the incident |
    | **Manual Trigger**          | Run the workflow on demand from the UI                      |
  </Step>

  <Step title="Add conditions (optional)">
    Use conditions to control when the workflow should run after triggering.

    <Frame>
      <img alt="Condition configuration panel" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-condition.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=7e31fdecfd13594ad47d95c709c87b7e" width="626" height="334" data-path="images/integrations/zoom/workflows/image-condition.png" />
    </Frame>

    Common patterns:

    * **Severity filter** — Only create calls for SEV-1 or SEV-2 incidents
    * **Team filter** — Only for incidents affecting specific teams
    * **Incident type** — Only when Kind is set to **Incident**
  </Step>

  <Step title="Add the Create Zoom Room action">
    Click **Add Action**, search for **Zoom**, and select **Create Room**.

    <Frame>
      <img alt="Zoom Create Room action in workflow builder" src="https://mintcdn.com/rootly/FbVwfmuXGL-DqeaM/images/integrations/zoom/workflows/image-13.png?fit=max&auto=format&n=FbVwfmuXGL-DqeaM&q=85&s=4c3bbe8249f4af7d51fdb338dbd11540" width="894" height="599" data-path="images/integrations/zoom/workflows/image-13.png" />
    </Frame>

    Configure the action fields:

    | Field                  | Description                                                                     |
    | ---------------------- | ------------------------------------------------------------------------------- |
    | **Meeting Name**       | The Zoom meeting title. Supports Liquid syntax. Defaults to the incident title. |
    | **Password**           | Optional meeting password. Leave blank to let Rootly generate a secure one.     |
    | **Create as User**     | Email of the Zoom account to create the meeting as. Supports Liquid syntax.     |
    | **Alternative Hosts**  | Additional host email addresses. Must be existing Zoom accounts.                |
    | **Auto Recording**     | `None`, `Local`, or `Cloud`. Can also be started manually during the meeting.   |
    | **AI Meeting Capture** | Enable transcription and AI-generated meeting summaries.                        |
    | **Slack Channels**     | Slack channels to post the meeting link to.                                     |

    <Info>
      For **Create as User**, use the incident creator's email via Liquid syntax, or set a dedicated service account like `zoom@yourcompany.com` to ensure meetings are always owned by a known account.
    </Info>
  </Step>

  <Step title="Save the workflow">
    Name the workflow clearly (for example, `Create Zoom Call for SEV-1 Incidents`) and click **Create Workflow**.
  </Step>
</Steps>

### Variable Reference

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

#### Zoom Variables

| Variable                    | Description                   |
| --------------------------- | ----------------------------- |
| `incident.zoom_meeting_url` | Link to join the Zoom meeting |
| `incident.zoom_meeting_id`  | Unique Zoom meeting ID        |

#### Incident Variables

| Variable                      | Description                    |
| ----------------------------- | ------------------------------ |
| `incident.title`              | Incident title                 |
| `incident.summary`            | Incident description           |
| `incident.severity`           | Severity level                 |
| `incident.status`             | Current status                 |
| `incident.started_at`         | When the incident started      |
| `incident.creator.name`       | Incident creator's name        |
| `incident.creator.email`      | Incident creator's email       |
| `incident.commander.email`    | Incident commander's email     |
| `incident.slack_channel_name` | Incident Slack channel name    |
| `incident.url`                | Link to the incident in Rootly |

## Troubleshooting Meeting Scribe

Nearly every "the scribe didn't join our Zoom call" report traces back to one of a small set of causes. Work through them in this order. For the full Meeting Scribe reference (limitations, retention, subprocessors), see [Rootly AI Meeting Scribe](/ai/meeting-scribe).

### The Bot Never Joins the Meeting

#### Auto-join isn't enabled

The single most common cause. Without **Auto-join bot** on, someone has to manually admit the scribe from Zoom's participant list on every call.

**Fix:** In Rootly, go to **Integrations → Zoom** and toggle **Auto-join bot** on.

<Tip>
  Auto-join uses a Zoom-side capability that lets Rootly's bot bypass the waiting room. If your Zoom account plan or admin policy blocks bypass tokens, Auto-join can't help — see the next section.
</Tip>

#### The Zoom account doesn't have permission to bypass the waiting room

Rootly's Auto-join relies on Zoom's "bypass waiting room" feature. Some Zoom account tiers or admin configurations don't allow it.

**Fix:** Ask your Zoom admin to confirm your account supports bypass tokens (typically Business, Education, and Enterprise plans). If it doesn't, either upgrade the plan or leave Auto-join off and admit the scribe manually — the fallback still works, it just needs a human.

#### The meeting URL isn't attached to the incident

The scribe joins the meeting URL attached to the incident. If a personal-meeting-room link is being used and it hasn't been attached, the scribe doesn't know about it.

**Fix:** Either use the Rootly-generated meeting link pinned in the incident's Slack channel (works automatically), or attach the URL you're using via [Updating incident integration links](/incidents/managing-incidents/updating-incident-integration-links).

#### The bot is in the waiting room and no one admitted it in time

The scribe waits **10 minutes** in a Zoom waiting room. If no one admits it, it disconnects.

**Fix:** Reinvite the bot from the **Meeting** tab on the incident and admit it promptly. Prevention: enable Auto-join.

***

### The Bot Joined but Left Early

#### Nobody-joined timeout (5 minutes)

If the bot enters the meeting but no other participants show up within **5 minutes**, it leaves.

**Fix:** Start the meeting on your side first, then reinvite the bot. Alternatively, invite the bot after your team is already on the call.

#### The host removed the bot

Zoom hosts can eject any participant, including the scribe. If a host removed it (intentionally or by accident), the bot leaves and does not auto-rejoin.

**Fix:** Reinvite from the **Meeting** tab. Consider giving your team a heads-up that the scribe should stay.

#### Network / Zoom-side disconnect

Rare, but the bot can be disconnected by Zoom for reasons outside Rootly's control (network blip, Zoom service issue, plan-level restriction changing mid-call).

**Fix:** Reinvite. If it happens repeatedly across incidents, check Zoom's status page and open a support ticket with Rootly if the issue is inside Rootly.

***

### Transcript or Summary Missing

#### Post-meeting processing is still running

Transcripts and Rootly AI meeting summaries are generated after the meeting ends. Processing typically completes within a few minutes.

**Fix:** Wait \~5–10 minutes and refresh the **Meeting** tab.

#### The bot never actually recorded

If the recording icon didn't appear in-meeting, the bot was likely in a waiting room the whole time or was removed early.

**Fix:** Check the incident timeline for a "Recording started" event. If it isn't there, the bot didn't record. Reinvite for the next session.

#### Recording was paused and not resumed

The Meeting Scribe supports pausing mid-call (useful for sensitive topics). If it was paused and no one resumed, that segment isn't captured.

**Fix:** Check the recording session status in the **Meeting** tab. Resume any paused session.

***

## Uninstall

**In Rootly:**

1. Go to **Configuration → Integrations** and find **Zoom**
2. Click the **Connected** button to reveal the disconnect option
3. Click **Delete**

<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 the Connected button to reveal the Disconnect option" width="319" height="188" data-path="images/integrations/common/uninstall-connected.png" />
</Frame>

**In Zoom** (to fully revoke access):

1. Log in to your Zoom account and navigate to the **Zoom App Marketplace**
2. Click **Manage → Apps on Account** or search for the Rootly app
3. Click the Rootly app and select **Remove** or **Disable**

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="Can I create multiple Zoom meetings for one incident?" icon="video">
    Rootly enforces one Zoom meeting per incident. If you need additional meetings, declare a sub-incident from the main incident and create a separate Zoom link for it.
  </Accordion>

  <Accordion title="The Zoom meeting was created but not posted to Slack" icon="plus">
    Ensure the **Slack Channels** field in the workflow action is configured with the correct channel. You can use Liquid syntax to reference the incident channel dynamically. Also confirm the Slack integration is connected under **Configuration → Integrations**.
  </Accordion>

  <Accordion title="How do I use Liquid variables in meeting names?" icon="heading">
    The Meeting Name field supports Liquid syntax. Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to preview available variables. Common examples include the incident title, severity, and ID.
  </Accordion>

  <Accordion title="What happens if the Create as User email is not a Zoom account?" icon="envelope">
    The meeting creation will fail if the email is not associated with a valid Zoom account. Use a dedicated service account email or verify the Liquid variable resolves to a known Zoom user.
  </Accordion>
</AccordionGroup>

### Meeting Scribe Questions

<AccordionGroup>
  <Accordion title="What's the difference between Auto-join and manual admission?" icon="key">
    With **Auto-join** on, Rootly uses a Zoom bypass token so the scribe skips the waiting room. Without it, the bot enters the waiting room like any external participant and needs a host or co-host to admit it. Auto-join is the recommended setup for reliable incident bridge coverage.
  </Accordion>

  <Accordion title="Does Auto-join work for external / cross-account meetings?" icon="link">
    Auto-join works for meetings hosted on your own connected Zoom account. If your team joins someone else's Zoom meeting (an external partner, a vendor call), the scribe would need that host to admit it — Auto-join tokens don't carry across Zoom accounts.
  </Accordion>

  <Accordion title="Can I test the scribe outside of an incident?" icon="flask">
    Yes — declare a test incident (`/rootly test` in Slack) and the scribe will join the resulting bridge just like a real one. Test incidents are excluded from production metrics.
  </Accordion>

  <Accordion title="The scribe joined but appears twice in the Meeting tab" icon="copy">
    Each time the bot joins or rejoins is a new **recording session**. Up to 10 sessions per platform per incident. Both sessions are valid — the transcripts and recordings are attached chronologically.
  </Accordion>
</AccordionGroup>

***

## Related Resources

* [Rootly AI Meeting Scribe](/ai/meeting-scribe)
* [Workflows](/workflows/workflows)
* [Integrations overview](/integrations/overview)
