Zoom Webhooks
SkillCommunicationZoom webhooks for real-time event notifications. Covers webhook verification, event types, and subscription management. Use when you need to receive notifications about meetings, users, recordings, or other Zoom events.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Zoom Webhooks skill
What this skill tells your AI
The instructions your AI receives, as published by zoom/skills in skills/webhooks/SKILL.md and read by ahel’s review.
Receive real-time event notifications from Zoom services.
Prerequisites
- Zoom app with Event Subscriptions enabled
- HTTPS endpoint to receive webhooks
- Webhook secret token for verification
Need to create/configure the app first? Use Marketplace app management for General App manifest validation, event subscription API setup, webhook vs WebSocket subscription behavior, and app-owned
client_credentialsscopes. Start from the user-managed General App, admin-managed General App, or S2S webhook template.
Need help with authentication? See the zoom-oauth skill for OAuth setup.
Quick Start
// Express.js webhook handler
const crypto = require('crypto');
// Capture raw body for signature verification (avoid re-serializing JSON).
app.use(require('express').json({
verify: (req, _res, buf) => { req.rawBody = buf; }
}));
app.post('/webhook', (req, res) => {
// Verify webhook signature
const signature = req.headers['x-zm-signature'];
const timestamp = req.headers['x-zm-request-timestamp'];
const body = req.rawBody ? req.rawBody.toString('utf8') : JSON.stringify(req.body);
const payload = `v0:${timestamp}:${body}`;
const hash = crypto.createHmac('sha256', WEBHOOK_SECRET)
.update(payload).digest('hex');
if (signature !== `v0=${hash}`) {
return res.status(401).send('Invalid signature');
}
// Handle event
const { event, payload } = req.body;
console.log(`Received: ${event}`);
res.status(200).send();
});
Common Events
| Event | Description |
|---|---|
meeting.started | Meeting has started |
meeting.ended | Meeting has ended |
meeting.participant_joined | Participant joined meeting |
recording.completed | Cloud recording ready |
user.created | New user added |
Detailed References
- references/events.md - Complete event types reference
- references/verification.md - Webhook URL validation
- references/subscriptions.md - Event subscriptions API
Troubleshooting
- RUNBOOK.md - 5-minute preflight checks before deep debugging
- troubleshooting/common-issues.md - Signature verification, retries, URL validation
Sample Repositories
Official (by Zoom)
| Type | Repository | Stars |
|---|---|---|
| Node.js | webhook-sample | 34 |
| PostgreSQL | webhook-to-postgres | 5 |
| Go/Fiber | Go-Webhooks | - |
| Header Auth | zoom-webhook-verification-headers | - |
Community
| Language | Repository | Description |
|---|---|---|
| Laravel | binary-cats/laravel-webhooks | Laravel webhook handler |
| AWS Lambda | splunk/zoom-webhook-to-hec | Serverless to Splunk HEC |
| Node.js | Will4950/zoom-webhook-listener | Webhook forwarder |
| Express+Redis | ojusave/eventSubscriptionPlayground | Socket.io + Redis |
Multi-Language Samples (by tanchunsiong)
Full list: See general/references/community-repos.md
Resources
- Webhook docs: https://developers.zoom.us/docs/api/webhooks/
- Event reference: https://developers.zoom.us/docs/api/rest/reference/zoom-api/events/
- Developer forum: https://devforum.zoom.us/
Environment Variables
- See references/environment-variables.md for standardized
.envkeys and where to find each value.
Signals
- GitHub stars
- 77
- Forks
- 16
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
zoom-webhooks- Source
- github.com/zoom/skills