Passer au contenu principal

Comment créer un webhook sortant

Déclarer une URL https, copier le secret de signature, envoyer un test et lire l'état de livraison quand rien n'arrive.

Écrit par Thibault Beauchesne

Tu ne veux pas interroger l'API toutes les cinq minutes pour savoir si une analyse est prête.

Un webhook fait l'inverse : Eagr appelle ton serveur quand l'analyse d'un appel se termine. Un seul événement existe, call.available.

La création prend deux minutes. Le piège tient en une phrase : le secret n'est affiché qu'une seule fois.

Ce qu'il te faut avant de commencer

  • Un endpoint en https, joignable depuis internet. Le produit le demande explicitement : « Saisissez une URL https. »

  • Une adresse publique. Ni localhost, ni adresse privée, ni réseau interne : Eagr résout le nom et refuse tout ce qui pointe vers un réseau privé.

  • Un certificat TLS valide. Un certificat expiré ou auto-signé fait échouer la connexion avant le POST, sans message côté Eagr.

  • Un endroit sûr pour stocker le secret de signature.

1. Ouvre la section Webhooks

Page Paramètres puis Connexions entière.

Paramètres, puis Connexions. La section s'intitule Webhooks : « Soyez notifié à votre propre URL quand l'analyse d'un appel se termine. »

Tant qu'elle est vide : « Aucun webhook pour l'instant. Ajoutez-en un pour être notifié quand l'analyse d'un appel se termine. »

2. Déclare ton URL

Section Webhooks et son bouton Ajouter un webhook.

Bouton Ajouter un webhook. La fenêtre explique tout : « Saisissez une URL https. Eagr y enverra (POST) un événement signé quand l'analyse d'un appel que vous pouvez voir se termine. »

Le champ propose https://exemple.com/webhooks/eagr.

Retiens la fin de la phrase, « que vous pouvez voir ». C'est la règle de périmètre : un webhook créé par un commercial ne reçoit que ses appels, un webhook créé par un manager reçoit ceux de son équipe.

3. Copie le secret de signature

Dialogue Ajouter un webhook avec son champ d'URL.

L'écran affiche Webhook créé, puis l'avertissement : « Copiez votre secret de signature maintenant. Il ne sera plus affiché. »

Le bouton Terminé reste grisé tant que tu n'as pas copié. C'est volontaire.

Le secret commence par whsec_ et fait 70 caractères. Le préfixe fait partie de la clé, il ne se retire pas. La copie confirme avec Secret copié.

Si la copie automatique échoue : « Copie automatique impossible. Sélectionnez le secret et copiez-le manuellement. »

4. Envoie un test

Bouton Envoyer un test, avec la consigne « Envoyez un événement de test pour vérifier que votre endpoint le reçoit et le valide. »

La réponse est Événement de test livré, ou Échec du test suivi du code HTTP renvoyé par ton serveur.

Ce code est l'information la plus utile de la page. Un 401 ou un 403 dit que ta vérification de signature rejette le message. Un 404 dit que l'URL est mauvaise. Un 500 dit que ton code casse sur le format reçu.

Ne spamme pas le bouton, la limite est de 5 tests par minute : « Trop de tests envoyés. Attendez une minute et réessayez. »

L'événement de test porte le type webhook.test et une charge utile fixe, sans aucune donnée d'appel réel. Un test ne peut donc pas fuiter un appel vers une URL arbitraire.

5. Vérifie la signature de ton côté

C'est l'étape qui fait échouer les intégrations silencieusement : ton serveur reçoit, rejette, et ne journalise pas le rejet.

La méthode complète est dans « Comment vérifier la signature HMAC d'un webhook ».

Comment lire la colonne Dernière livraison

Le tableau a trois colonnes : URL du endpoint, Dernière livraison, Activé.

La deuxième affiche l'un de ces cinq états :

  • En attente du premier appel, rien n'a encore été tenté.

  • En cours, une livraison est en route.

  • Livré, ton endpoint a répondu correctement.

  • Échec, la dernière tentative a échoué.

  • Non livré, Eagr a renoncé après ses tentatives.

En attente du premier appel est le cas le plus fréquent quand on croit à une panne. Aucun appel analysé ne s'est encore présenté, il n'y a rien à réparer. À noter : un test réussi ne fait pas basculer cet état, les tests ne sont pas comptés comme des livraisons.

Combien de fois Eagr réessaie

Six tentatives au total : la première, puis cinq relivraisons espacées de 1 minute, 5 minutes, 30 minutes, 2 heures et 6 heures. Budget épuisé, la livraison passe Non livré et l'événement est perdu.

Déclenchent une relivraison : un 408, un 429, tout 5xx, ou une absence de réponse. N'en déclenchent aucune : tout autre 4xx, considéré comme une erreur définitive de ton côté.

Réponds en 2xx et en moins de 10 secondes. Accuse réception tout de suite et traite le message en tâche de fond.

Une redirection 3xx n'est jamais suivie, elle compte comme un échec définitif. Donne l'URL finale.

Eagr refuse mon URL

« Webhook URL must use https »
Le http simple est refusé, sans exception.

« Webhook URL host is not allowed »
Tu as saisi localhost ou un nom qui y renvoie. Utilise un service de tunnel avec un nom public pour tes essais.

« Webhook URL resolves to a private address »
Ton nom de domaine pointe vers une adresse de réseau privé. Eagr revérifie la résolution juste avant chaque envoi, un changement de DNS suffit à faire échouer une livraison plus tard.

« Webhook URL host does not resolve »
Le nom n'existe pas encore côté DNS. Attends la propagation.

« Les webhooks ne sont pas encore configurés sur ce serveur. Contactez le support. »
La fonctionnalité n'est pas activée sur ton environnement. Rien à faire de ton côté, écris à [email protected].

Comment changer d'URL ou couper temporairement

Modifier l'URL change la destination sans toucher au secret : « Changez la destination des événements. Le secret de signature reste identique. »

Activer ou désactiver est un interrupteur dans la colonne Activé. Un webhook désactivé reste dans la liste sans rien envoyer.

Supprimer est définitif : « Les événements ne seront plus livrés à cette URL. Cette action est irréversible. » Et le secret part avec.

Ce que ça ne fait pas

Un webhook ne rejoue pas l'historique. Un endpoint créé aujourd'hui ne recevra jamais les appels analysés hier.

L'événement est émis une seule fois par appel. Relancer une analyse ne le réémet pas, même si le score change.

Les appels privés ne produisent jamais d'événement.

Et le secret n'est pas rotatif. Perdu, il faut supprimer le webhook, en recréer un, déployer le nouveau secret, puis réactiver.

Avez-vous trouvé la réponse à votre question ?