# Recevoir les réponses d'un formulaire par webhook

Un webhook est une adresse de ton application que Mail appelle dès qu’une réponse arrive dans un formulaire. Ton application n’interroge plus Mail et ne garde aucune clé d’API : elle vérifie seulement la signature de chaque message.

**Avant de commencer** : un formulaire (voir [Créer un formulaire](/docs/guides/creer-un-formulaire/)), une application qui sait recevoir un `POST` en https, et le rôle admin ou propriétaire de l’organisation.

1. **Ouvre la page Webhooks**

   Dans **Configuration**, **Webhooks**, clique **Ajouter une adresse**.

2. **Colle l'adresse de ton application**

   L’adresse doit être en https et publique. Une adresse locale (`localhost`, un numéro IP, un nom interne) est refusée. Laisse l’événement **Réponse à un formulaire** coché et, si besoin, choisis les formulaires concernés. Aucun coché : tous, y compris ceux que tu créeras plus tard.

3. **Copie le secret**

   Mail affiche un secret qui commence par `whsec_`. Il ne s’affiche qu’une fois : copie-le dans ton application avant de fermer la fenêtre. Si tu le perds, supprime l’adresse et recrée-la.

4. **Vérifie la signature dans ton application**

   Chaque message porte trois en-têtes. Ton application doit contrôler la signature et l’heure avant de lire le contenu. Le détail est dans la [référence des webhooks](/docs/reference/webhooks/).

> **Astuce**
>
> Envoie une réponse de test à ton formulaire : elle apparaît dans le journal de l’adresse (bouton **Livraisons**) avec le code que ton application a répondu.

## Quand ton application ne répond pas

Mail attend une réponse 2xx en 10 secondes. Sinon il réessaie, jusqu’à huit essais en tout sur environ 28 heures. Dans **Livraisons**, chaque message montre ses essais, le code reçu, et le contenu envoyé. **Renvoyer** relance un message abandonné ou déjà livré : il garde le même identifiant, ton application doit donc savoir ignorer un message déjà traité.

Un message peut arriver deux fois. Pour ne rien créer en double, retiens l’identifiant du message (`webhook-id`) et celui de la réponse (`data.id`).

## Pause, modification, suppression

L’interrupteur met une adresse en pause : plus rien n’est envoyé, les réponses restent dans **Formulaires**. Supprimer une adresse efface aussi son journal. Le journal des livraisons se garde 30 jours.

> **Note**
>
> Les réponses reçues avant la création de l’adresse ne sont pas renvoyées. Pour les récupérer, lis-les avec l’[API formulaires](/docs/reference/api-formulaires/).
