Webhooks de veille
Insourcia peut pousser chaque actualité de veille vers votre endpoint HTTP (webhook sortant, comme Stripe ou GitHub). Les livraisons sont envoyées une fois par jour, après la publication des données ; chacune est signée (HMAC-SHA256) et journalisée.
Configuration : Actualités → ⚙️ Paramètres de notifications → Avancé → Webhooks.
Là où l’API REST et le MCP répondent quand vous les appelez, le webhook fait l’inverse : Insourcia écrit dans vos systèmes pour déclencher une action (créer une tâche CRM, alerter un canal Slack, lancer un scénario n8n) sans humain dans la boucle.
Disponible pour tous les comptes, avec jusqu’à 5 adresses de réception par organisation. Une adresse email vérifiée est requise. Sans abonnement, 5 livraisons par jour au plus.
Livraison
Section intitulée « Livraison »Pour chaque événement, un POST est envoyé à votre URL avec ces en-têtes :
| En-tête | Description |
|---|---|
X-Insourcia-Signature | sha256=<hex> - HMAC-SHA256 sur {X-Insourcia-Timestamp}.{corps brut} avec le secret de l’endpoint. |
X-Insourcia-Timestamp | Horodatage Unix (secondes), recalculé à chaque tentative. |
X-Insourcia-Delivery | delivery_id (clé d’idempotence, aussi dans le corps). |
- Accusé de réception : répondez 2xx en moins de 10 secondes. Un échec est retenté au cycle suivant ; un en-tête
Retry-Afterest pris en compte. Après 5 échecs consécutifs, l’endpoint est désactivé et vous êtes notifié. - Aucune garantie d’ordre : dédupliquez sur
delivery_id. - L’URL doit être en https et publique (les adresses internes sont refusées). Les redirections ne sont pas suivies.
Vérifier la signature
Section intitulée « Vérifier la signature »Recalculez le HMAC sur les octets exacts "{timestamp}.{corps brut}" avec le secret (préfixe whsec_) et comparez en temps constant. Rejetez un horodatage hors tolérance (anti-rejeu).
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody = le corps brut reçu (Buffer/string), NON re-sérialisé.function verify(rawBody, headers, secret) { const ts = headers["x-insourcia-timestamp"]; const sig = headers["x-insourcia-signature"]; // "sha256=<hex>" if (!ts || !sig) return false; if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false; // 5 min const expected = "sha256=" + createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex"); const a = Buffer.from(sig); const b = Buffer.from(expected); return a.length === b.length && timingSafeEqual(a, b);}Signez/vérifiez sur le corps brut reçu, pas sur un JSON re-sérialisé :
JSON.stringify(parsed)ne reproduit pas forcément les octets d’origine.
Payloads
Section intitulée « Payloads »company.alert
Section intitulée « company.alert »Envoyé pour chaque nouvel événement détecté sur une entreprise d’une veille surveillée.
{ "event": "company.alert", "schema_version": "1", "delivery_id": "clz1a2b3c4d5e6f7", "occurred_at": "2026-07-14T06:00:00.000Z", "source": { "type": "list", "id": "clh0list123", "name": "Portefeuille LBO" }, "alert": { "siren": "552081317", "company_name": "GO SPORT FRANCE", "category": "procedure_collective", "label": "Procédure collective", "summary": "Ouverture de liquidation judiciaire", "occurred_on": "2026-07-12", "date_note": "effet 12/07/2026", "company_url": "https://app.insourcia.io/company/552081317" }}source: la veille (recherche sauvegardée ou liste) à l’origine,type=saved_searchoulist.alert.category: type brut de l’événement (procedure_collective,dirigeant_entered,cession,nouveaux_comptes,radiation…) ou, à défaut, le type d’alerte.
webhook.ping
Section intitulée « webhook.ping »Envoyé par le bouton « Tester » pour valider votre endpoint et votre vérification de signature.
{ "event": "webhook.ping", "schema_version": "1", "delivery_id": "whp_1f2e3d4c", "occurred_at": "2026-07-14T06:00:00.000Z", "message": "Insourcia webhook test event"}Chaque endpoint peut être limité, à sa création ou ensuite via Modifier, à certaines veilles et à certains groupes de signaux :
- Procédures collectives
- Cessions
- Nouveau bilan
- Score crédit
- Dirigeants
- Marchés publics / subventions
- Entrées / sorties de veille
- Dissolutions et autres
Les deux dimensions se combinent ; laissées vides, elles couvrent l’ensemble des veilles et des signaux. Vous pouvez ainsi envoyer les procédures collectives vers un canal Slack et le reste vers votre CRM.