Skill 139 · Build Zoom Team Chat App
Subchapter 139.14
concepts/environment-setup.mdMarkdown9 KBView on GitHub
Complete guide to configuring your Zoom Team Chat development environment, obtaining credentials, and setting up your app.
If you don’t have owner/admin privileges:
Select: General App (OAuth)
⚠️ CRITICAL: Do NOT select “Server-to-Server OAuth”
Why: Server-to-Server OAuth apps do NOT support the Team Chat/Chatbot features. Only General App (OAuth) supports chatbots and team chat integrations.
On the Basic Info page, configure your app:
Update the auto-generated app name:
Choose how your app is managed:
| Type | Use Case | Token Flow |
|---|---|---|
| Admin-managed | Company-wide bots, notifications, helpdesk | Recommended for chatbots |
| User-managed | Personal bots, individual user tools | For user-specific apps |
For most chatbots: Choose Admin-managed
Important: App management type affects available features and scopes. If you change it later, reconfirm your selected features and scopes.
The build flow automatically generates:
| Credential | Environment |
|---|---|
| Client ID | Development & Production |
| Client Secret | Development & Production |
Note: Development and production credentials are different.
Enter your OAuth callback endpoint:
Local development:
http://YOUR_DEV_HOST:4000/auth/callbackProduction:
https://yourdomain.com/auth/callbackAdd all URLs that Zoom should allow as valid OAuth redirects:
Examples:
https://subdomain.domain.tld/path/oauth/callbackhttps://subdomain.domain.tldSkip this step if you’re only using Team Chat API (user-level messaging)
Go to Features page → Surface tab
In Select where to use your app, check Team Chat
| Field | Value | Example |
|---|---|---|
| Home URL | Your app’s home page | https://yourdomain.com |
| Domain Allow List | URLs Zoom client should accept | https://yourdomain.com |
Configure webhook settings:
| Field | Value | Example |
|---|---|---|
| Slash Command | Command to invoke bot | /mybot |
| Bot Endpoint URL | Webhook endpoint | https://yourdomain.com/webhook |
Critical: Your bot will NOT appear in Team Chat unless you enable Team Chat Subscription!
Navigate to App Credentials → Development:
| Credential | Where to Find |
|---|---|
| Client ID | App Credentials → Development |
| Client Secret | App Credentials → Development (Click “View”) |
| Account ID | App Credentials → Development |
Note: Bot JID only appears AFTER enabling Chatbot in Features tab
To find Bot JID:
Format: v1abc123xyz@xmpp.zoom.us
Navigate to Features → Team Chat Subscriptions → Secret Token
This token is used to verify webhook signatures.
| Credential | Team Chat API | Chatbot API | Location |
|---|---|---|---|
| Client ID | ✅ Required | ✅ Required | App Credentials → Development |
| Client Secret | ✅ Required | ✅ Required | App Credentials → Development |
| Account ID | ❌ | ✅ Required | App Credentials → Development |
| Bot JID | ❌ | ✅ Required | Features → Chatbot → Bot Credentials |
| Secret Token | ❌ | ✅ Required | Features → Team Chat Subscriptions |
Navigate to Scopes page in your app.
Manually add these scopes:
chat_message:write - Send messageschat_message:read - Read messageschat_channel:read - List channelschat_channel:write - Create/manage channelsWhen you enable Team Chat Subscription, these scopes are automatically added:
imchat:bot - Basic chatbot functionalityteam_chat:read:list_user_channels:admin - List channelsteam_chat:read:list_members:admin - List members# .env file
ZOOM_CLIENT_ID=your_client_id_here
ZOOM_CLIENT_SECRET=your_client_secret_here
ZOOM_REDIRECT_URI=http://YOUR_DEV_HOST:4000/auth/callback
PORT=4000# .env file
ZOOM_CLIENT_ID=your_client_id_here
ZOOM_CLIENT_SECRET=your_client_secret_here
ZOOM_BOT_JID=v1abc123xyz@xmpp.zoom.us
ZOOM_VERIFICATION_TOKEN=your_webhook_secret_token
ZOOM_ACCOUNT_ID=your_account_id
PORT=4000Create this file in your project root:
# Zoom App Credentials (Required for both APIs)
ZOOM_CLIENT_ID=
ZOOM_CLIENT_SECRET=
ZOOM_REDIRECT_URI=http://YOUR_DEV_HOST:4000/auth/callback
# Chatbot Credentials (Required for Chatbot API only)
ZOOM_BOT_JID=
ZOOM_VERIFICATION_TOKEN=
ZOOM_ACCOUNT_ID=
# Server Configuration
PORT=4000On the Local Test page:
Click Preview Your App Listing Page to see how your app appears in the marketplace.
To share your app with other users on your account:
Note: Beta apps can only be installed by members of the developer’s Zoom account (security restriction).
| Issue | Cause | Solution |
|---|---|---|
| Bot JID not visible | Chatbot feature not enabled | Go to Features tab, toggle Chatbot ON |
| Can’t find Secret Token | Team Chat Subscription not enabled | Enable Team Chat Subscription in Features → Surface |
| OAuth redirect error | Redirect URL not in allow list | Add full redirect URL to OAuth allow lists |
| Scopes not appearing | Wrong app type | Verify you created General App (OAuth), not S2S |
| App can’t be added | Missing required configuration | Complete all steps in Basic Info and Features |
Before proceeding to development, verify: