Skip to main content
ConfigView pulls Zoom account data through a Server-to-Server OAuth app that you create in the Zoom App Marketplace. That app type authenticates as the account itself rather than as a signed-in user, so nothing breaks when the person who set it up leaves. You will end up with 3 secrets in ConfigView (ZOOM_ACCOUNT_ID, ZOOM_CLIENT_ID, ZOOM_CLIENT_SECRET) when setup is complete.
Scope of this integration today. ConfigView currently ingests the Zoom user directory only — who has an account, what licence type, when they last signed in. Meetings, webinars, recordings and phone are not collected. If you need those, mention it to your ConfigView contact.

Step 1: Create the Server-to-Server OAuth app

  1. Sign in to the Zoom App Marketplace as an account Owner or Admin with permission to create apps
  2. Go to DevelopBuild App
  3. Choose Server-to-Server OAuth
  4. Name: ConfigView
  5. On the App Credentials screen, copy all three values — you need every one of them:
    • Account ID
    • Client ID
    • Client Secret
  6. Fill in the required Information fields (company name, developer contact) — Zoom will not let you activate the app without them
  7. On the Scopes screen, add the read scope ConfigView needs:
    • user:read:admin — View all user information
  8. Click Continue, then Activate your app
The activation step is the one people miss. An app that is created but not activated returns a token error rather than a permission error, so it reads like a bad secret. The ConfigView health check distinguishes the two for you.

Step 2: Add the secrets to ConfigView

  1. Go to your ConfigView dashboard: https://{companyname}.configview.com/admin/integrations/zoom
  2. Under Credentials, enter each value and click the save icon on its row:

Step 3: Enable the Zoom script in ConfigView

  1. Go to: https://{companyname}.configview.com/admin/integrations/zoom
  2. Click Connect. ConfigView creates its tables and schedules every collector at your default run time.
  3. The collectors it will start running — stop any you do not want under Collectors:
  4. Click Verify now to confirm the credentials work.

Step 4: Verify

  1. Go to: https://{companyname}.configview.com/admin/integrations/zoom
  2. Click Verify now to confirm the credentials work.
If a check fails:
  • Token request fails — Check all three secrets, and check the app is activated in the Marketplace. A created-but-not-activated app fails here, not at the scope check.
  • user:read:admin probe returns 401/403 — The scope is missing. Add it in the app’s Scopes tab, then re-activate the app; scope changes do not take effect until you do.
  • Health check passes but the table is empty — The account genuinely has no users visible to the scope, which is rare. Re-run the Users script and check the run log.

Data Tables

Once the script runs, the table is created in your database. It includes a run_at column for historical tracking.

Things worth knowing

type is the licence, and it is a number. Zoom encodes the licence type as an integer rather than a name (Basic / Licensed / On-prem). If you are reporting on paid seats, that column is the one to filter on — check a couple of known users to confirm the mapping for your account before relying on it. No status filter is sent. ConfigView calls /users without a status parameter, so you get whatever Zoom’s default set is for that endpoint. If your row count does not match the user count in the Zoom admin console, that is the first thing to check — deactivated and pending users are the usual difference. last_login_time is not a liveness signal on its own. It records the last sign-in Zoom saw, which for a user on a permanently signed-in desktop client can be a long time ago while they are using Zoom daily. Pair it with last_client_version before concluding a seat is idle.