<< All versions
Skill v1.0.0
currentTrusted Publisher100/100anthropics/knowledge-work-plugins/webhooks
── Details ─────────────────────────────────────────
PublishedApril 26, 2026 at 05:53 AM
Content Hashsha256:65cfd0b536fce266...
Git SHA
── Files ───────────────────────────────────────────
Files (1 file, 5.0 KB)
SKILL.md5.0 KBactive
SKILL.md · 118 lines · 5.0 KB
name: setup-zoom-webhooks description: Reference skill for Zoom webhooks. Use after routing to an event-driven workflow when implementing subscriptions, signature verification, delivery handling, retries, or event-type selection. triggers:
- "zoom webhook"
- "webhook signature"
- "x-zm-signature"
- "event subscription"
- "recording completed webhook"
/setup-zoom-webhooks
Background reference for Zoom event delivery over HTTP. Prefer workflow skills first, then use this file for verification, subscription, and delivery details.
Prerequisites
- Zoom app with Event Subscriptions enabled
- HTTPS endpoint to receive webhooks
- Webhook secret token for verification
Need help with authentication? See the [zoom-oauth](../oauth/SKILL.md) skill for OAuth setup.
Quick Start
javascript
// Express.js webhook handlerconst 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 signatureconst 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 eventconst { 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](references/events.md) - Complete event types reference
- [references/verification.md](references/verification.md) - Webhook URL validation
- [references/subscriptions.md](references/subscriptions.md) - Event subscriptions API
Troubleshooting
- [RUNBOOK.md](RUNBOOK.md) - 5-minute preflight checks before deep debugging
- [troubleshooting/common-issues.md](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.