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

# Zoom

> Connect Zoom to Triggr with a Zoom general app that an admin authorizes for each Zoom account.

Triggr lists an account's Zoom Phone users, and can call other Zoom endpoints within the app's scopes. You need Zoom Phone on a Pro or higher plan.

Only members of the account that owns an unpublished Zoom app can authorize it, so create the app in the account you're connecting: yours for the Base Configuration, each client's for theirs.

## Create a Zoom app

You need the account owner or admin role, or the Zoom for developers role.

<Steps>
  <Step title="Start a general app">
    In the [Zoom App Marketplace](https://marketplace.zoom.us/), click Developer, then **Develop > Build an app**. Select General app (not Server-to-Server OAuth) and click Create.
  </Step>

  <Step title="Set the basic information">
    On Basic Info, rename the app `Triggr` and choose Admin-managed. Set OAuth redirect URL to `https://app.triggr-app.com/oauth/callback` and add the same URL under OAuth allow lists.
  </Step>

  <Step title="Add the scope">
    On Scopes, click **Add Scopes**, tick `phone:read:list_users:admin` (or `phone:read:admin` for classic scopes) and add a Scope Description. Add scopes for any other endpoints you'll call, from the [API reference](https://developers.zoom.us/docs/api/).
  </Step>

  <Step title="Copy the credentials">
    On Basic Info, copy the Client ID and Client Secret under App Credentials.
  </Step>
</Steps>

See Zoom's [Create an OAuth app](https://developers.zoom.us/docs/integrations/create/) guide.

## Connect it in Triggr

<Steps>
  <Step title="Open the configuration">
    Go to **Integrations > Zoom** and click **Configure** on the Base Configuration card.

    <Frame>
      <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/base-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=bb81acb082055015f91beda7b4876f35" alt="The Base Configuration card with Status Not Configured, Admin Consent Not Required and a Configure button." width="2272" height="330" data-path="images/integrations-common/base-configuration.png" />
    </Frame>
  </Step>

  <Step title="Enter the app credentials">
    Both fields open with values in them: clear them, paste your app's Client ID and Client Secret, and click Save Configuration.

    <Frame>
      <img src="https://mintcdn.com/triggr/0aCLuL0-lL3gEqxH/images/zoom/configure.png?fit=max&auto=format&n=0aCLuL0-lL3gEqxH&q=85&s=8f2b4cd13c554247184df8322261ed85" alt="The Zoom configuration window with Client ID and Client Secret fields that open filled in (blurred), an Allow insecure TLS switch under Advanced, and a Save Configuration button." width="1344" height="1126" data-path="images/zoom/configure.png" />
    </Frame>
  </Step>

  <Step title="Authorize Triggr">
    Click **Authorize**, sign in as an admin of the Zoom account that owns the app, and click Allow. If your browser is signed in to a different Zoom account, sign out of Zoom first.
  </Step>
</Steps>

Authorize again only if you change the app's scopes or credentials, or the app is removed.

## Set up each client

Per-client integrations never fall back to the Base Configuration. For each client, [create a Zoom app](#create-a-zoom-app) in the client's Zoom account, click **Configure** on the client's row, enter that app's Client ID and Client Secret, save, then click Authorize as the client's Zoom admin.

<Frame>
  <img src="https://mintcdn.com/triggr/nyuVXZ1rouDTTEvu/images/integrations-common/per-client-configuration.png?fit=max&auto=format&n=nyuVXZ1rouDTTEvu&q=85&s=11464b4946bea0b580c73330d9114a41" alt="The Per-Client Configuration card listing Acme Corp and Globex, each Not Configured with Admin Consent Not Required and a Configure button." width="2272" height="646" data-path="images/integrations-common/per-client-configuration.png" />
</Frame>

<Note>
  An app [published on the Zoom App Marketplace](https://developers.zoom.us/docs/distribute/) can be authorized by other accounts' admins, so one app can serve every client.
</Note>

## Use Zoom in workflows

* List Phone Users takes optional filters. Pass the response's `next_page_token` into `nextPageToken` for the next page.
* For other endpoints, use a Generic Integration Action step with URL Type set to Relative to base URL and the path after `https://api.zoom.us/v2`, such as `/phone/sites` (scope `phone:read:list_sites:admin`).

## Troubleshooting

<AccordionGroup>
  <Accordion title="Zoom shows an invalid redirect error">
    Check OAuth redirect URL is exactly `https://app.triggr-app.com/oauth/callback` and is in OAuth allow lists, then click Authorize again.
  </Accordion>

  <Accordion title="You can't authorize, or authorization doesn't complete">
    Sign in as an owner or admin of the account that owns the app. Check Client ID and Client Secret come from the same app, then click Authorize again.
  </Accordion>

  <Accordion title="no Zoom integration is configured for this client">
    Configure and authorize the client on the Per-Client Configuration card, as in [Set up each client](#set-up-each-client).
  </Accordion>

  <Accordion title="Permission errors (403)">
    Check the account has Zoom Phone and the app has the scope. After adding a scope, click Authorize again.
  </Accordion>

  <Accordion title="Authentication errors (401)">
    The authorization is no longer valid. Update the credentials if they changed, then click Authorize again.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.