Welcome to the Zoom Chatbot Tutorial Series, a hands-on guide to building your own Zoom Team Chatbot using Node.js and Express.
This series will teach you how to create, configure, and extend a chatbot that interacts with Zoom Team Chat — from sending messages and handling events to building interactive cards and threaded replies.
By the end of this series, you’ll have a working chatbot that can:
- Post and reply to messages within Zoom Team Chat
- Handle events from users and channels
- Respond to slash commands
- Send interactive messages, markdown, and emojis
- Search messages using the Zoom Team Chat API
- Integrate with external APIs or databases
Before starting, make sure you have:
-
A General OAuth App created in the Zoom App Marketplace
-
Node.js (v18+ recommended)
-
ngrok (or another tunneling service)
-
Your Zoom Chatbot credentials:
- Client ID
- Client Secret
- Bot JID
- Verification Token
-
Clone this repo
git clone https://github.com/zoom/chatbot-nodejs-quickstart.git cd zoomworkplace-chatbot -
Install dependencies
npm install
-
Create a
.envfileZOOM_CLIENT_ID=your_client_id ZOOM_CLIENT_SECRET=your_client_secret ZOOM_BOT_JID=your_bot_jid ZOOM_VERIFICATION_TOKEN=your_verification_token ANTHROPIC_API_KEY=your_anthropic_api_key_here FRONTEND_ORIGIN=http://localhost:3000 ACCOUNT_ID=your_zoom_account_id_here
⚠️ Do not store credentials in plain text on production environments
-
Start the local server
npm start
-
Expose your server using ngrok
ngrok http 4000
Copy the ngrok HTTPS URL and set it as your Chatbot Endpoint URL in the Zoom App Marketplace.
| Episode | Title | Description |
|---|---|---|
| 1 | Setup & Send Messages | Set up a basic Express server, connect it to Zoom, and send your first message. |
| 2 | Handle Events | Use webhook events to respond dynamically to chat messages. |
| 3 | Slash Commands | Implement custom slash commands to trigger bot actions. |
| 4 | Markdown & Emojis | Format messages beautifully using markdown and emojis. |
| 5 | Reactions & Interactive Messages | Capture and respond to reactions and interactive message components. |
| 6 | Threaded Replies | Learn how to reply to specific messages within a thread using the reply_to parameter. |
| 7 | Search Messages via API | Retrieve and filter Zoom Team Chat messages using the API. |
| 8 | Scheduling Messages | Automate and schedule future chatbot messages. |
| 9 | Build a Zoom Workplace App | Integrate your chatbot into a Zoom Workplace App for seamless collaboration. |
This application makes use of your Zoom App Client ID and Client Secret as well as a custom secret for signing session cookies. During development, the application will read from the .env file. ;
In order to align with security best practices, this application does not read from the .env file in production mode.
This means you'll want to set environment variables on the hosting platform that you' re using instead of within the .env file. This might include using a secret manager or a CI/CD pipeline.
⚠️ Never commit your .env file to version control: The file likely contains Zoom App Credentials and Session Secrets
If you're looking for help, try Developer Support or our Developer Forum. Priority support is also available with Premier Developer Support plans.
Make sure to review our documentation as a reference when building your Zoom Apps.