skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
anthropics/knowledge-work-plugins1.3k installs

setup-zoom-webhooks

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.

How do I install this agent skill?

npx skills add https://github.com/anthropics/knowledge-work-plugins --skill setup-zoom-webhooks
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill provides a comprehensive reference for implementing Zoom webhooks, including signature verification and event handling. It follows security best practices by recommending secure secret management and authentication verification.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • ZeroLeakspass

    1 finding · Score: 86/100

What does this agent skill do?

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

EventDescription
meeting.startedMeeting has started
meeting.endedMeeting has ended
meeting.participant_joinedParticipant joined meeting
recording.completedCloud recording ready
user.createdNew user added

Detailed References

Troubleshooting

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)

LanguageRepository
Node.jsZoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-NodeJS
C#Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-ASP.NET-Core-C-
JavaZoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Java-Spring-Boot
PythonZoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Python
PHPZoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-PHP

Full list: See general/references/community-repos.md

Resources

Environment Variables

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/anthropics/knowledge-work-plugins/setup-zoom-webhooks">View setup-zoom-webhooks on skillZs</a>