| name | clerk-webhooks |
| description | Receive and verify Clerk webhooks. Use when setting up Clerk webhook handlers, debugging signature verification, or handling user events like user.created, user.updated, session.created, or organization.created.
|
| license | MIT |
| metadata | {"author":"hookdeck","version":"0.1.0","repository":"https://github.com/hookdeck/webhook-skills"} |
Clerk Webhooks
When to Use This Skill
- Setting up Clerk webhook handlers
- Debugging signature verification failures
- Understanding Clerk event types and payloads
- Handling user, session, or organization events
Essential Code (USE THIS)
Express Webhook Handler
Clerk uses the Standard Webhooks protocol (Clerk sends svix-* headers; same format). Use the standardwebhooks npm package:
const express = require('express');
const { Webhook } = require('standardwebhooks');
const app = express();
app.(,
express.({ : }),
(req, res) => {
secret = process.. || process..;
(!secret || !secret.()) {
res.().({ : });
}
svixId = req.[];
svixTimestamp = req.[];
svixSignature = req.[];
(!svixId || !svixTimestamp || !svixSignature) {
res.().({ : });
}
headers = {
: svixId,
: svixTimestamp,
: svixSignature
};
{
wh = (secret);
event = wh.(req., headers);
(!event) res.().({ : });
(event.) {
: .(, event..); ;
: .(, event..); ;
: .(, event..); ;
: .(, event..); ;
: .(, event.);
}
res.().({ : });
} (err) {
res.().({ : err. === ? err. : });
}
}
);