Événements
Tous les types d'événements webhook disponibles et leurs structures de charge utile.
Enveloppe d'événement
Chaque événement utilise la même structure de niveau supérieur :
{
"event": "user.created",
"data": { ... },
"timestamp": "2026-01-15T10:30:00.000Z"
}Événements utilisateur
user.createdDéclenché lorsqu'un nouvel utilisateur s'inscrit pour la première fois ou est créé via l'API.
{
"event": "user.created",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"emailVerified": false,
"isBanned": false,
"avatarUrl": null,
"publicMetadata": null,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-15T10:30:00.000Z"
}
},
"timestamp": "2026-01-15T10:30:00.000Z"
}user.updatedDéclenché lorsque le profil ou les métadonnées d'un utilisateur sont mis à jour.
{
"event": "user.updated",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe (Updated)",
"emailVerified": true,
"isBanned": false,
"avatarUrl": "https:0
10: { 11: "pro" },
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-16T09:00:00.000Z"
}
},
"timestamp": "2026-01-16T09:00:00.000Z"
}user.deletedDéclenché lorsqu'un compte utilisateur est définitivement supprimé. Le champ data contient un instantané de l'utilisateur avant la suppression.
{
"event": "user.deleted",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"createdAt": "2026-01-15T10:30:00.000Z"
}
},
"timestamp": "2026-01-20T11:00:00.000Z"
}user.signinDéclenché lorsqu'un utilisateur se connecte avec succès via e-mail/mot de passe ou OAuth.
{
"event": "user.signin",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"emailVerified": true,
"isBanned": false
}
},
"timestamp": "2026-01-15T10:30:00.000Z"
}user.signoutDéclenché lorsqu'un utilisateur se déconnecte explicitement.
{
"event": "user.signout",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"emailVerified": true,
"isBanned": false
}
},
"timestamp": "2026-01-15T12:00:00.000Z"
}user.bannedDéclenché lorsqu'un utilisateur est banni par un administrateur. Toutes les sessions actives sont révoquées.
{
"event": "user.banned",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"isBanned": true
}
},
"timestamp": "2026-01-15T10:30:00.000Z"
}user.unbannedDéclenché lorsque le bannissement d'un utilisateur est levé.
{
"event": "user.unbanned",
"data": {
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe",
"isBanned": false
}
},
"timestamp": "2026-01-16T10:00:00.000Z"
}Événements de session
session.createdDéclenché lorsqu'une nouvelle session est créée — à la connexion ou au rafraîchissement du jeton.
{
"event": "session.created",
"data": {
"session": {
"id": "sess_abc123",
"userId": "usr_abc123",
"ipAddress": "203.0.113.1",
"userAgent": "Mozilla/5.0...",
"createdAt": "2026-01-15T10:30:00.000Z"
},
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe"
}
},
"timestamp": "2026-01-15T10:30:00.000Z"
}session.revokedDéclenché lorsqu'une session est révoquée — à la déconnexion ou par révocation forcée par l'administrateur.
{
"event": "session.revoked",
"data": {
"session": {
"id": "sess_abc123",
"userId": "usr_abc123",
"ipAddress": "203.0.113.1",
"userAgent": "Mozilla/5.0...",
"createdAt": "2026-01-15T10:30:00.000Z"
},
"user": {
"id": "usr_abc123",
"email": "user@example.com",
"displayName": "John Doe"
}
},
"timestamp": "2026-01-15T11:00:00.000Z"
}Correspondance action → événement
Le tableau ci-dessous montre quelles actions SDK et opérations du tableau de bord déclenchent quels événements.
| Action | Événements déclenchés |
|---|---|
| SDK: signup() | user.created + session.created |
| SDK: signin() | user.signin + session.created |
| SDK: signout() | user.signout + session.revoked |
| SDK : connexion OAuth (nouvel utilisateur) | user.created + session.created |
| SDK : connexion OAuth (utilisateur existant) | user.signin + session.created |
| SDK: refreshTokens() | session.revoked + session.created |
| Tableau de bord : bannir un utilisateur | user.banned |
| Tableau de bord : débannir un utilisateur | user.unbanned |
| Tableau de bord : supprimer un utilisateur | user.deleted |
| Tableau de bord : mettre à jour les métadonnées | user.updated |
| API backend : créer un utilisateur | user.created |
| API backend : mettre à jour un utilisateur | user.updated |
| API backend : supprimer un utilisateur | user.deleted |
| API backend : bannir un utilisateur | user.banned |
| API backend : débannir un utilisateur | user.unbanned |
| SDK: revokeSession() | session.revoked |
Exemple de gestionnaire
Un gestionnaire d'événements minimal couvrant les cas de synchronisation utilisateur les plus courants :
const { event, data } = JSON.parse(req.body.toString());
switch (event) {
case "user.created":
await db.users.create({ authonId: data.user.id, email: data.user.email });
break;
case "user.updated":
await db.users.update({ authonId: data.user.id }, { name: data.user.displayName });
break;
case "user.deleted":
await db.users.delete({ authonId: data.user.id });
break;
case "user.banned":
await db.users.update({ authonId: data.user.id }, { suspended: true });
break;
case "user.unbanned":
await db.users.update({ authonId: data.user.id }, { suspended: false });
break;
case "session.created":
console.log(`${data.user.email} signed in from ${data.session.ipAddress}`);
break;
}