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

# Google Chat

> Connect Google Chat to Rootly to create incident spaces, run slash commands, and drive incident workflows from chat.

<Info>
  **Closed Beta** — The Google Chat integration is currently in closed beta. Contact [support@rootly.com](mailto:support@rootly.com) to request access.
</Info>

Rootly's Google Chat integration automates incident communication, on-call management, and alerting. When an incident starts, Rootly creates a dedicated Google Chat space, invites responders, and posts real-time incident overview cards. Responders can manage incidents, respond to alerts, and check on-call schedules without leaving Google Chat.

<CardGroup cols={2}>
  <Card title="Incident Spaces" icon="hashtag">
    Automatically create dedicated Google Chat spaces for each incident with responders invited
  </Card>

  <Card title="On-Call & Alerting" icon="phone">
    Page responders via Google Chat, respond to alerts with action buttons, and check on-call schedules
  </Card>

  <Card title="Slash Commands" icon="terminal">
    Declare incidents, create alerts, check on-call, and manage shifts with `/rootly` commands
  </Card>

  <Card title="Emoji Reactions" icon="face-smile">
    React to messages to add timeline events, follow-ups, or tasks to the incident
  </Card>

  <Card title="Real-time Updates" icon="bolt">
    Get notified of role assignments, action items, shift changes, and meeting recordings
  </Card>

  <Card title="Custom Workflows" icon="bell">
    Control which events trigger Google Chat notifications using workflow conditions
  </Card>
</CardGroup>

***

## How It Works

<Steps>
  <Step title="Connect to Rootly">
    Create a service account, configure domain-wide delegation, and upload the key to Rootly (recommended). Or connect via OAuth for a quick evaluation.
  </Step>

  <Step title="Configure Workflows">
    Set up workflows to automatically create spaces, send messages, or post cards when incidents occur.
  </Step>

  <Step title="Set Up On-Call">
    Add Google Chat spaces as escalation policy targets to page responders directly in chat.
  </Step>
</Steps>

***

## Installation

There are two ways to connect Google Chat to Rootly. The recommended path is the **Google Workspace Marketplace**, which handles all configuration automatically. For organizations that need **domain-wide delegation**, a service account can be configured as an advanced option.

