Développeurs
Webhooks — événements en temps réel depuis Stayo
Abonnez-vous aux événements de Stayo en temps réel : nouvelles réservations, arrivées et départs, annulations et paiements réussis. Livraison signée, livraison de test, rotation des secrets et historique des livraisons.
Envoi automatique
Les événements sont envoyés en temps réel quand quelque chose se produit dans Stayo — pas de polling ni de planification.
Livraisons signées
Chaque payload est signé avec HMAC-SHA256 et votre signing secret pour que vous puissiez vérifier que l'appel vient de Stayo.
Rotation des secrets
Renouvelez le signing secret quand vous voulez directement depuis /settings/webhooks — sans perdre l'historique.
Livraison de test
Envoyez un événement de test à votre endpoint en un clic et vérifiez que la signature et le payload arrivent bien.
Historique des livraisons
Consultez tous les appels sortants avec code de statut, heure, payload et réponse. Les livraisons échouées peuvent être rejouées.
Plusieurs endpoints
Enregistrez plusieurs URL par événement — créez vos propres intégrations, alertes d'exploitation ou environnements séparés.
Événements
Abonnez-vous par endpoint aux événements qui vous intéressent.
| Événement | Quand il est envoyé |
|---|---|
| booking.created | Envoyé quand une nouvelle réservation est créée — via la réception, le moteur de réservation ou un canal externe. |
| booking.checked_in | Envoyé quand un client est enregistré à l'arrivée. |
| booking.checked_out | Envoyé quand un client est enregistré au départ. |
| booking.cancelled | Envoyé quand une réservation est annulée. |
| payment.succeeded | Envoyé quand un paiement est effectué (carte, Swish, facture, etc.). |
Exemple de payload
Tous les webhooks sont envoyés en POST avec du JSON. La signature et le type d'événement sont dans les en-têtes, pour que vous puissiez router et vérifier avant d'interpréter le payload.
- • Stayo-Event — le type d'événement.
- • Stayo-Signature — timestamp + HMAC-SHA256.
- • Stayo-Delivery — ID unique par livraison (pour l'idempotence).
POST https://din-app.example.com/stayo/webhook
Content-Type: application/json
Stayo-Event: booking.created
Stayo-Signature: t=1737200000,v1=9f2c...ab12
Stayo-Delivery: whd_01HXYZ...
{
"id": "evt_01HXYZ...",
"type": "booking.created",
"created": "2026-08-12T09:14:22Z",
"data": {
"booking": {
"id": "bk_01HXYZ...",
"status": "confirmed",
"channel": "direct",
"arrival": "2026-08-20",
"departure": "2026-08-23",
"guest": { "name": "Anna Andersson", "email": "anna@example.com" },
"total": { "amount": 4200, "currency": "SEK" }
}
}
}Vérifier la signature
Calculez le HMAC-SHA256 de {timestamp}.{rawBody} avec votre signing secret et comparez avec v1 dans Stayo-Signature. Utilisez une comparaison à temps constant.
Rejetez les appels dont l'horodatage est plus vieux que quelques minutes pour vous protéger contre le rejeu.
import crypto from "node:crypto";
export function verifyStayoSignature(
rawBody: string,
header: string,
secret: string,
) {
const [tPart, v1Part] = header.split(",");
const timestamp = tPart.split("=")[1];
const signature = v1Part.split("=")[1];
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature, "hex"),
Buffer.from(expected, "hex"),
);
}Gérer les webhooks dans Stayo
Sous Paramètres → Webhooks dans Stayo (/settings/webhooks) vous pouvez :
- • Ajouter et supprimer des endpoints par événement.
- • Voir et renouveler le signing secret.
- • Envoyer une livraison de test à un endpoint.
- • Parcourir l'historique des livraisons avec statut et payload.
- • Rejouer les livraisons échouées.
- • Mettre un endpoint en pause temporairement sans perdre sa configuration.
Envie de créer une intégration avec Stayo ?
Combinez les webhooks avec notre API publique — nous vous aidons à démarrer et vous donnons accès à la spécification OpenAPI et à un environnement de test.