Skip to content
cccskills
FreePublished on GitHub

zoom-webhooks

Zoom 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.

The English summary is being prepared. Showing the original description.

zoom/skills85 stars(GitHub 85 + cccskills 0)

Run score Not tested

See how to install

Files included (8)

  • SKILL.md5.6 KB
  • references/environment-variables.md642 B
  • references/events.md1.9 KB
  • references/signature-verification.md161 B
  • references/subscriptions.md7.2 KB
  • references/verification.md2.2 KB
  • RUNBOOK.md2.6 KB
  • troubleshooting/common-issues.md1.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Zoom Webhooks

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_credentials scopes. 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

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Zoom Contact Center skill pack for Contact Center apps, web embeds, and native mobile SDK integrations. Use for lifecycle patterns, engagement context/state handling, campaigns, callbacks, and version-drift troubleshooting.

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

Zoom Contact Center SDK for Android. Use for native Android chat/video/ZVA/scheduled callback integrations, campaign mode, service lifecycle, and rejoin handling.

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

Zoom Contact Center SDK for iOS. Use for native iOS chat/video/ZVA/scheduled callback integrations, app lifecycle bridging, rejoin flow, and callback handling.

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

Zoom Contact Center SDK for Web. Use for web chat/video/campaign embeds, engagement event handling, app-context integrations, and Smart Embed postMessage workflows.

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

Zoom AI Services Decisions for typed predicates, constrained classification, ordered scoring, probability-aware routing, and inline image comparison. Use when building or debugging Decisions requests, production x-api-key authentication, standard/pro model selection, Boolean choices, or score-label normalization.

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

Zoom Meeting SDK for Linux - C++ headless meeting bots with raw audio/video access, transcription, recording, and AI integration for server-side automation

The English summary is being prepared. Showing the original description.

zoom/skills85Updated Oct 20, 2026

See all skills by zoom

Report a problem with this skill