Entwickler
Webhooks – Echtzeit-Events aus Stayo
Abonnieren Sie Events aus Stayo in Echtzeit: neue Buchungen, An- und Abreisen, Stornierungen und erfolgreiche Zahlungen. Signierte Zustellung, Testzustellung, Secret-Rotation und Zustellhistorie.
Automatischer Versand
Events werden in Echtzeit gesendet, wenn etwas in Stayo passiert – kein Polling und keine Zeitplanung nötig.
Signierte Zustellungen
Jede Payload ist mit HMAC-SHA256 und Ihrem Signing-Secret signiert, damit Sie prüfen können, dass der Aufruf von Stayo stammt.
Secret-Rotation
Erneuern Sie das Signing-Secret jederzeit direkt unter /settings/webhooks – ohne die Historie zu verlieren.
Testzustellung
Senden Sie mit einem Klick ein Test-Event an Ihren Endpunkt und prüfen Sie, dass Signatur und Payload korrekt ankommen.
Zustellhistorie
Sehen Sie alle ausgehenden Aufrufe mit Statuscode, Zeit, Payload und Antwort. Fehlgeschlagene Zustellungen können erneut abgespielt werden.
Mehrere Endpunkte
Registrieren Sie mehrere URLs pro Event – bauen Sie eigene Integrationen, Betriebsalarme oder getrennte Umgebungen.
Events
Abonnieren Sie pro Endpunkt die Events, die Sie interessieren.
| Event | Wann es gesendet wird |
|---|---|
| booking.created | Wird gesendet, wenn eine neue Buchung erstellt wird – über Rezeption, Buchungsmaschine oder einen externen Kanal. |
| booking.checked_in | Wird gesendet, wenn ein Gast eingecheckt wird. |
| booking.checked_out | Wird gesendet, wenn ein Gast ausgecheckt wird. |
| booking.cancelled | Wird gesendet, wenn eine Buchung storniert wird. |
| payment.succeeded | Wird gesendet, wenn eine Zahlung abgeschlossen ist (Karte, Swish, Rechnung usw.). |
Beispiel-Payload
Alle Webhooks werden als POST mit JSON gesendet. Signatur und Event-Typ stehen in den Headern, damit Sie routen und verifizieren können, bevor Sie die Payload interpretieren.
- • Stayo-Event – der Event-Typ.
- • Stayo-Signature – Timestamp + HMAC-SHA256.
- • Stayo-Delivery – eindeutige ID pro Zustellung (für Idempotenz).
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" }
}
}
}Signatur verifizieren
Berechnen Sie HMAC-SHA256 von {timestamp}.{rawBody} mit Ihrem Signing-Secret und vergleichen Sie mit v1 in Stayo-Signature. Verwenden Sie einen Constant-Time-Vergleich.
Lehnen Sie Aufrufe ab, deren Zeitstempel älter als ein paar Minuten ist, um sich gegen Replay zu schützen.
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"),
);
}Webhooks in Stayo verwalten
Unter Einstellungen → Webhooks in Stayo (/settings/webhooks) können Sie:
- • Endpunkte pro Event hinzufügen und entfernen.
- • Das Signing-Secret ansehen und erneuern.
- • Eine Testzustellung an einen Endpunkt senden.
- • Die Zustellhistorie mit Status und Payload durchsuchen.
- • Fehlgeschlagene Zustellungen erneut abspielen.
- • Einen Endpunkt vorübergehend pausieren, ohne die Konfiguration zu verlieren.
Möchten Sie eine Integration mit Stayo bauen?
Kombinieren Sie Webhooks mit unserer öffentlichen API – wir helfen Ihnen beim Einstieg und geben Ihnen Zugang zur OpenAPI-Spezifikation und einer Testumgebung.