anthropics/knowledge-work-plugins

setup-zoom-webhooks

Reference skill for Zoom webhooks.

View source
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

/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 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

EventDescription
meeting.startedMeeting has started
meeting.endedMeeting has ended
meeting.participant_joinedParticipant joined meeting
recording.completedCloud recording ready
user.createdNew 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)

TypeRepositoryStars
Node.jswebhook-sample34
PostgreSQLwebhook-to-postgres5
Go/FiberGo-Webhooks-
Header Authzoom-webhook-verification-headers-

Community

LanguageRepositoryDescription
Laravelbinary-cats/laravel-webhooksLaravel webhook handler
AWS Lambdasplunk/zoom-webhook-to-hecServerless to Splunk HEC
Node.jsWill4950/zoom-webhook-listenerWebhook forwarder
Express+Redisojusave/eventSubscriptionPlaygroundSocket.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

from this repository

More skills

All skills