Les intégrations font 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, un lecteur de flux. Deux mécanismes, branchés sur vos recherches sauvegardées :
- les webhooks sortants - Kortlex envoie une requête HTTP (un petit message JSON) à l'URL de votre choix dès qu'une recherche sauvegardée a une nouvelle correspondance ;
- les flux RSS privés - une adresse par recherche sauvegardée, à coller dans n'importe quel lecteur RSS ou outil qui sait lire un flux.
Tout se gère sur la page Intégrations. La fonctionnalité est réservée aux abonnés (et à l'essai de 14 jours) ; dans une organisation, seuls le propriétaire du compte et les gestionnaires y ont accès.
Les webhooks sortants
Depuis la page Intégrations, « Nouveau webhook » demande :
- une URL de destination en HTTPS (le HTTP simple est refusé, de même que les adresses internes ou privées) ;
- l'événement qui déclenche l'envoi - aujourd'hui « nouvelle
correspondance de veille » (
veille.match) ; - 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.
À la création, Kortlex affiche une seule fois un secret de
signature. 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 secret se régénère à tout moment (« Renouveler le secret »),
ce qui invalide l'ancien.
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" }
]
}
La page Intégrations tient un journal des livraisons (statut, code HTTP,
date) pour vérifier le câblage, un bouton Tester qui envoie un message
ping, et de quoi activer / désactiver, modifier les recherches
ou supprimer chaque webhook. 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.
Les flux RSS privés
Chaque recherche sauvegardée peut exposer un flux RSS. Comme les lecteurs RSS n'ouvrent pas de session, l'authentification passe par un jeton dans l'adresse du flux - traitez cette URL comme un mot de passe. Le lien se révèle depuis la page Recherches sauvegardées, ligne par ligne ; « régénérer le lien » invalide l'ancien et coupe l'accès des lecteurs qui l'utilisaient. Le flux renvoie les 30 éléments les plus récents, du plus récent au plus ancien.
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 Tester : 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 intégrations
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 et chaque flux RSS est rattaché à l'organisation, pas à la personne qui l'a créé : il continue de fonctionner si cette personne quitte l'équipe.