partner-built/zoom-plugin/skills/webhooks/SKILL.md
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.
npx skillsauth add anthropics/knowledge-work-plugins setup-zoom-webhooksInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Background reference for Zoom event delivery over HTTP. Prefer workflow skills first, then use this file for verification, subscription, and delivery details.
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 |
| Language | Repository | |----------|------------| | Node.js | Zoom-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- | | Java | Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Java-Spring-Boot | | Python | Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Python | | PHP | Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-PHP |
Full list: See general/references/community-repos.md
.env keys and where to find each value.testing
Reads a forwarded customer email or ticket, pulls order/refund status from PayPal and account history from HubSpot, drafts a tone-matched reply in the owner's writing voice, and can issue a PayPal refund with explicit owner approval. Use when the user says "draft a response," "answer this customer," "where's my order," or "I want a refund."
development
Prepares tax-season materials for small business owners — framed as deliverables for their accountant, not tax advice. Two modes: (1) quarterly estimated tax calculation — pulls YTD net income from QuickBooks and calculates the federal income tax + self-employment tax liability and quarterly payment due; (2) year-end 1099 prep — scans QuickBooks, PayPal, and Stripe for contractors paid over $600, builds a 1099-NEC candidate list with missing W-9 flags, and produces a plain-English summary a CPA can work from directly. Trigger this skill whenever the user mentions: quarterly taxes, estimated tax payment, how much to set aside for taxes, 1099s, 1099-NEC, year-end tax prep, contractor payments, W-9s, or any phrase suggesting they are preparing for a tax deadline or handing materials to an accountant. Also trigger proactively when a user asks about net profit or YTD income in a context that suggests they are worried about their tax bill.
tools
Prepares tax-season materials — quarterly estimated tax calculation or year-end 1099 prep — and produces an accountant handoff packet. Accepts optional mode and year arguments.
tools
The front door to the Small Business plugin. Listens to what the owner needs right now — vague or specific — and routes them to the best skill or slash command for the moment. Also serves as a guide: explains what's available, suggests what to try next, and adapts recommendations based on stored business context. Trigger whenever the owner asks "what can you do," "help me with my business," "what should I focus on," "I don't know where to start," or any open-ended business request that doesn't clearly match a single skill.