GuideForfait Ultimate

Configurer des webhooks

Envoyez en temps réel les mises à jour des rendez-vous, clients, factures et plus encore vers votre propre système, et vérifiez que chaque requête provient de Softalon.

5 min de lectureRôle : Super administrateur ou supérieurIntégrations et développeursMis à jour le 25 octobre 2026
Ouvrir dans l'application

Un webhook envoie une requête HTTP à l'URL de votre choix chaque fois qu'il se passe quelque chose dans votre salon, par exemple lorsqu'un rendez-vous est créé ou qu'un client est mis à jour. Utilisez-le pour garder un autre système synchronisé avec Softalon.

Avant de commencer

  • Votre salon a le forfait Ultimate.
  • Vous avez le rôle Super administrateur ou Propriétaire.
  • Vous disposez d'une URL qui accepte les requêtes POST avec un corps JSON, commençant par https:// ou http://.

Créer un webhook

  1. 1

    Étape 1 sur 4

    Ouvrez Webhooks

    Allez dans Paramètres › Développeurs › Webhooks et cliquez sur Créer un webhook.

  2. 2

    Étape 2 sur 4

    Saisissez la destination

    Renseignez l'URL de destination, par exemple https://example.com/webhook, et éventuellement une Description pour le reconnaître plus tard.

  3. 3

    Étape 3 sur 4

    Choisissez les sujets

    Sous Sujets, sélectionnez les événements souhaités. L'onglet Tous les sujets liste tous les sujets disponibles, et Sujets sélectionnés affiche ce que vous avez choisi. Votre URL ne reçoit que les sujets que vous sélectionnez.

  4. 4

    Étape 4 sur 4

    Enregistrez

    Cliquez sur Créer le webhook.

    Vous verrez:

    Webhook créé, et le webhook apparaît dans le tableau avec son interrupteur de statut activé.

Sujets

Les sujets sont nommés resource.action. Les sujets suivants sont disponibles :

DomaineSujets
Membres de l'équipesalons/member.created, .updated, .deleted
Établissementslocations/location.created, .updated, .deleted
Servicesservices/service.created, .updated, .deleted
Clientsclients/client.created, .updated, .deleted, .birthday, .lapsed
Codes de connexion des clientsclients/session_request.code_generated
Rendez-vousbooking/appointment.created, .updated, .deleted, .upcoming, .started
Conversationsconversations/conversation.created, .updated, .deleted
Facturesfinances/invoice.created, .updated, .deleted

Pour la signification de chaque déclencheur, consultez Les déclencheurs d'automatisation expliqués.

Ce que Softalon envoie

Chaque événement est une requête POST avec un corps JSON :

{
  "topic": "booking/appointment.created",
  "event": {
    "id": "...",
    "type": "booking/appointment.created",
    "resource": "booking/appointment",
    "resourceId": "...",
    "salonId": "...",
    "data": {
      "object": { "...": "the full object" },
      "previousAttributes": { "...": "changed fields, for updates" }
    }
  }
}

La requête comporte les en-têtes suivants :

En-têteValeur
X-Webhook-Signaturesha256= suivi de la signature
X-Webhook-TopicLe sujet, par exemple booking/appointment.created
X-Webhook-Endpoint-IdL'ID de votre webhook
X-Webhook-Delivery-IdL'ID de cet envoi. Il reste le même lorsqu'un envoi est retenté.
User-AgentSoftalon API

Vérifier la signature

Chaque webhook possède un secret. Softalon signe le corps de la requête avec ce secret en HMAC-SHA256 et envoie le résultat hexadécimal dans X-Webhook-Signature. Calculez la même valeur à partir du corps brut de la requête et comparez. Si elles ne correspondent pas, ignorez la requête.

const crypto = require("crypto");

function isValid(rawBody, header, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}

Pour gérer le secret, utilisez les boutons de la colonne Secret :

  • Le bouton en forme d'œil affiche le secret complet, et le bouton de copie le copie.
  • Le bouton de régénération crée immédiatement un nouveau secret. L'ancien secret cesse aussitôt de fonctionner : mettez donc votre système à jour en même temps.

Envois et nouvelles tentatives

  • Votre URL doit répondre avec un code de statut 2xx dans les 10 secondes. Toute autre réponse compte comme un échec.
  • Un envoi échoué est retenté, jusqu'à 5 tentatives au total. Les délais entre les tentatives augmentent : environ 30 secondes, 1 minute, 2 minutes et 4 minutes.
  • Utilisez X-Webhook-Delivery-Id pour ignorer un envoi que vous avez déjà traité.

Chaque envoi a l'un des statuts suivants :

StatutCe que cela signifie
pendingEn attente d'envoi.
deliveredVotre URL a répondu avec un statut 2xx.
failedLa dernière tentative a échoué. S'il reste des tentatives, il est retenté.
exhaustedLes 5 tentatives ont échoué. Il ne sera plus retenté.

L'application n'affiche pas encore de journal des envois. Vous pouvez consulter les envois via l'API à l'adresse GET /v1/salons/:salonId/webhook-endpoints/:webhookEndpointId/deliveries. Consultez Créer une application API.

Si les 5 derniers envois d'un webhook sont tous au statut exhausted, Softalon désactive le webhook. Corrigez votre endpoint, puis réactivez l'interrupteur de statut. Les événements survenus pendant la désactivation d'un webhook ne sont pas envoyés plus tard.

Modifier, suspendre ou supprimer un webhook

  • Suspendre : désactivez l'interrupteur de la colonne Statut.
  • Modifier : ouvrez le menu de la ligne et choisissez Mettre à jour.
  • Supprimer : ouvrez le menu de la ligne et choisissez Supprimer.

Les webhooks n'envoient des données que tant que votre salon a un abonnement actif, en essai ou en retard, sur un forfait qui inclut les webhooks.

Questions fréquentes

Chaque envoi est effectué séparément et retenté selon son propre calendrier : ne vous fiez donc pas à l'ordre d'arrivée des requêtes. Utilisez plutôt les horodatages de l'objet lui-même.