View Categories

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

Table of Contents

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

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.

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.

Powered by BetterDocs