clerk/clerk-webhooks

Webhooks Clerk pour les événements en temps réel et la synchronisation des données. Vérifiez avec verifyWebhook depuis le package spécifique au framework. Gérez les événements d'utilisateurs, sessions, organisations, facturation et paiement. Créez des fonctionnalités événementielles comme la synchronisation de base de données, les notifications et les intégrations.

Qu'est-ce que clerk-webhooks ?

Ce skill permet d'utiliser les webhooks de Clerk pour recevoir des événements en temps réel et synchroniser les données entre Clerk et vos systèmes. Il s'appuie sur la fonction `verifyWebhook` fournie par le package Clerk spécifique à votre framework (comme `@clerk/nextjs` ou `@clerk/express`) pour valider l'authenticité des requêtes entrantes. Le skill couvre la gestion de nombreux types d'événements : création et mise à jour d'utilisateurs, modifications de sessions, changements dans les organisations, événements de facturation et de paiement. Grâce à cette approche événementielle, vous pouvez facilement créer des intégrations comme la synchronisation automatique d'une base de données utilisateur, l'envoi de notifications par email ou SMS, ou l'alimentation de systèmes CRM externes. Le skill fonctionne avec tous les frameworks supportés par Clerk (Next.js, Express, React, etc.) et nécessite que vous configuriez un endpoint webhook dans le tableau de bord Clerk.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clerk/skills/tree/main/skills/clerk-webhooks

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait clerk-webhooks ?

Webhooks Clerk pour les événements en temps réel et la synchronisation des données. Vérifiez avec verifyWebhook depuis le package spécifique au framework. Gérez les événements d'utilisateurs, sessions, organisations, facturation et paiement. Créez des fonctionnalités événementielles comme la synchronisation de base de données, les notifications et les intégrations.

Utilisation

  1. Configurez un endpoint webhook dans votre application.
  2. Utilisez verifyWebhook pour valider les requêtes entrantes.
  3. Traitez les différents types d'événements (utilisateurs, sessions, organisations, etc.).
  4. Implémentez des actions comme la synchronisation de base de données ou l'envoi de notifications.

Exemple (Next.js)

import { Webhook } from 'svix'
import { headers } from 'next/headers'
import { WebhookEvent } from '@clerk/nextjs/server'

export async function POST(req: Request) {
  const WEBHOOK_SECRET = process.env.CLERK_WEBHOOK_SECRET
  
  if (!WEBHOOK_SECRET) {
    throw new Error('Please add CLERK_WEBHOOK_SECRET from Clerk Dashboard to .env or .env.local')
  }

  const headerPayload = headers()
  const svix_id = headerPayload.get('svix-id')
  const svix_timestamp = headerPayload.get('svix-timestamp')
  const svix_signature = headerPayload.get('svix-signature')

  if (!svix_id || !svix_timestamp || !svix_signature) {
    return new Response('Error occured -- no svix headers', {
      status: 400
    })
  }

  const payload = await req.json()
  const body = JSON.stringify(payload)

  const wh = new Webhook(WEBHOOK_SECRET)
  let evt: WebhookEvent

  try {
    evt = wh.verify(body, {
      'svix-id': svix_id,
      'svix-timestamp': svix_timestamp,
      'svix-signature': svix_signature,
    }) as WebhookEvent
  } catch (err) {
    console.error('Error verifying webhook:', err)
    return new Response('Error occured', {
      status: 400
    })
  }

  const { id } = evt.data
  const eventType = evt.type
  
  switch (eventType) {
    case 'user.created':
      console.log('User created:', id)
      // Synchroniser avec votre base de données
      break
    case 'user.updated':
      console.log('User updated:', id)
      break
    case 'user.deleted':
      console.log('User deleted:', id)
      break
    case 'session.created':
      console.log('Session created:', id)
      break
    case 'session.ended':
      console.log('Session ended:', id)
      break
    case 'organization.created':
      console.log('Organization created:', id)
      break
    case 'organization.updated':
      console.log('Organization updated:', id)
      break
    case 'organization.deleted':
      console.log('Organization deleted:', id)
      break
    case 'organizationMembership.created':
      console.log('Membership created:', id)
      break
    case 'organizationMembership.deleted':
      console.log('Membership deleted:', id)
      break
    case '__clerk_webhook_type__':
      console.log('Webhook type:', eventType)
      break
    default:
      console.log('Unhandled event type:', eventType)
  }

  return new Response('Webhook received', { status: 200 })
}

Événements supportés

Type d'événementDescription
user.createdUn nouvel utilisateur a été créé
user.updatedLes données d'un utilisateur ont été mises à jour
user.deletedUn utilisateur a été supprimé
session.createdUne nouvelle session a été créée
session.endedUne session s'est terminée
organization.createdUne nouvelle organisation a été créée
organization.updatedLes données d'une organisation ont été mises à jour
organization.deletedUne organisation a été supprimée
organizationMembership.createdUn membre a été ajouté à une organisation
organizationMembership.deletedUn membre a été retiré d'une organisation
organizationInvitation.createdUne invitation d'organisation a été envoyée
organizationInvitation.acceptedUne invitation d'organisation a été acceptée
billing.createdUn événement de facturation a été créé
billing.updatedUn événement de facturation a été mis à jour
payment.createdUn paiement a été effectué
payment.updatedUn paiement a été mis à jour

