2026-10-23
· Dylan YuWebhooks de base de données expliqués : déclencher des actions quand vos données changent
Un webhook de base de données envoie une requête HTTP vers votre propre endpoint quand une ligne est créée, modifiée ou supprimée. Voici à quoi ils servent, leur différence avec les boutons d'action, et les schémas pratiques — notifications, synchronisations, approbations — qui valent le coup d'être branchés.
Voici un problème que presque toutes les apps finissent par rencontrer : quelque chose se passe dans votre base de données, et le reste de votre système doit le savoir.
Un utilisateur s'inscrit — Stripe doit être notifié, ou un e-mail de bienvenue doit partir. Le statut d'une commande passe à payée — le service de fulfillment doit la récupérer. Un ticket support est marqué résolu — le tableau de bord de quelqu'un doit se mettre à jour. La méthode classique consiste à écrire du code dans l'app : après avoir enregistré la ligne, appelez le service d'e-mail, appelez l'API de fulfillment, mettez à jour le cache. Ça marche, mais avec un mode de défaillance que vous avez probablement rencontré : l'app est la seule chose capable de déclencher ces réactions. Chaque nouveau déclencheur signifie modifier le code applicatif. Chaque système qui doit être informé d'un changement doit être appelé depuis le même chemin de code. Et dès qu'un enregistrement change en dehors de l'app — un agent support l'édite dans un outil d'administration, un script importe un lot de lignes, quelqu'un corrige des données directement dans la base — rien ne se déclenche du tout.
Les webhooks de base de données existent pour résoudre exactement ça : au lieu que ce soit l'application qui décide quand informer le monde, c'est l'événement de base de données lui-même. Un webhook est une requête HTTP que votre base (ou l'outil posé dessus) envoie à un endpoint que vous contrôlez, à chaque création, modification ou suppression de ligne. Votre API reçoit l'événement et fait ce qu'il faut — envoie l'e-mail, appelle le service, met à jour le cache — et ça fonctionne quelle que soit l'origine du changement.
Cet article est un regard pratique sur le fonctionnement des webhooks de base de données, ce pour quoi ils sont vraiment bons, et les schémas qui valent la peine d'être branchés.
Ce qu'est réellement un webhook de base de données
Un webhook est l'idée d'intégration la plus simple : « quand X se produit, appelle cette URL ». Dans le monde des bases de données, X est un changement de données — une ligne insérée, modifiée ou supprimée — et l'URL est un endpoint sur votre propre serveur, que vous écrivez.
Le flux ressemble à ceci :
Ligne créée/modifiée/supprimée dans votre base
↓
Le webhook se déclenche : POST https://api.your-app.com/webhooks/order-updated
↓
Votre endpoint reçoit le payload (quelle ligne, ce qui a changé)
↓
Votre code fait le suivi : e-mail, sync, notification, cache
Le payload compte. Un bon webhook ne dit pas seulement « quelque chose a changé » — il vous dit quoi : la table, l'ID de l'enregistrement, les champs modifiés, parfois la ligne complète. C'est ce qui permet à votre endpoint d'agir sur l'événement sans retourner à la base pour comprendre ce qui s'est passé.
Il existe deux variantes de « appelle cette URL quand les données changent » :
- Webhooks au niveau base : la base elle-même (ou un trigger/un sidecar dessus) envoie la requête. Postgres ne le fait pas nativement, donc vous utiliseriez une fonction trigger, un outil comme pgwebhook, ou une couche d'administration qui surveille les changements.
- Webhooks au niveau couche d'admin (le genre que je construis dans Basevolt) : le panneau ou l'outil que vous utilisez pour travailler la base envoie la requête à chaque insertion, modification ou suppression — y compris celles faites dans l'UI, celles faites par un agent IA via MCP, et celles importées par lot. Vous définissez « quand une ligne de
ordersest modifiée et questatusdevientpaid, POST vers cet endpoint ».
La seconde approche est souvent la plus pratique, car elle attrape tous les chemins qui touchent aux données — pas seulement ceux que le code applicatif appelle par hasard.
Webhooks vs boutons d'action : deux moitiés d'une même idée
Si vous avez regardé les outils de base de données récemment, vous verrez « webhooks » et « boutons d'action » mentionnés ensemble, et il vaut la peine d'être précis sur la différence, car ils résolvent des problèmes complémentaires.
Un webhook est automatique : il se déclenche quand les données changent, sans humain. Le statut de la commande devient paid → endpoint déclenché → e-mail de confirmation envoyé. C'est pour les choses qui doivent arriver toutes seules.
Un bouton d'action est manuel : c'est un bouton placé sur une ligne — « Approuver le remboursement », « Marquer comme expédiée » — et quand un humain clique dessus, il envoie une requête HTTP à votre endpoint. Le bouton transporte les données de l'enregistrement, donc votre endpoint sait exactement quelle commande a été approuvée. C'est pour les choses qui exigent une décision humaine avant que quoi que ce soit ne se produise.
Les deux se combinent dans le schéma qui fait réellement tourner une entreprise : un humain clique « Approuver le remboursement » sur une commande, le bouton d'action appelle votre API de remboursement, votre API met à jour la ligne, le webhook sur cette mise à jour se déclenche, et le reste du système (e-mail, compta, stock) réagit. L'humain a pris la décision ; la machine a fait tout le reste.
Ce pour quoi les webhooks de base de données sont vraiment bons
Voici les schémas que j'ai vus fonctionner, dans l'ordre approximatif de ce qui vaut le plus la peine d'être branché.
1. Les notifications que vous auriez sinon oublié d'envoyer
Le classique. Nouvelle ligne dans leads → notifier le canal commercial. Ligne de orders passée à paid → envoyer l'e-mail de confirmation. Ticket passé à resolved → notifier le demandeur. Quand la notification vit sur un webhook plutôt que dans le chemin de sauvegarde de l'application, elle ne peut pas être sautée par un chemin de code qui a oublié de l'appeler — et elle se déclenche même quand le changement vient d'un script, d'une édition admin ou d'une correction directe en base.
2. Garder les autres systèmes synchronisés
Vous avez une base qui est la source de vérité, et un autre système qui a besoin d'une copie — un index de recherche, un entrepôt, un CRM, un cache. Plutôt que d'espérer que chaque chemin d'écriture mette à jour les deux, vous pointez un webhook vers un petit endpoint de sync qui rejoue le changement. C'est un bus d'événements du pauvre, et pour beaucoup d'apps, c'est tout le bus dont vous avez besoin.
3. Approbations et workflows avec humain dans la boucle
C'est celui qui est sous-estimé. Les webhooks seuls sont entièrement automatiques — ce qui est faux pour tout ce qui exige une décision. Le schéma utile est bouton d'action (l'humain décide) + webhook (tout le reste). Une commande demande un remboursement : un bouton apparaît sur la ligne, une personne clique « Approuver », votre API exécute le remboursement, et le webhook sur la mise à jour résultante notifie la compta et le client. La machine fait le travail ; l'humain garde le jugement.
4. Pistes d'audit et flux de changements
Un webhook qui journalise chaque changement dans une table changes (ou un log externe) vous donne un enregistrement fiable de ce qui s'est passé, quand, et par quel chemin — UI, script, agent ou SQL direct. C'est une piste d'audit bon marché, et ça sert aussi de flux que les pipelines de données peuvent consommer.
Ce pour quoi il ne faut pas utiliser les webhooks
Connaître les limites est tout aussi important.
N'utilisez pas un webhook pour du traitement lourd. Un handler de webhook doit être rapide — recevoir l'événement, lancer le travail, renvoyer 200. Si le suivi prend des secondes ou nécessite des retries avec backoff, confiez-le à une file d'attente plutôt que de le faire en ligne.
Ne vous reposez pas sur un webhook comme seule copie d'un changement d'état important. Les webhooks sont du best-effort sur HTTP. Le réseau tombe, votre endpoint est down, la requête expire. Un bon système traite le webhook comme un signal qu'un changement a eu lieu, et se réconcilie avec la source de vérité quand il doit en être sûr.
Ne faites pas vivre les règles métier dans le webhook. Le webhook dit à votre système ce qui a changé ; votre système décide quoi faire. Quand la règle change — « maintenant on e-mail aussi la finance » — vous modifiez l'endpoint, pas la config du webhook.
Le schéma de mise en place qui fonctionne
Voici le schéma de mise en place que je recommande, et c'est celui qui correspond à la façon dont je l'ai câblé dans Basevolt — définir l'événement, le pointer vers un endpoint, garder les livraisons inspectables.
Étape 1 — choisissez le déclencheur précisément. « À chaque mise à jour de orders » est trop large ; « quand orders.status passe à paid » est un déclencheur qui veut dire quelque chose. La plupart des outils permettent de filtrer sur la valeur modifiée, et c'est là que réside la valeur.
Étape 2 — écrivez un endpoint rapide. Il doit parser le payload, faire une petite chose, et renvoyer 200. Si le travail est lourd, mettez-le en file. Gardez l'endpoint idempotent — le même événement peut arriver deux fois, et le traiter deux fois doit être sans danger.
Étape 3 — rendez les livraisons visibles. Quand quelque chose n'arrive pas, vous devez le savoir. Un journal de livraison — chaque requête, son code de statut, sa durée — plus un bouton de relance pour les échecs, transforme les webhooks de « parfois ça marche » en quelque chose que vous pouvez réellement opérer.
Pourquoi c'est plus important quand l'IA écrit votre app
Voici la partie nouvelle de ces deux dernières années : si vous construisez avec Claude ou Cursor, les webhooks sont le pont naturel entre l'app écrite par votre agent et les opérations métier autour d'elle. L'agent peut configurer tout le câblage — le bouton d'action sur la ligne, le webhook sur le changement de statut, le contrat de l'endpoint — via MCP, de la même façon qu'il a configuré votre schéma. Vous n'écrivez pas la couche d'intégration à la main ; vous révisez ce que l'agent a mis en place, et le panneau est l'endroit où vous le voyez se déclencher en temps réel.
Le point plus profond : une app construite par un agent a tendance à avoir plus de sa logique dans la base (schéma, statuts, relations) et moins dans du code de colle fait main. Cela rend les schémas événementiels comme les webhooks plus adaptés — la base est la source de vérité unique, et le webhook est la façon dont le reste du monde l'apprend.
En résumé
Les webhooks de base de données sont une petite idée au rendement disproportionné : ils déplacent « dire au monde que ce changement a eu lieu » hors du code applicatif et sur les données elles-mêmes. Utilisez-les pour les notifications, les synchronisations et la moitié automatique des workflows d'approbation ; gardez les handlers rapides, idempotents et visibles ; et associez-les à des boutons d'action quand une décision humaine doit venir en premier.
Si vous voulez voir le schéma fonctionner sans écrire d'endpoint à la main, Basevolt inclut webhooks et boutons d'action avec journal de livraison et relance dans toutes les formules — connectez une base, pointez un webhook vers votre API, et cliquez sur un bouton de ligne pour voir la requête partir. C'est le chemin le plus court que je connaisse de « les données ont changé » à « le monde a réagi ».