Un webhook fait sortir votre veille de Kortlex : au lieu d'ouvrir l'application, vous recevez chaque nouveauté là où votre équipe travaille déjà - un canal Slack, un tableau Teams, un scénario d'automatisation. Dès qu'une de vos recherches sauvegardées a une nouvelle correspondance, Kortlex envoie une requête HTTP (un petit message JSON) à l'URL de votre choix.
Les webhooks se gèrent dans l'onglet Webhooks de la page Intégrations. Les autres intégrations ont leur page : Les flux RSS et L'API Kortlex.
Les webhooks sortants
Créer un webhook
Le bouton « Nouveau webhook », en haut à droite de la page, déplie un formulaire qui demande :
- une URL de destination en HTTPS (le HTTP simple est refusé, de même que les adresses internes ou privées) ;
- les recherches concernées : soit toutes vos recherches (présentes et futures), soit une sélection que vous cochez. Seules vos propres recherches sont proposées - la recherche d'un membre de l'organisation ne déclenche jamais de webhook.
Il n'y a rien à choisir côté événement : Kortlex n'en émet aujourd'hui
qu'un seul, « nouvelle correspondance de veille » (veille.match), et tout
webhook le reçoit.
À la création, Kortlex affiche une seule fois un secret de
signature, dans un bandeau orange muni d'un bouton
« Copier » - servez-vous-en tout de suite : le secret n'est jamais
réaffiché, et le seul recours est de le régénérer. Chaque envoi porte un en-tête
Kortlex-Signature (un HMAC SHA-256 calculé avec ce secret) : votre outil peut
ainsi vérifier que la requête vient bien de Kortlex et non d'un tiers.
Le corps de chaque envoi est un objet JSON de cette forme :
{
"type": "veille.match",
"created_at": "2026-01-15T09:30:00Z",
"saved_search": { "id": "…", "label": "Sanctions CNIL - santé" },
"matches": [
{ "collection": "jurisprudence", "id": "…", "title": "…",
"url": "https://app.kortlex.com/…", "date": "2026-01-14", "autorite": "CNIL" }
]
}
Le tableau
Les webhooks existants occupent un tableau, une ligne chacun :
- URL - l'adresse appelée, tronquée si elle est longue ; survolez-la pour la lire en entier. La description facultative s'affiche en dessous.
- Recherches - Toutes (présentes et futures) ou le nom des recherches sélectionnées.
- Statut - Actif ou Désactivé. Un webhook désactivé est conservé, avec son secret et sa sélection, mais ne reçoit plus rien.
- Dernier envoi - la date de la dernière livraison tentée, ou un tiret tant qu'il n'y en a pas eu.
- Actions - les cinq boutons ci-dessous.
Les actions
La bascule, la modification des recherches et l'envoi de test s'appliquent sans recharger la page : un « ✓ Enregistré » passager s'affiche sous le tableau, comme sur Recherches sauvegardées. La régénération du secret et la suppression, elles, rechargent - l'une doit vous montrer le nouveau secret, l'autre retire la ligne.
| Icône | Bouton | Ce qu'il fait |
|---|---|---|
| Activer / Désactiver | Bascule le webhook d'un état à l'autre, sans confirmation et sans rien perdre : l'URL, le secret et la sélection de recherches sont conservés. C'est la manière propre de suspendre les envois le temps d'une maintenance de votre côté, plutôt que de supprimer puis recréer. | |
| Modifier les recherches | Ouvre une fenêtre où l'on rebascule entre toutes mes recherches et une sélection, avec un champ pour filtrer la liste et des raccourcis « Tout » / « Aucun ». Enregistrer valide, Annuler ferme sans rien changer. | |
| Régénérer le secret | Remplace le secret de signature. L'ancien cesse immédiatement de signer les livraisons : votre outil les rejettera tant que vous n'aurez pas reporté le nouveau secret. Demande confirmation, puis affiche le nouveau secret une seule fois. | |
| Tester | Envoie un message d'exemple à l'URL, sans attendre qu'une vraie correspondance survienne. C'est ce qu'il faut déclencher pour qu'un outil comme Zapier ou Make « découvre » la structure des champs. Le résultat apparaît dans les Envois récents au passage suivant. | |
| Supprimer | Supprime définitivement le webhook et son secret, après confirmation. Pour une interruption temporaire, préférez le bouton d'activation. |
Sous le tableau, « Envois récents » tient le journal des livraisons - statut (réussie, échouée, en attente, abandonnée), type d'événement, date et code HTTP de réponse. C'est là qu'on vérifie un câblage et qu'on diagnostique une panne. Un envoi qui échoue est réessayé plusieurs fois avec des délais croissants ; après une longue série d'échecs, le webhook est désactivé automatiquement et le propriétaire du compte est prévenu par e-mail.
Les webhooks sont indépendants des alertes e-mail : ils partent même si les notifications de la recherche ou du compte sont coupées. C'est une infrastructure que l'organisation branche volontairement, pas un canal de notification personnel.
Brancher un outil
Le message envoyé par un webhook est du JSON brut. Certains outils l'acceptent tel quel ; d'autres (Slack, Discord, Teams) attendent un format de message précis et ont besoin d'un intermédiaire (Zapier, Make, n8n, ou un petit script) pour le reformater. Les tutoriels ci-dessous partent du plus direct au plus souple.
Zapier
- Créez un Zap avec le déclencheur « Webhooks by Zapier » → « Catch Hook ».
- Copiez l'URL personnalisée fournie par Zapier dans le champ URL du webhook Kortlex.
- Dans Kortlex, cliquez sur le bouton Tester
de la ligne : Zapier reçoit un exemple de
message et découvre la structure des champs (
saved_search.label,matches[]…). - Ajoutez l'action de votre choix - « Send Channel Message » vers Slack, une ligne de Google Sheets, une carte Teams… - en glissant les champs du message.
- Facultatif : une étape « Code » qui recalcule le HMAC SHA-256 de l'en-tête
Kortlex-Signaturepour rejeter les requêtes non signées.
Make (ex-Integromat)
- Créez un scénario, module de départ « Webhooks » → « Custom webhook », puis « Add ».
- Copiez l'adresse générée dans le champ URL du webhook Kortlex.
- Laissez Make « en écoute » et cliquez sur Tester dans Kortlex : Make enregistre la structure du message.
- Enchaînez les modules voulus - Slack, Microsoft Teams, HTTP, Data store - en
mappant
saved_search.labelet la listematches(module « Iterator » pour parcourir les correspondances une à une).
n8n
- Ajoutez un nœud « Webhook », méthode
POST, et copiez son URL de production dans Kortlex. - Facultatif mais recommandé : un nœud « Crypto » (HMAC, SHA-256, la
valeur du secret Kortlex) suivi d'un « IF » pour comparer au
v1=de l'en-têteKortlex-Signatureet arrêter le flux si ça ne correspond pas. - Un nœud « Item Lists » / « Split Out » sur
matchespour traiter chaque correspondance, puis le nœud de sortie (Slack, Discord, e-mail, base de données…). - Activez le workflow, puis cliquez sur Tester dans Kortlex.
Slack
Deux voies. La plus simple passe par un intermédiaire (Zapier / Make / n8n ci-dessus) qui reçoit le JSON de Kortlex et poste un message formaté dans le canal.
Sans intermédiaire, utilisez le Générateur de workflows Slack : créez
un workflow démarré par « Webhook », définissez les variables attendues
(par ex. label et title), collez l'URL du workflow dans
Kortlex, puis ajoutez une étape « Envoyer un message » qui compose le texte à partir de
ces variables. Les Incoming Webhooks Slack classiques, eux, n'acceptent que
leur propre format {"text": "…"} et ne conviennent pas directement.
Discord
Un webhook Discord attend un corps {"content": "…"} (ou des
embeds) : il ne peut pas recevoir le JSON de Kortlex tel quel. Passez par un
intermédiaire - n8n ou Make conviennent bien - qui
reçoit le message Kortlex, met en forme un texte lisible (titre, autorité, lien) et
appelle l'URL du webhook Discord du salon.
Microsoft Teams
Comme Discord, Teams attend un format de carte précis (Adaptive Card via un
connecteur ou un Workflow Power Automate). Le plus fiable est d'utiliser
Power Automate avec un déclencheur « Lorsqu'une requête HTTP est
reçue » : collez son URL dans Kortlex, puis ajoutez l'action « Publier une carte dans un
canal » en réutilisant saved_search.label et matches. Zapier
et Make proposent la même chose avec leurs modules Teams.
Votre propre outil (script, API interne)
- Exposez un point d'entrée HTTPS qui accepte une requête
POSTavec un corps JSON. - Vérifiez l'en-tête
Kortlex-Signature: formatt=<horodatage>,v1=<hmac>, oùhmacest le HMAC SHA-256 de la chaîne<t>.<corps brut>avec votre secret. Rejetez si la signature ou l'horodatage ne collent pas. - Répondez rapidement un code
2xx; tout autre code (ou un délai trop long) est considéré comme un échec et sera réessayé. - Traitez le message de façon idempotente : en cas de nouvel essai,
la même correspondance peut arriver deux fois (dédupliquez sur l'
idde la livraison).
Qui peut gérer les webhooks
L'accès est réservé aux abonnés et à l'essai de 14 jours - voir Essai, offre gratuite et abonnement. Dans une organisation, seuls le propriétaire du compte et les gestionnaires voient la page Intégrations et peuvent créer ou modifier un webhook. Chaque webhook est rattaché à l'organisation, pas à la personne qui l'a créé : il continue de fonctionner si cette personne quitte l'équipe.