> ## 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 agendas

> Recevoir dans Make, Zapier ou n8n un événement à chaque réservation, et quand une personne laisse ses coordonnées sans réserver.

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

## Où le régler

1. Ouvrez l'agenda, section **Notifications**, 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 **Publier les modifications**. Les envois utilisent la version publiée de l'agenda : sans publication, l'ancienne URL (ou aucune) reste utilisée.

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

## Événements

| Événement | Quand |
| - | - |
| `reservation.creee` | À chaque réservation sur l'agenda. |
| `reservation.abandonnee` | La personne a laissé un email ou un téléphone, puis n'a pas réservé. Envoyé entre 30 et 35 minutes après sa dernière saisie, une seule fois. |
| `test` | Bouton **Envoyer un test**. Données fictives. |

Une personne qui réserve après avoir laissé ses coordonnées ne déclenche que `reservation.creee`, jamais `reservation.abandonnee`.

> [!NOTE]
>
> `reservation.abandonnee` ne concerne que les **agendas seuls** (page de réservation avec ses propres questions). Il n'est pas envoyé pour un formulaire suivi d'un agenda. La saisie est enregistrée dès qu'un email valide ou un téléphone d'au moins 8 chiffres est rempli. Si vous avez aussi choisi un pipeline « Inscriptions partielles » dans la section Pipeline de l'agenda, la personne y est placée en même temps.

## Charge utile

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

| Champ | Type | Présent |
| - | - | - |
| `event` | `reservation.creee`, `reservation.abandonnee` ou `test` | toujours |
| `sentAt` | date ISO 8601 (UTC) | toujours |
| `scheduler.id` | identifiant de l'agenda | toujours |
| `scheduler.name` | nom de l'agenda | toujours |
| `invitee.name` | texte ou `null` | toujours |
| `invitee.email` | texte (minuscules) ou `null` | toujours |
| `invitee.phone` | texte ou `null` | toujours |
| `booking.id` | identifiant de la réservation | `reservation.creee` |
| `booking.startsAt`, `booking.endsAt` | dates ISO 8601 (UTC) | `reservation.creee` |
| `booking.timezone` | fuseau de la personne, ex. `Europe/Paris` | `reservation.creee` |
| `answers` | réponses aux questions, indexées par identifiant de question | `reservation.creee` |
| `submissionId` | identifiant de la saisie (même valeur pour le brouillon et la réservation qui le complète) | `reservation.creee`, `reservation.abandonnee` |

### `reservation.creee`

```json theme={null}
{
  "event": "reservation.creee",
  "sentAt": "2026-10-21T09:30:12.418Z",
  "scheduler": { "id": "5ca80000-0000-4000-8000-000000000080", "name": "Appel découverte" },
  "invitee": { "name": "Jean Exemple", "email": "jean.exemple@example.com", "phone": "+33600000000" },
  "booking": {
    "id": "8f2d1c34-5b6a-4e7f-9a0b-1c2d3e4f5a6b",
    "startsAt": "2026-10-23T08:00:00.000Z",
    "endsAt": "2026-10-23T08:30:00.000Z",
    "timezone": "Europe/Paris"
  },
  "answers": { "3b1e6f0a-2c4d-4e8f-9a1b-2c3d4e5f6a7b": "Coach sportif" },
  "submissionId": "c7a9e2b1-4d3f-4a5e-8b6c-7d8e9f0a1b2c"
}
```

### `reservation.abandonnee`

```json theme={null}
{
  "event": "reservation.abandonnee",
  "sentAt": "2026-10-21T10:05:03.901Z",
  "scheduler": { "id": "5ca80000-0000-4000-8000-000000000080", "name": "Appel découverte" },
  "invitee": { "name": "Jean Exemple", "email": "jean.exemple@example.com", "phone": null },
  "submissionId": "c7a9e2b1-4d3f-4a5e-8b6c-7d8e9f0a1b2c"
}
```

### `test`

```json theme={null}
{
  "event": "test",
  "sentAt": "2026-10-21T09:12:44.050Z",
  "scheduler": { "id": "5ca80000-0000-4000-8000-000000000080", "name": "Appel découverte" },
  "invitee": { "name": "Jean Exemple", "email": "jean.exemple@example.com", "phone": "+33600000000" }
}
```

## 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éservation 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** de l'agenda.
3. Cliquez sur **Envoyer un test** : Make détecte la structure de l'événement.
4. Publiez l'agenda. Ajoutez un filtre sur `event` pour traiter `reservation.creee` et `reservation.abandonnee` séparément.


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