---
title: "How to connect Zoom with ZooMeet using Server-to-Server OAuth"
description: "This guide sets up the **Server-to-Server OAuth** card in **ZooMeet** > **Settings** > **Connect**, the connection every ZooMeet feature needs. It works through a small Server-to-Server OAuth app that you create in your own Zoom account. This app lets ZooMeet…"
url: "https://sovlix.com/docs/connect-zoom-with-zoomeet/"
updated: "2026-10-06"
category: ZooMeet / Setup
---

# How to connect Zoom with ZooMeet using Server-to-Server OAuth

This guide sets up the **Server-to-Server OAuth** card in **ZooMeet** > **Settings** > **Connect**, the connection every ZooMeet feature needs. It works through a small Server-to-Server OAuth app that you create in your own Zoom account. This app lets ZooMeet create and manage meetings, webinars, recordings, users and reports for you.

You build the app once in the Zoom App Marketplace, copy its three keys, and paste them into ZooMeet. Nobody else sits between your site and Zoom, and you can remove the app at any time.

By the end of this guide, you will have:

- A Server-to-Server OAuth app with every scope ZooMeet uses, activated on your Zoom account
- Your **Account ID**, **Client ID** and **Client secret** saved in ZooMeet
- A green **Connected** badge on the **Server-to-Server OAuth** card

**Estimated setup time:** 5 minutes.

## Before you begin

Make sure you have:

- A Zoom account where you are the owner or an admin, with permission to build apps in the Zoom App Marketplace
- An administrator account on your WordPress site
- ZooMeet installed and activated

Let's get started.

## Install and activate ZooMeet first

If ZooMeet is already active on your site, skip to Step 1.

1. In the WordPress admin menu, go to **Plugins** > **Add New Plugin**.
2. Search for **ZooMeet**.
3. Click **Install Now**, then **Activate**.