<Tabs>
  <Tab title="Marketplace (Recommended)">
    ## Google Workspace Marketplace

    This is the recommended setup. Installing from the Marketplace requires no Google Cloud project, no service account, and no manual scope configuration.

    ### Prerequisites

    <Warning>
      **Before you start:**

      * Rootly account with Admin permissions
      * Google Workspace admin access to install Marketplace apps
    </Warning>

    ***

    ### Step 1: Install from the Marketplace

    <Steps>
      <Step title="Open the Marketplace listing">
        Go to the [Rootly Google Workspace Marketplace listing](https://workspace.google.com/marketplace/app/rootly/1046293539231) and click **Install**.
      </Step>

      <Step title="Approve permissions">
        Review the requested permissions and click **Allow** to complete the installation for your Google Workspace domain.
      </Step>
    </Steps>

    ***

    ### Step 2: Add Rootly to a Space

    <Steps>
      <Step title="Open a Google Chat space">
        Navigate to the Google Chat space where you want to use Rootly, or create a new one.
      </Step>

      <Step title="Add the Rootly bot">
        Add the Rootly bot to the space. You can do this by typing `@Rootly` or adding it from the space's member list.
      </Step>
    </Steps>

    ***

    ### Step 3: Connect to Your Team

    <Steps>
      <Step title="Run the slash command">
        In the space, type `/rootly` and press Enter.
      </Step>

      <Step title="Select your team">
        A dialog will appear. Select the Rootly team you want to connect this space to and confirm.
      </Step>
    </Steps>

    <Check>Google Chat is now connected to Rootly via the Marketplace. No additional configuration is needed.</Check>
  </Tab>

  <Tab title="Service Account (Advanced)">
    ## Service Account + Domain-Wide Delegation

    This is an advanced setup for organizations that require domain-wide delegation. A Google Cloud service account with domain-wide delegation gives Rootly access to Google Chat capabilities through a delegated user identity.

    <Note>
      Most organizations do not need this setup. The [Marketplace install](#google-workspace-marketplace) provides full functionality without a service account.
    </Note>

    ### Prerequisites

    <Warning>
      **Before you start:**

      * Rootly account with Admin permissions
      * A Google Cloud project where you can create a service account
      * Google Workspace admin access to configure domain-wide delegation
      * A delegated user email in your workspace (for example, `rootly-bot@company.com`) for the service account to impersonate
    </Warning>

    ***

    ### Step 1: Create a Service Account

    <Steps>
      <Step title="Create the service account">
        In your Google Cloud project, go to **IAM & Admin > Service Accounts** and click **Create Service Account**.

        Give it a descriptive name (for example, `rootly-chat-bot`) and click **Create and Continue**.
      </Step>

      <Step title="Download the JSON key">
        Click on the newly created service account, go to the **Keys** tab, and click **Add Key > Create new key**. Select **JSON** and download the key file.

        <Warning>
          Store this key file securely. You'll upload it to Rootly in the next step and should not commit it to version control.
        </Warning>
      </Step>
    </Steps>

    ***

    ### Step 2: Configure Domain-Wide Delegation

    Domain-wide delegation allows the service account to impersonate a user in your workspace, which is required for creating spaces and managing members.

    <Steps>
      <Step title="Note the Client ID">
        In your service account details, find the **Unique ID** (also called OAuth 2 Client ID). You'll need this for the admin console.
      </Step>

      <Step title="Open Google Workspace Admin Console">
        Go to [admin.google.com](https://admin.google.com) and navigate to **Security > Access and data control > API Controls > Domain-wide delegation**.
      </Step>

      <Step title="Add the delegation">
        Click **Add new** and enter:

        * **Client ID**: The service account's OAuth 2 Client ID
        * **OAuth Scopes** (comma-separated):

        ```text theme={null}
        https://www.googleapis.com/auth/chat.spaces.create,https://www.googleapis.com/auth/chat.spaces,https://www.googleapis.com/auth/chat.memberships,https://www.googleapis.com/auth/chat.memberships.app,https://www.googleapis.com/auth/chat.messages.create,https://www.googleapis.com/auth/chat.messages
        ```
      </Step>
    </Steps>

    <Tip>
      The delegated user email should be a dedicated workspace user (for example, `rootly-bot@company.com`), not a personal account. This ensures the integration stays active if team members leave.
    </Tip>

    ***

    ### Step 3: Connect in Rootly

    <Steps>
      <Step title="Open Integrations">
        In Rootly, go to **Configuration > Integrations** and search for **Google Chat**.
      </Step>

      <Step title="Upload service account key">
        Click **Setup** on the Google Chat integration. Upload the JSON key file you downloaded earlier.
      </Step>

      <Step title="Enter delegated user email">
        Enter the email of the workspace user the service account will impersonate (for example, `rootly-bot@company.com`).
      </Step>

      <Step title="Connect">
        Click **Connect**. Rootly will verify the credentials and establish the connection.
      </Step>
    </Steps>

    <Check>Google Chat is now connected to Rootly with domain-wide delegation.</Check>

    ### Required Scopes

    <Accordion title="View all delegation scopes">
      | Scope                  | Purpose                          |
      | ---------------------- | -------------------------------- |
      | `chat.spaces.create`   | Create dedicated incident spaces |
      | `chat.spaces`          | Read and manage space settings   |
      | `chat.memberships`     | Manage space members             |
      | `chat.memberships.app` | Add the bot to spaces            |
      | `chat.messages.create` | Send messages to spaces          |
      | `chat.messages`        | Read and manage messages         |
    </Accordion>
  </Tab>
</Tabs>

***

## After Connecting

Once connected (via either method), Rootly automatically creates default workflows:

* **Auto Create Incident Google Chat Space** — Creates a dedicated space when an incident starts (enabled by default)
* **Default Announcement Space** — Posts to a shared announcement space (disabled until you configure a target space)

You can customize these workflows or create new ones from **Workflows** in the Rootly dashboard.

### Configure Settings

Go to **Configuration > Integrations > Google Chat > Settings** to configure:

* **Incident space** — Toggle auto-creation of incident spaces and announcements
* **Emoji shortcuts** — Customize which emoji reactions trigger timeline events, follow-ups, or tasks
* **Interactions** — Enable or disable slash command responses and link previews

### Remove Service Account Credentials

If you previously configured a service account and no longer need it (for example, after switching to the Marketplace install), you can remove the service account credentials from **Configuration > Integrations > Google Chat > Edit**.

***

## Authentication Model

Google Chat uses a hybrid authentication model where different operations require different identities:

| Operation            | Auth Method                            | Notes                                       |
| -------------------- | -------------------------------------- | ------------------------------------------- |
| Create/delete spaces | Marketplace app or Delegated user (SA) | Marketplace handles this automatically      |
| Add bot to space     | Marketplace app or Delegated user (SA) | Uses `chat.memberships.app` scope with SA   |
| Send Cards v2        | Bot identity                           | Google requires bot identity for rich cards |
| Send text messages   | Marketplace app or Delegated user (SA) | Both methods work                           |
| Manage members       | Marketplace app or Delegated user (SA) | SA requires delegation scopes               |
| Webhook responses    | Bot identity                           | Synchronous responses to Google             |

***

## Workflows

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

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

***

### Available Actions

| Action                                   | What It Does                                                                         |
| ---------------------------------------- | ------------------------------------------------------------------------------------ |
| **Create Google Chat Space**             | Creates a dedicated space for the incident, adds the bot, and posts an overview card |
| **Send Google Chat Message**             | Sends a text message to one or more spaces (with optional threading)                 |
| **Send Google Chat Attachments**         | Sends Cards v2 to spaces (requires service account)                                  |
| **Invite to Google Chat Space**          | Invites users to an incident space by email                                          |
| **Rename Google Chat Space**             | Changes the display name of a space                                                  |
| **Update Google Chat Space Description** | Updates the description of a space                                                   |
| **Change Google Chat Space Privacy**     | Switches a space between private and discoverable                                    |
| **Archive Google Chat Spaces**           | Deletes incident spaces when they're no longer needed                                |

***

### Create a Workflow

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

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

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

    | 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                      |
    | **Google Chat Space Created**   | The incident's Google Chat space is ready |
    | **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 notifications focused on the incidents that matter.

    Examples:

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

  <Step title="Add a Google Chat action">
    Click **Add Action** and search for **Google Chat** to see all available actions.
  </Step>
</Steps>

***

### Action Reference

<AccordionGroup>
  <Accordion title="Create Google Chat Space" icon="hashtag">
    Creates a dedicated Google Chat space for the incident. The bot is automatically added to the space and posts an incident overview card showing title, status, severity, start time, summary, and a "See in Rootly" button.

    This is typically the first action in an incident workflow — it gives responders a central place to coordinate.

    <ParamField body="Title" type="string">
      The space name. Supports Liquid syntax (for example, `{{ incident.title }}`). Automatically formatted to meet Google Chat's display name requirements.
    </ParamField>

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

    <ParamField body="Audience" type="string">
      Controls space discoverability:

      * **Empty** (default) — Space is private, only invited members can see it
      * **`audiences/default`** — Space is discoverable by everyone in your Google Workspace organization

      <Note>
        Discoverable spaces cannot be created for private incidents.
      </Note>
    </ParamField>

    <Note>
      If the incident already has a Google Chat space, this action skips creation to avoid duplicates.
    </Note>

    <Note>
      The overview card requires the **service account** connection. It is sent using bot identity automatically after space creation.
    </Note>
  </Accordion>

  <Accordion title="Send Google Chat Message" icon="message">
    Sends a text message to one or more Google Chat spaces. Use Liquid variables to include dynamic incident details.

    <ParamField body="Spaces" type="select">
      The space(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>

    <ParamField body="Thread Key" type="string">
      An optional thread key to group messages into a thread within the space. Messages with the same thread key appear as replies in the same thread. Supports Liquid syntax.
    </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 Google Chat Attachments" icon="rectangle-vertical-history">
    Sends Cards v2 to one or more Google Chat spaces. Use this to send richly formatted, interactive content such as structured incident summaries with action buttons.

    <ParamField body="Spaces" type="select">
      The space(s) to send the cards to. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Attachments" type="string">
      A JSON payload defining the Cards v2 content. Supports Liquid syntax. Follows the [Google Chat Cards v2 schema](https://developers.google.com/workspace/chat/api/reference/rest/v1/cards).
    </ParamField>

    <Warning>
      Cards v2 require the **service account** connection. OAuth connections cannot send cards — Google restricts card messages to bot identity.
    </Warning>
  </Accordion>

  <Accordion title="Invite to Google Chat Space" icon="user-plus">
    Invites users to the incident's Google Chat space by email. Use this to automatically add on-call responders when they're assigned a role.

    <ParamField body="Space" type="select">
      The space 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>

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

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

    <ParamField body="Space" type="select">
      The space to rename. Supports Liquid syntax.
    </ParamField>

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

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

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

  <Accordion title="Update Google Chat Space Description" icon="align-left">
    Updates the description of a Google Chat space. Use this to keep the space description in sync with the incident summary as it evolves.

    <ParamField body="Space" type="select">
      The space to update. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Description" type="string">
      The new description. Supports Liquid syntax.
    </ParamField>

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

  <Accordion title="Change Google Chat Space Privacy" icon="lock">
    Switches a space between private and discoverable. Use this to open up a space to the broader organization during a major incident, or lock it down afterward.

    <ParamField body="Space" type="select">
      The space to update. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Audience" type="string">
      * **Empty** — Makes the space private (invited members only)
      * **`audiences/default`** — Makes the space discoverable organization-wide
    </ParamField>

    <Warning>
      Setting a space to discoverable will also update the incident's private flag. You cannot make a private incident's space discoverable — change the incident visibility first.
    </Warning>
  </Accordion>

  <Accordion title="Archive Google Chat Spaces" icon="box-archive">
    Deletes the incident's Google Chat space when it's no longer needed. Keeps your workspace clean after incidents are resolved.

    <ParamField body="Spaces" type="select">
      The space(s) to delete. Supports Liquid syntax.
    </ParamField>

    <Note>
      Google Chat does not support archiving spaces — this action permanently deletes the space. Ensure your retention requirements are met before using this action.
    </Note>

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

***

## Slash Commands

When the Rootly bot is added to a Google Chat space, team members can use slash commands to manage incidents, alerts, and on-call directly from chat.

### Incident Commands

| Command                   | Description                                  |
| ------------------------- | -------------------------------------------- |
| `/rootly declare`         | Declare a new incident (opens a form dialog) |
| `/rootly update`          | Update incident details                      |
| `/rootly status`          | View current incident status                 |
| `/rootly resolve`         | Resolve the incident                         |
| `/rootly mitigate`        | Mark incident as mitigated                   |
| `/rootly cancel`          | Cancel the incident                          |
| `/rootly ack`             | Acknowledge the incident                     |
| `/rootly note <message>`  | Add a timeline event                         |
| `/rootly summary <text>`  | Update incident summary                      |
| `/rootly severity <name>` | Set incident severity                        |
| `/rootly list`            | List active incidents                        |

### On-Call & Alerting Commands

| Command            | Description                                                  |
| ------------------ | ------------------------------------------------------------ |
| `/rootly alert`    | Create a new alert and page responders (opens a form dialog) |
| `/rootly oncall`   | Show who's currently on-call across your schedules           |
| `/rootly escalate` | Escalate — create an alert and page the escalation policy    |
| `/rootly override` | Create a shift override (opens a form dialog)                |

### Utility Commands

| Command        | Description                 |
| -------------- | --------------------------- |
| `/rootly help` | Show all available commands |

<Note>
  Slash commands work with both `/rootly` and `/incident` prefixes.
</Note>

The `declare`, `update`, `alert`, `escalate`, and `override` commands open dynamic form dialogs with the same configurable fields available in Slack and the web UI, including custom fields.

***

## Emoji Reactions

Rootly can convert emoji reactions on messages in incident spaces into timeline events, follow-ups, or tasks. This lets responders quickly capture important information without leaving the conversation.

| Default Emoji     | Action                               |
| ----------------- | ------------------------------------ |
| Pin or star emoji | Adds the message as a timeline event |
| Clipboard emoji   | Creates a follow-up action item      |
| Checkmark emoji   | Creates a task action item           |

Rootly responds with a confirmation emoji (for example, ✅) when it processes a reaction.

<Tip>
  Customize which emojis trigger each action in **Configuration > Integrations > Google Chat > Settings**.
</Tip>

***

## On-Call & Alerting

Google Chat spaces can be used as escalation policy targets, making Google Chat a first-class on-call surface alongside Slack.

### Escalation Policy Targets

Add Google Chat spaces as notification targets on escalation policy levels. When an alert fires, Rootly posts an alert card to the configured space with action buttons.

To configure:

1. Go to **On-Call > Escalation Policies**
2. Edit or create a policy level
3. Select a Google Chat space as a notification target

### Alert Cards

When an alert is sent to a Google Chat space, Rootly posts an interactive card with action buttons that change based on alert status:

| Button            | Action                            |
| ----------------- | --------------------------------- |
| **Acknowledge**   | Acknowledge the alert             |
| **Resolve**       | Resolve the alert                 |
| **Escalate**      | Escalate to the next policy level |
| **Mark as Noise** | Mark the alert as noise           |
| **Snooze**        | Snooze the alert temporarily      |

Cards update automatically as the alert status changes — buttons reflect the current available actions.

### Shift Notifications

When configured, Rootly sends notifications to Google Chat spaces for on-call events:

* **Shift start** — Notifies when an on-call shift begins
* **Shift override** — Notifies when someone takes over or creates an override
* **Coverage request** — Posts a card with a "Take the Shift" button when someone requests coverage

Enable shift notifications in **On-Call > Schedules > Edit > Notifications**.

### Additional Alert Spaces

Configure extra Google Chat spaces to receive alert broadcasts in **Configuration > Integrations > Google Chat > Settings**. This lets you send alerts to shared spaces in addition to the escalation policy targets.

***

## Lifecycle Notifications

When connected via service account, Rootly automatically posts notifications to incident spaces for key events:

* **Role assigned** — When a responder is assigned a role on the incident
* **Action item added** — When a follow-up or task is created
* **Meeting recording** — When a recording session starts or completes (includes duration and transcript link)
* **Retrospective published** — When the post-incident review is published

Each notification includes a "View in Rootly" button for quick access.

***

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

### Google Chat Variables

| Variable                                     | Description                                                                                                                                    |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `{{ incident.google_chat_space_id }}`        | ID of the incident's Google Chat space                                                                                                         |
| `{{ incident.google_chat_space_name }}`      | Full resource name of the space (for example, `spaces/AAAA...`)                                                                                |
| `{{ incident.google_chat_space_url }}`       | URL to the Google Chat space                                                                                                                   |
| `{{ incident.google_chat_space_short_url }}` | Shortened URL to the space                                                                                                                     |
| `{{ incident.google_chat_space_archived }}`  | Whether the space has been deleted (Google Chat does not support archiving — this flag indicates the space was removed via the Archive action) |
| `{{ incident.google_chat_space_domain_id }}` | Google Workspace domain ID of the space                                                                                                        |

## Troubleshooting

<AccordionGroup>
  <Accordion title="Spaces not being created" icon="circle-xmark">
    Workflows run successfully but no Google Chat spaces appear.

    **Solutions:**

    * Confirm the Rootly bot has been added to the space
    * If using a service account, verify domain-wide delegation is configured with the correct Client ID and all required scopes
    * If using a service account, confirm the delegated user email exists as an active user in your Google Workspace
    * Check workflow run logs for errors: **Workflows > Your Workflow > ... > View Runs**
  </Accordion>

  <Accordion title="Cards not rendering (plain text only)" icon="circle-xmark">
    Messages appear as plain text instead of rich Cards v2.

    **Solutions:**

    * Confirm the Rootly bot has been added to the target space
    * Check workflow run logs for specific error messages
  </Accordion>

  <Accordion title="Marketplace app not appearing" icon="circle-xmark">
    After installing from the Marketplace, the Rootly bot is not available in Google Chat.

    **Solutions:**

    * Verify the Marketplace app was approved by a Google Workspace admin
    * It may take a few minutes for the app to propagate across your workspace
    * Try refreshing Google Chat or signing out and back in
    * Check your Google Workspace admin console under **Apps > Google Workspace Marketplace apps** to confirm the installation
  </Accordion>

  <Accordion title="Slash commands not responding" icon="circle-xmark">
    Typing `/rootly` or `/incident` in Google Chat does nothing.

    **Solutions:**

    * Confirm the Rootly bot has been added to the space where you're running commands
    * Verify the integration is active in **Configuration > Integrations > Google Chat**
    * If using a service account, check that domain-wide delegation is correctly configured
  </Accordion>

  <Accordion title="Domain-wide delegation not working" icon="circle-xmark">
    Service account operations fail with permission errors.

    **Solutions:**

    * Double-check the Client ID in the admin console matches the service account's OAuth 2 Client ID (not the service account email)
    * Ensure all six scopes are entered exactly as shown, comma-separated with no spaces
    * Domain-wide delegation changes can take up to 24 hours to propagate — wait and retry
    * Verify the delegated user email is a valid, active user in the same Google Workspace domain
  </Accordion>
</AccordionGroup>

## Uninstall

To remove the Google Chat integration from Rootly:

1. Go to **Configuration > Integrations** and find **Google Chat**
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>
  If you used the service account setup, disconnecting from Rootly does not remove the service account or domain-wide delegation from your Google Cloud project. To fully uninstall, revoke the domain-wide delegation in the Google Workspace admin console and delete the service account if no longer needed.
</Warning>

***
