← ClaudeAtlas

clerk-webhookslisted

Clerk webhooks for real-time events and data syncing. Verify with verifyWebhook from the framework-specific package. Handle user, session, organization, billing, and payment events. Build event-driven features like database sync, notifications, and integrations.
sanketbodke/skew-ai · ★ 0 · Web & Frontend · score 55
Install: claude install-skill sanketbodke/skew-ai
# Webhooks Output complete, working webhook handlers with `verifyWebhook(req)` verification in every handler. ## When to Use Webhooks Webhooks are **asynchronous and eventually consistent**. Delivery is fast but not guaranteed to be immediate, and may occasionally fail (Svix retries on a fixed schedule). Use them for: - Database sync (a separate users / orgs table that follows Clerk) - Notifications (welcome emails, Slack pings, internal alerts) - Integrations triggered by lifecycle events Do NOT rely on webhook delivery as part of a synchronous flow such as onboarding ("user signs up, then we read X from our DB"). For data the user just created, read it from the [Clerk session token](https://clerk.com/docs/guides/sessions/session-tokens) or call the Backend API directly. Webhooks fill the gap when you need data about *other* users or events the session token doesn't carry. ## Verify Every Webhook Use `verifyWebhook(req)` from the framework-specific package (`@clerk/nextjs/webhooks`, `@clerk/express/webhooks`, etc.). It reads `CLERK_WEBHOOK_SIGNING_SECRET` automatically and throws on bad signatures. Skipping verification, even for notification-only handlers, exposes the endpoint to spoofed events. ## Make the Webhook Route Public Webhook routes must be excluded from Clerk middleware protection. Without this, Clerk returns 401. ```typescript // proxy.ts (Next.js <=15: middleware.ts) import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server' const isP