> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scaleflow.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks sortants des formulaires

> Recevoir dans Make, Zapier ou n8n chaque réponse complète à un formulaire, avec les réponses et les coordonnées du répondant.

Les webhooks de cette page sont **sortants** : c'est ScaleFlow qui envoie un événement à votre outil. Pour un agenda, voir [Webhooks sortants des agendas](https://docs.scaleflow.fr/webhooks/agendas-sortants.md). Pour envoyer des leads vers ScaleFlow, voir [Webhook leads](https://docs.scaleflow.fr/webhooks/leads.md).

## Où le régler

1. Ouvrez le formulaire, puis **Paramètres** (roue dentée en haut à droite), section **Général**, carte **Webhook**.
2. Collez l'URL de votre outil. Elle doit commencer par `https://`.
3. Cliquez sur **Envoyer un test** : votre outil reçoit un événement `test` avec des données fictives.
4. Cliquez sur **Enregistrer**, puis **Publier**. Les envois utilisent la version publiée du formulaire : sans publication, l'ancienne URL (ou aucune) reste utilisée.

Une URL par formulaire. Sans URL, rien n'est envoyé.

## Événements

| Événement | Quand |
| - | - |
| `formulaire.soumis` | À chaque réponse complète, une seule fois par réponse. |
| `test` | Bouton **Envoyer un test**. Données fictives. |

Les réponses partielles (personne qui quitte avant la fin) ne déclenchent rien. Si la personne termine plus tard la même réponse, `formulaire.soumis` part à ce moment-là.

## Charge utile

Requête `POST`, corps JSON, en-tête `Content-Type: application/json`.

| Champ | Type |
| - | - |
| `event` | `formulaire.soumis` ou `test` |
| `sentAt` | date ISO 8601 (UTC) |
| `form.id` | identifiant du formulaire |
| `form.name` | nom du formulaire |
| `submission.id` | identifiant de la réponse |
| `submission.completedAt` | date ISO 8601 (UTC) |
| `submission.score` | nombre, ou `null` si le formulaire n'a pas de scoring |
| `respondent.name` | texte ou `null` |
| `respondent.email` | texte (minuscules) ou `null` |
| `respondent.phone` | texte ou `null` |
| `answers` | liste des réponses, dans l'ordre des questions |
| `answers[].questionId` | identifiant de la question |
| `answers[].question` | intitulé de la question |
| `answers[].type` | type de question, ex. `multiple_choice`, `email` |
| `answers[].value` | réponse : texte, nombre, liste (choix multiples) ou objet (carte de contact). Les choix sont envoyés par leur intitulé. |

### `formulaire.soumis`

```json theme={null}
{
  "event": "formulaire.soumis",
  "sentAt": "2026-11-07T13:37:19.174Z",
  "form": { "id": "b2c10801-abfb-4810-9007-31ed8e26e611", "name": "Candidature coaching" },
  "submission": { "id": "70a7b352-c7e6-4cab-b819-48fa357605ad", "completedAt": "2026-11-07T13:37:18.618Z", "score": 12 },
  "respondent": { "name": "Jean Exemple", "email": "jean.exemple@example.com", "phone": "+33600000000" },
  "answers": [
    { "questionId": "acbeb2cb-c088-40c5-ae5b-d5421219f801", "question": "Prénom", "type": "first_name", "value": "Jean" },
    { "questionId": "d48eff53-5add-45bd-b344-9e6b444a6234", "question": "Quel est votre objectif ?", "type": "multiple_choice", "value": "Trouver des clients" }
  ]
}
```

### `test`

Même forme que `formulaire.soumis`, avec `"event": "test"` et des données fictives.

## Comportement

* Votre URL doit répondre en moins de **10 secondes** avec un code 2xx.
* Les redirections ne sont **pas suivies** : donnez l'URL finale.
* **Pas de nouvel essai** en cas d'échec : un événement refusé ou sans réponse est perdu.
* Une URL en panne ne bloque **jamais** la réponse de la personne.
* Adresses refusées : `http://`, identifiants dans l'URL, adresses locales ou de réseau privé.

## Exemple avec Make

1. Créez un scénario avec le module **Webhooks → Custom webhook**, puis **Add** pour obtenir une URL.
2. Collez cette URL dans la carte **Webhook** des paramètres du formulaire.
3. Cliquez sur **Envoyer un test** : Make détecte la structure de l'événement.
4. Enregistrez puis publiez le formulaire. Ajoutez un filtre `event = formulaire.soumis` pour ignorer les tests.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.