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

# Zoom

> Let allGood create and manage Zoom webinars for you, so nobody on your team has to sign in to Zoom.

allGood can create the Zoom webinar for you when you publish a Zoom Webinar, and use its join link in your emails and pages. This page covers the one-time setup.

It takes two people, or one person with two roles: someone with a **Zoom admin** login (to create the app), and someone who can open **Settings > Integrations** in allGood.

## Before you start

* A Zoom account with the **Webinar plan**, and one user (the **host seat**) who has a **Webinar license**. Every webinar allGood creates belongs to that seat.
* A Zoom login that can create **Server-to-Server OAuth** apps (an account owner or admin, or a custom role with that permission).
* The host seat's **email address** (or Zoom user ID).

> [!WARNING]
>
> If the account has no Webinar plan, or the host seat has no Webinar license, Zoom refuses to create webinars. The setup below will still save, but publishing fails with a message saying so.

## Set up the integration

**1. Create the Server-to-Server OAuth app in Zoom**

1. Sign in to the [Zoom App Marketplace](https://marketplace.zoom.us) with the admin login.
2. Choose **Develop** (the **Developers** link at the bottom of the left sidebar), then **Build App**.

![Open Developers in the Zoom App Marketplace](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/zoom-marketplace-developers.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=febbe5e2c0ec9347b66ea2e5fb6a0fe8)

Open Developers in the Zoom App Marketplace

3. Pick **Server to server OAuth app**, not General app, then **Create**.

![Choose Server to server OAuth app](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/create-server-to-server-app.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=6cf933eb55d4e9e163a4e8780ccbb7ca)

Choose Server to server OAuth app

> [!NOTE]
>
> If **Create** stays grey, nothing is selected yet. If the Server to server option is unavailable, the login lacks permission to create these apps.

4. Give it a name, such as `allGood`.
5. Open the **App Credentials** section and copy three values. You will paste them into allGood in a later step:
   * **Account ID**
   * **Client ID**
   * **Client secret**

![Copy the Account ID, Client ID and Client Secret](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/app-credentials.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=8ea4b0def186c38d50a567e37d7d280d)

Copy the Account ID, Client ID and Client Secret

This app type acts for the whole account with fixed credentials, so allGood never needs anyone to sign in, and nothing breaks when a person leaves or changes their password.

**2. Fill in the app's information**

Zoom will not let you activate the app until this is done. Under **Information**, fill in the app name, a short description, the company name, and a developer contact name and email.

**3. Add the scopes**

Open the **Scopes** tab, choose **Add Scopes**, and add the scopes below. Search for each by name.

![Search for each scope by name and add it to the app](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/add-scopes.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=f7a868ec0ede7f147daa904a0279ebcf)

Search for each scope by name and add it to the app

**Required**

| Scope | What allGood uses it for |
| - | - |
| `user:read:user:admin` | Check the host seat exists when you save the integration |
| `webinar:write:webinar:admin` | Create the webinar |
| `webinar:update:webinar:admin` | Change the date, title or length of a webinar it already made |
| `webinar:delete:webinar:admin` | Cancel the webinar when you take the asset down or replace it with a pasted link |
| `webinar:read:list_webinars:admin` | Find a webinar after a crashed publish, so it is reused and not duplicated |

**Recommended**

| Scope | What allGood uses it for |
| - | - |
| `user:read:settings:admin` | Check, when you save the integration, that the host seat has the Webinar feature, so a missing license shows up straight away and not on the first publish. Without it the check is skipped. |

> [!NOTE]
>
> New apps use the granular scope names above. Zoom lists both the `:admin` and the plain form of some scopes in its error messages; add the `:admin` ones, as the app acts for the whole account. Zoom owns these names and has renamed scopes before, so check them against the search box in the **Scopes** tab.

> [!TIP]
>
> If a scope is missing, allGood says so when you publish and names the scope, for example "The Zoom app is missing permission (webinar:read:list\_webinars:admin)". Add it in the app's Scopes tab and publish again. You do not need to change anything in allGood.

**4. Activate the app**

On the **Activation** step, switch the app on. You should see "Your app is activated on the account."

![The app shows as activated on the account](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/activate-app.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=50bc492132715dfa79c7bea137c4e708)

The app shows as activated on the account

> [!WARNING]
>
> An inactive app can be created and its credentials copied, but every request is refused.

**5. Connect Zoom in allGood**

1. In allGood, open **Settings > Integrations** and install **Zoom**.

![Install Zoom from Settings > Integrations](https://mintcdn.com/allgoodtechnologyinc/pOBpGy1O_zhPC5jq/images/integrations/zoom/allgood-install-zoom.png?fit=max\&auto=format\&n=pOBpGy1O_zhPC5jq\&q=85\&s=45113ce93d8b3f601c16e332ba522af5)

Install Zoom from Settings > Integrations

2. Fill in the form:

   | Field | What to enter |
   | - | - |
   | Account ID | From the Zoom app's App Credentials |
   | Client ID | From the Zoom app's App Credentials |
   | Client Secret | From the Zoom app's App Credentials |
   | Host email or user ID | The email of the Zoom user who has the Webinar license |

3. Save. allGood checks the credentials with Zoom straight away, so a mistake shows up here and not at publish time. It confirms the credentials work, that the host seat exists, and (with the recommended scope) that the seat has webinars.

Credentials are stored encrypted, like every other integration. allGood asks Zoom for a short-lived access token each time it needs one and never stores the token.

**6. Try it**

1. On the content page choose **Create > Zoom Webinar**, or start a webinar motion and pick **Create the webinar in Zoom for me**.
2. Give it a title, a date and time in the future, a time zone and a duration.
3. Publish it. After a moment the asset page shows the **join link** and the Zoom webinar ID, and the webinar appears under **Webinars > Upcoming** in Zoom with the title and agenda you gave it.

To clean up a test, take the asset down in allGood. That cancels the webinar in Zoom.

## What allGood does in Zoom

* Creates, changes and cancels **only** webinars it made. Each carries a hidden line in its agenda, `[allgood:<asset id>]`, which it uses to recognise its own. Do not remove it.
* Creates webinars with **no registration** (everyone shares one join link) and with Zoom's own registration, confirmation and panelist emails **turned off**, because allGood sends the emails.
* Moving the date updates the **same** Zoom webinar, so its link and ID do not change.
* All webinars are created on the one host seat, so two webinars at overlapping times on that seat can clash. Publishing warns you when it sees an overlap.

## Changing the credentials later

Open the integration in Settings and choose **Edit Settings**.

* The **host seat** is shown, and you can change it.
* **Account ID, Client ID and Client Secret** show as dots, because stored secrets are never sent back to the browser. **Leave a field blank to keep the saved value**, so you can change only the host seat, or only rotate the secret. Saving checks the result with Zoom first.
* To change only one value, leave the others blank. To replace everything (for example, a new app), fill in all four.

## Troubleshooting

| What you see | What it means | What to do |
| - | - | - |
| "Zoom rejected the saved credentials. Reconnect Zoom in Settings." | The account ID, client ID or secret is wrong, or the app is not activated | Re-copy the three values from the app, confirm it is activated, and save again |
| "The Zoom app is missing permission (…)" | A required scope is not on the app | Add the scope the message names, then publish again |
| "The Zoom account or the host seat does not have Webinars… subscribe the account to a Webinar plan and enable webinars for the host user" | No Webinar plan, or the host seat has no Webinar license | In Zoom, assign a Webinar license to the host seat, then publish again |
| "Zoom could not find that webinar or user" when saving | The host email or ID does not match a user on this Zoom account | Fix the host seat's email, and check it belongs to the same account as the app |
| "Zoom could not find that webinar" when publishing a date change | The webinar was deleted in Zoom by hand | Publish the webinar again as a new one, or restore it. allGood will not silently make a second webinar |
| "Connect Zoom in Settings before publishing this webinar" | No Zoom integration on this workspace | Connect Zoom in allGood |
| "This webinar's start time has already passed" | The start is in the past | Pick a future time |
| Warning: "N other live Zoom webinar(s) run at the same time" | Overlap on the shared seat | Move one of them, or publish anyway if you accept the clash |
| "Could not reach Zoom" or "Zoom had a problem on its side" | A temporary Zoom or network problem | allGood retries; if it still fails, publish again later |
| "Zoom is limiting requests right now" | Zoom's rate limit | Wait a minute and publish again |

When Zoom gives its own code and message, allGood includes them in brackets, such as `(Zoom said: code 200: …)`, so you can search Zoom's documentation for them.


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