[![Add Plugins screen with the ZooMeet search result highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-00-install-zoomeet.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-00-install-zoomeet.webp)
Installing the free ZooMeet plugin from the WordPress plugin directory.

**Tip:** After activation, **ZooMeet** > **Get Started** lists your setup milestones. The **Connect Zoom** milestone opens the same screen as Step 1, and shows a tick once you finish this guide.

[![The Get Started milestones with Connect Zoom highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-00-get-started-connect-zoom.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-00-get-started-connect-zoom.webp)
Get Started shows a tick once Zoom is connected.

Now comes the main part: creating the Zoom app and connecting it to ZooMeet.

## Step 1: Open the Connect screen in ZooMeet

Everything ZooMeet needs from Zoom goes into the **Connect** section of the settings. Keep it open in its own tab while you work in Zoom.

1. In the WordPress admin menu, go to **ZooMeet** > **Settings**.
2. Click **Connect** at the top of the settings menu.
3. Find the **Server-to-Server OAuth** card, marked **Required**. The **Meeting SDK** card below it, marked **Optional**, is for Join in browser and is not needed here.

[![ZooMeet Settings with Connect selected, showing the Server-to-Server OAuth and Meeting SDK cards](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-01-open-connect.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-01-open-connect.webp)
Connect is the first section in ZooMeet Settings. Each card shows its own connection state.

## Step 2: Open the built-in setup guide

Each card carries a short checklist of this guide. It makes a handy reference while you click through Zoom.

1. On the **Server-to-Server OAuth** card, click **Edit** (or the card itself if it is not connected yet).
2. Click **Where do I get these IDs?**
3. Check that the card lists four steps, starting with **Open the Zoom App Marketplace**.

[![The Server-to-Server OAuth card with the four-step setup guide open](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-02-s2s-setup-guide.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-02-s2s-setup-guide.webp)
Open, next to step 1, takes you to the Zoom App Marketplace in a new tab.

This app is the connection itself. Every call ZooMeet makes to Zoom, from creating a meeting to listing recordings, is signed with the token these keys produce.

## Step 3: Open the developer area of the Zoom App Marketplace

1. Go to `https://marketplace.zoom.us/` and sign in with the Zoom account your meetings belong to.
2. In the left menu, click **Developers** (**Build on Zoom's platform**).

[![Zoom App Marketplace with the Developers link highlighted in the left menu](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-03-zoom-marketplace-developers.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-03-zoom-marketplace-developers.webp)
Developers sits at the bottom of the left menu and opens your Created apps list.

## Step 4: Build a Server to Server OAuth App

1. Next to **Developer**, click the **+** button, then click **Build app**.

[![The Created apps page with the plus button open and Build app highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-04-zoom-build-app.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-04-zoom-build-app.webp)
The plus button next to Developer opens the Build app menu.

1. In **What kind of app are you creating**, select **Server to Server OAuth App**.
2. Click **Create**.

[![The app type dialog with Server to Server OAuth App selected and the Create button highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-05-zoom-choose-s2s.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-05-zoom-choose-s2s.webp)
Pick Server to Server OAuth App. General App is only needed for Join in browser, which has its own guide.

1. In **App Name**, type `ZooMeet Integration`.
2. Click **Create**.

[![Create a Server-to-Server OAuth app dialog with ZooMeet Integration as the app name](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-06-zoom-name-s2s.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-06-zoom-name-s2s.webp)
Use a name you will recognise later. Only you and your Zoom admins see it.

**Tip:** When ZooMeet is not connected yet, the card also shows a **Create a Server-to-Server OAuth app** button that opens the right Zoom page for you.

## Step 5: Find the app credentials

Zoom opens the new app on **App Credentials**. This page holds the three keys ZooMeet needs. You copy them in Step 9, after the app is activated.

[![App Credentials page with the Account ID, Client ID and Client Secret fields highlighted and their values hidden](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-07-zoom-s2s-credentials.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-07-zoom-s2s-credentials.webp)
Each value has its own Copy button. The Client Secret stays hidden on screen.

**Security note:** Treat these three values like a password. Anyone who has all three can create and delete meetings on your Zoom account.

1. Click **Continue**.

## Step 6: Fill in the app information

Zoom asks for a few details before it lets you activate the app.

1. On **Information**, enter a **Short Description**, for example `Connects ZooMeet to Zoom to create and manage meetings and webinars.`
2. Enter your **Company Name**.
3. Under **Developer Contact Information**, enter a **Name** and an **Email**. Zoom sends app and API change notices to this address.
4. Click **Continue**.

[![Information page with the Short Description, Company Name and Developer Contact fields highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-08-zoom-s2s-information.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-08-zoom-s2s-information.webp)
Zoom saves each field as you leave it.

1. On **Feature**, you do not need to change anything. Click **Continue**.

## Step 7: Add the scopes

Scopes are the permissions the app has on your Zoom account. ZooMeet creates and edits meetings and webinars, manages registrants, reads your Zoom users, shows reports and lists cloud recordings, so it needs scopes from each of those groups.

1. On **Scopes**, click **Add Scopes**.

[![Scopes page of the ZooMeet Integration app with the Add Scopes button highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-09-zoom-s2s-add-scopes.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-09-zoom-s2s-add-scopes.webp)
The list is empty on a new app.

1. In the **Add Scopes** dialog, paste a scope from the list below into **Search scope**.
2. Tick the scope that appears.
3. Repeat for every scope in the list. Your ticks are kept while you search.
4. Click **Done**.

[![Add Scopes dialog with meeting:read:meeting:admin in the search box and the View a meeting scope ticked](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-10-zoom-s2s-search-scope.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-10-zoom-s2s-search-scope.webp)
Searching by the scope ID finds the exact scope. The counter at the bottom shows how many you have ticked.

Back on **Scopes**, Zoom lists everything you added, grouped by product.

[![Scopes page listing the added Account scopes with their descriptions](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-11-zoom-s2s-scopes-added.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-11-zoom-s2s-scopes-added.webp)
Zoom marks master scopes as Optional for you. Leave them as they are.

Below you can see all required scopes:

**Important:** ZooMeet needs these scopes to create and manage meetings, webinars, recordings, users, reports and other Zoom resources. A missing scope does not stop the connection, but the matching feature fails later with a permission error.

**Note:** Scopes ending in `:master` only appear on a master account that manages sub accounts. Add them if Zoom offers them; skip them if your account does not list them.

**Account**

### View account information

- View an account's settings
   `account:read:account_setting:admin`
- View an account's settings
   `account:read:account_setting:master`
- View an account's settings
   `account:read:settings:admin`

---

### View and manage account information

- Update an account's settings
   `account:update:settings:admin`

---

### View and manage sub accounts

- Update an account's options
   `account:update:options:admin`
- Update an account's owner
   `account:update:owner:master`
- Update an account's settings
   `account:update:settings:master`

---

**Meetings**

### View all user meeting summaries

- View a meeting's summary
   `meeting:read:summary:admin`

---

### View all user meetings

- View a meeting's chat message
   `meeting:read:chat_message:admin`
- View a meeting's invitation
   `meeting:read:invitation:admin`
- View a user's meetings
   `meeting:read:list_meetings:admin`
- View a user's upcoming meetings
   `meeting:read:list_upcoming_meetings:admin`
- View a meeting
   `meeting:read:meeting:admin`

---

### View past meetings

- View a past meeting
   `meeting:read:past_meeting:admin`
- View a past meeting's instances
   `meeting:read:list_past_instances:admin`
- View a past meeting's participants
   `meeting:read:list_past_participants:admin`

---

### View and manage all user meetings

- Delete a meeting
   `meeting:delete:meeting:admin`
- Remove a meeting's registrant
   `meeting:delete:registrant:admin`
- Update a meeting
   `meeting:update:meeting:admin`
- Update a meeting registrant's registration status
   `meeting:update:registrant_status:admin`
- Update a meeting's status
   `meeting:update:status:admin`
- Create invite links for a meeting
   `meeting:write:invite_links:admin`
- Create a meeting for a user
   `meeting:write:meeting:admin`
- Add a registrant to a meeting
   `meeting:write:registrant:admin`

---

**Meeting Tokens**

### View meeting tokens

- View a meeting live streaming join token
   `meeting:read:live_streaming_token:admin`
- View a meeting local archiving join token
   `meeting:read:local_archiving_token:admin`

---

**Meeting Registrants**

### View meeting registrants

- View a meeting's registrant
   `meeting:read:registrant:admin`
- View a meeting's registrants
   `meeting:read:list_registrants:admin`

---

### View and manage sub-account meetings

- Delete a meeting
   `meeting:delete:meeting:master`
- Remove a meeting's registrant
   `meeting:delete:registrant:master`
- View a user's meetings
   `meeting:read:list_meetings:master`
- View a meeting's registrants
   `meeting:read:list_registrants:master`
- View a meeting
   `meeting:read:meeting:master`
- View a meeting's registrant
   `meeting:read:registrant:master`
- Update a meeting
   `meeting:update:meeting:master`
- Update a meeting registrant's registration status
   `meeting:update:registrant_status:master`
- Create a meeting for a user
   `meeting:write:meeting:master`
- Add a registrant to a meeting
   `meeting:write:registrant:master`

---

**Cloud Recordings**

### View all user recordings

- View a recording
   `cloud_recording:read:recording:admin`
- Returns all of a meeting's recordings
   `cloud_recording:read:list_recording_files:admin`
- List account recording
   `cloud_recording:read:list_account_recordings:admin`
- Lists all cloud recordings for a user
   `cloud_recording:read:list_user_recordings:admin`

---

### View and manage all user recordings

- Recover meeting recordings
   `cloud_recording:update:recover_meeting_recordings:admin`
- Recover a single recording
   `cloud_recording:update:recover_single_recording:admin`
- Delete a specific recording file from a meeting
   `cloud_recording:delete:recording_file:admin`
- Delete all recording files of a meeting
   `cloud_recording:delete:meeting_recording:admin`

---

### View and manage sub-account recordings

- Returns all of a meeting's recordings
   `cloud_recording:read:list_recording_files:master`
- Lists all cloud recordings for a user
   `cloud_recording:read:list_user_recordings:master`
- Delete all recording files of a meeting
   `cloud_recording:delete:meeting_recording:master`
- Delete a specific recording file from a meeting
   `cloud_recording:delete:recording_file:master`

---

**Archived Recordings**

### View archived files

- Return a specific meeting instance's archived files
   `archiving:read:archived_files:admin`

---

**Reports**

### View report data

- View daily usage reports
   `report:read:daily_usage:admin`
- View users usage reports
   `report:read:list_users:admin`
- View a user's usage reports
   `report:read:user:admin`
- View meeting detail reports
   `report:read:meeting:admin`
- View meeting participant reports
   `report:read:list_meeting_participants:admin`
- View webinar detail reports
   `report:read:webinar:admin`
- View webinar participant reports
   `report:read:list_webinar_participants:admin`

---

### View sub-account report data

- View webinar detail reports
   `report:read:webinar:master`

---

**Users**

### View all user information

- Verify a user's email
   `user:read:email:admin`
- View a user's assistants
   `user:read:list_assistants:admin`
- View a user's permissions
   `user:read:list_permissions:admin`
- View users
   `user:read:list_users:admin`
- View a user's settings
   `user:read:settings:admin`
- View a user's token
   `user:read:token:admin`
- View a user
   `user:read:user:admin`

---

### View user's ZAK token

- View a user's Zoom Access Key
   `user:read:zak:admin`

---

### View users and manage users

- Delete a user
   `user:delete:user:admin`
- Update a user
   `user:update:user:admin`
- Create a user
   `user:write:user:admin`

---

### View and manage sub-account users

- Delete a user
   `user:delete:user:master`
- View users
   `user:read:list_users:master`
- View a user
   `user:read:user:master`
- Update a user
   `user:update:user:master`
- Create a user
   `user:write:user:master`

---

**Zoom Events**

### Manage event speaker information

- Remove an event's speaker
   `zoom_events:delete:speaker:admin`
- Update an event's speaker
   `zoom_events:update:speaker:admin`
- Add a speaker to an event
   `zoom_events:write:speaker:admin`

---

### View all events information

- View an event
   `zoom_events:read:event:admin`
- View events
   `zoom_events:read:list_events:admin`
- View Zoom event access links
   `zoom_events:read:list_access_links:admin`

---

**Webinars**

### View all user webinars

- View a webinar's alert
   `webinar:read:alert:admin`
- View a user's webinars
   `webinar:read:list_webinars:admin`
- View a webinar's registrants
   `webinar:read:list_registrants:admin`
- View a webinar's participant
   `webinar:read:participant:admin`
- View a webinar's registrant
   `webinar:read:registrant:admin`
- View a webinar
   `webinar:read:webinar:admin`
- View a past webinar's instances
   `webinar:read:list_past_instances:admin`
- View a past webinar's participants
   `webinar:read:list_past_participants:admin`

---

### View and manage all user webinars

- Remove a webinar's registrant
   `webinar:delete:registrant:admin`
- Delete a webinar
   `webinar:delete:webinar:admin`
- Update a webinar registrant's registration status
   `webinar:update:registrant_status:admin`
- Update a webinar's status
   `webinar:update:status:admin`
- Update a webinar
   `webinar:update:webinar:admin`
- Create invite links for webinars
   `webinar:write:invite_links:admin`
- Add a registrant to a webinar
   `webinar:write:registrant:admin`
- Create a webinar for a user
   `webinar:write:webinar:admin`

---

### View and manage sub-account webinars

- Create a webinar for a user
   `webinar:write:webinar:master`
- Remove a webinar's registrant
   `webinar:delete:registrant:master`
- View a webinar's registrants
   `webinar:read:list_registrants:master`
- View a user's webinars
   `webinar:read:list_webinars:master`
- View a webinar's registrant
   `webinar:read:registrant:master`
- View a webinar
   `webinar:read:webinar:master`
- Update a webinar registrant's registration status
   `webinar:update:registrant_status:master`
- Update a webinar
   `webinar:update:webinar:master`
- Create invite links for webinars
   `webinar:write:invite_links:master`
- Add a registrant to a webinar
   `webinar:write:registrant:master`

---

**Note:** Older guides list the classic scope `recording:read:admin`. Zoom's current scope picker no longer offers it. `cloud_recording:read:recording:admin` and `cloud_recording:read:list_user_recordings:admin` above replace it.

When you have ticked them all, click **Done**, then **Continue**.

## Step 8: Activate the app

An app that is not activated gives out keys that Zoom refuses, so do not skip this step.

1. On **Activation**, check that it says **Your app is ready for activation**.
2. Click **Activate your app**.

[![Activation page reading Your app is ready for activation, with the Activate your app button highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-12-zoom-s2s-activate.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-12-zoom-s2s-activate.webp)
If Zoom lists missing information instead, go back to that page and fill it in.

When it works, Zoom shows **Your app is activated on the account**.

[![Activation page reading Your app is activated on the account](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-13-zoom-s2s-activated.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-13-zoom-s2s-activated.webp)
The keys are live from this moment.

## Step 9: Paste the keys into ZooMeet and connect

ZooMeet trades the three keys for a token as soon as you click the button, so you know at once whether Zoom accepts them.

1. In Zoom, open **App Credentials** and click **Copy** next to **Account ID**.
2. In the ZooMeet tab, paste it into **Account ID** on the **Server-to-Server OAuth** card.
3. Do the same for **Client ID** and **Client Secret**. ZooMeet calls the last one **Client secret**.
4. Click **Connect**. While ZooMeet talks to Zoom, the button reads **Connecting…**. On a card that is already connected, the button reads **Reconnect**.

[![The Server-to-Server OAuth card with the three masked key fields and the Reconnect button highlighted](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-14-enter-s2s-keys.webp)](https://sovlix.com/wp-content/uploads/2026/10/zoomeet-connect-zoom-account-14-enter-s2s-keys.webp)
The keys stay hidden as dots. Click the eye icon only when nobody is looking at your screen.

The **Connect** button stays greyed out until all three fields are filled.

## Step 10: Confirm the connection

When Zoom accepts the keys, the card shows a green **Connected** badge and folds itself away. Click **Edit** to open it again at any time.

The open card has two smaller buttons next to **Reconnect**:

- **Renew OAuth Token** asks Zoom for a fresh token with the same keys. Use it if meetings suddenly stop being created and the keys have not changed. You see **Token renewed** when it works.
- **Disconnect** stops ZooMeet acting on your Zoom account. Your keys stay in the fields, so reconnecting later is one click.

ZooMeet can now create meetings and webinars on your Zoom account.

## Next step

Want attendees to join inside your site? [Set up Join in browser](https://sovlix.com/docs/zoomeet-join-zoom-in-browser/).

## Troubleshooting

### "Zoom refused these credentials."

ZooMeet sent the Server-to-Server OAuth keys to Zoom and Zoom rejected them. Zoom's own reason follows the message on the card.

Check that:

- The app shows **Your app is activated on the account** on **Activation**.
- You copied all three keys from the same Server-to-Server OAuth app.
- There are no spaces at the start or end of a field.

Fix the field, then click **Connect** again.

### "Zoom rejected those keys. Check them and try again."

ZooMeet shows this when Zoom gave no clearer reason. Treat it the same way as the message above.

### "Renew failed. Please check your credentials."

**Renew OAuth Token** could not get a new token with the saved keys. The secret may have been regenerated in Zoom, or the app deactivated. Copy fresh keys from **App Credentials**, paste them in, and click **Reconnect**.

### Meetings or reports fail with a permission error

The app is connected but is missing a scope. Open **ZooMeet Integration** in the Zoom App Marketplace, go to **Scopes**, add the missing ones from Step 7, and save. You do not need to change anything in ZooMeet.

**Tip:** Not sure what Zoom refused? Turn on **API logs** in **ZooMeet** > **Settings** and repeat the action. The log shows Zoom's own message and error code. See [How to find Zoom connection problems with API logs in ZooMeet](https://sovlix.com/docs/zoomeet-api-logs/).

### The other settings sections say "Connect Zoom to change these settings."

ZooMeet is not connected, so **Events**, **Video** and the other sections are locked. Finish Steps 3 to 10 of this guide.

## Frequently asked questions

### Do I need a paid Zoom plan?

**No**, not to connect. Some features have their own Zoom requirements: webinars need a Zoom Webinars licence, cloud recording needs a paid plan, and meetings on a free Zoom account end after 40 minutes.

### Zoom does not list the master scopes. Is that a problem?

**No.** Scopes ending in `:master` only exist on master accounts that manage sub accounts. Skip them if Zoom does not offer them.

### Can I use a JWT app instead?

**No.** Zoom retired JWT apps. ZooMeet uses Server-to-Server OAuth for the connection.

### What happens to my meetings if I disconnect?

They stay in Zoom and on your site, and their join links keep working. You cannot create or change meetings from ZooMeet until you reconnect.

## Security best practices

- Keep the **Client secret** private. Never share it in screenshots, tickets, email or code repositories.
- Give WordPress administrator access only to people you trust. Only administrators can see and change these keys.
- If a secret leaks, click **Regenerate** next to it in Zoom, paste the new one into ZooMeet and save again.
- Add the scopes ZooMeet uses and no others.
- Deactivate or delete the Zoom app if you stop using ZooMeet.

## You're ready to create Zoom meetings

Your site now talks to Zoom through your own Server-to-Server OAuth app. The app, its scopes and its secret stay in your own Zoom account. Next, create your first meeting, or set up Join in browser so attendees can join inside your site.

- [How to set up the Zoom Meeting SDK for Join in browser in ZooMeet](https://sovlix.com/docs/zoomeet-join-zoom-in-browser/)
- [How to create your first Zoom meeting with ZooMeet](https://sovlix.com/docs/zoomeet-create-zoom-meeting/)
- [How to set default meeting settings with ZooMeet](https://sovlix.com/docs/zoomeet-default-meeting-settings/)
- [How to import meetings and webinars from Zoom with ZooMeet](https://sovlix.com/docs/zoomeet-import-from-zoom/)
- [How to find Zoom connection problems with API logs in ZooMeet](https://sovlix.com/docs/zoomeet-api-logs/)
