From zoom-skills
Handles Zoom webhook integration: verification, event types, and subscription management. Use for real-time notifications about meetings, users, recordings.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zoom-skills:webhooksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Receive real-time event notifications from Zoom services.
Receive real-time event notifications from Zoom services.
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.
// 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();
});
| 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 |
| Type | Repository | Stars |
|---|---|---|
| Node.js | webhook-sample | 34 |
| PostgreSQL | webhook-to-postgres | 5 |
| Go/Fiber | Go-Webhooks | - |
| Header Auth | zoom-webhook-verification-headers | - |
| 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 |
Full list: See general/references/community-repos.md
.env keys and where to find each value.npx claudepluginhub zoom/skills --plugin zoom-skillsCreates and manages persistent WebSocket connections with Zoom for real-time event notifications. Explains how to choose between WebSockets and webhooks.
Automates Zoom meeting creation, scheduling, webinar management, recording retrieval, and participant tracking via Rube MCP/Composio. Requires authenticated Zoom connection.
Automates Zoom meeting creation, scheduling, webinar management, recording retrieval, and participant tracking via Composio's Zoom toolkit. Requires Rube MCP connection.