Configuration

  1. Dans le tableau de bord Clerk, allez dans Webhooks.
  2. Ajoutez un endpoint avec l'URL de votre application (ex: https://votre-domaine.com/api/webhooks).
  3. Sélectionnez les événements que vous souhaitez écouter.
  4. Copiez le secret de webhook (CLERK_WEBHOOK_SECRET) et ajoutez-le à votre fichier .env.local.

Ressources

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

clerk/clerk

Clerk authentication router. Use when user asks about adding authentication, setting up Clerk, custom sign-in flows, Swift or native iOS auth, native Android auth, Next.js patterns, React patterns, Vue patterns, Nuxt patterns, Astro patterns, TanStack Start patterns, Expo patterns, React Router patterns, Chrome Extension patterns, organizations, billing, subscriptions, payments, pricing, plans, seat-based pricing, feature entitlements, syncing users, or testing. Automatically routes to the specific skill based on their task.

clerk/clerk-android

Implement Clerk authentication for native Android apps using Kotlin and Jetpack Compose with clerk-android source-guided patterns. Use for prebuilt AuthView/UserButton or custom API-driven auth flows. Do not use for Expo or React Native projects.

clerk/clerk-astro-patterns

Astro patterns with Clerk — middleware, SSR pages, island components, API routes, static vs SSR rendering. Triggers on: astro clerk, clerk astro middleware, astro protected page, clerk island component, astro API route auth, clerk astro SSR.

clerk/clerk-backend-api

Clerk Backend REST API explorer and executor. Browse tags, inspect endpoint schemas, and execute authenticated requests. Use when listing users, managing organizations, or calling any Clerk API endpoint.

clerk/clerk-billing

Clerk Billing for subscription management - render Clerk's PricingTable and in-app checkout drawer, configure subscription plans, seat-limit plans for B2B, feature entitlements with has(), and billing webhooks. Use for SaaS monetization, plan gating, checkout flows, trials, invoicing, and subscription lifecycle management.

clerk/clerk-chrome-extension-patterns

Chrome Extension auth with @clerk/chrome-extension -- popup/sidepanel setup, syncHost for OAuth/SAML via web app, createClerkClient for service workers and headless extensions, stable CRX ID. Triggers on: Chrome extension auth, Plasmo clerk, popup sign-in, syncHost, background service worker token, createClerkClient, headless extension.

clerk/clerk-custom-ui

Custom authentication flows and component appearance - hooks (useSignIn, useSignUp), themes, colors, fonts, CSS. Use for custom sign-in/sign-up flows, appearance styling, visual customization, branding.

clerk/clerk-expo

Implement Clerk authentication for Expo and React Native apps using @clerk/expo source-guided patterns. Use for prebuilt AuthView/UserButton or custom hook-driven auth flows. Do not use for native iOS/Swift, native Android/Kotlin, or web framework projects.

clerk/clerk-expo-patterns

Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context. Triggers on: expo clerk, clerk react native, SecureStore token cache, expo router auth, OAuth deep link clerk, mobile auth clerk.

clerk/clerk-nextjs-patterns

Advanced Next.js patterns - middleware, Server Actions, caching with Clerk.

clerk/clerk-nuxt-patterns

Nuxt 3 auth patterns with @clerk/nuxt - middleware, composables, server API routes, SSR. Triggers on: Nuxt auth, useAuth composable, clerkMiddleware Nuxt, server API Clerk, Nuxt route protection.

clerk/clerk-orgs

Clerk Organizations for B2B SaaS - create multi-tenant apps with org switching, role-based access, verified domains, and enterprise SSO. Use for team workspaces, RBAC, org-based routing, member management.

clerk/clerk-react-patterns

React SPA auth patterns with @clerk/react for Vite/CRA - ClerkProvider setup, useAuth/useUser/useClerk hooks, React Router protected routes, custom sign-in flows. Triggers on: Vite Clerk setup, React Router auth, useAuth hook, protected route, custom sign-in form React.

clerk/clerk-react-router-patterns

React Router v7 patterns with Clerk — rootAuthLoader, getAuth in loaders, clerkMiddleware, protected routes, SSR user data, org switching. Triggers on: react-router auth, rootAuthLoader, getAuth loader, react-router protected route, loader authentication, SSR auth react-router.

clerk/clerk-setup

Add Clerk authentication to any project by following the official quickstart guides.

clerk/clerk-swift

Implement Clerk authentication for native Swift and iOS apps using ClerkKit and ClerkKitUI source-guided patterns. Use for prebuilt AuthView or custom native flows. Do not use for Expo or React Native projects.

clerk/clerk-tanstack-patterns

TanStack React Start auth patterns with @clerk/tanstack-react-start - createServerFn, beforeLoad guards, loaders, Vinxi server. Triggers on: TanStack auth, createServerFn clerk, beforeLoad protection, TanStack Start middleware.

clerk/clerk-testing

E2E testing for Clerk apps. Use with Playwright or Cypress for auth flow tests.

clerk/clerk-vue-patterns

Vue 3 patterns with Clerk — composables (useAuth, useUser, useClerk, useOrganization), Vue Router guards, Pinia auth store integration. Triggers on: vue clerk, useAuth vue, clerk composables, vue router clerk guard, pinia auth clerk. For Nuxt, use clerk-nuxt-patterns instead.

Skills associés