Utviklere
Webhooks — sanntidshendelser fra Stayo
Abonner på hendelser i Stayo i sanntid: nye bookinger, inn- og utsjekkinger, avbookinger og vellykkede betalinger. Signert levering, testlevering, rotasjon av hemmeligheter og leveringshistorikk.
Automatisk utsending
Hendelser sendes i sanntid når noe skjer i Stayo — ingen pollingjobber eller planlegging.
Signerte leveranser
Hver payload signeres med HMAC-SHA256 og deres signing secret slik at dere kan verifisere at kallet kommer fra Stayo.
Roter hemmeligheter
Roter signing secret når dere vil direkte fra /settings/webhooks — uten å miste historikk.
Testlevering
Send en testhendelse til endepunktet deres med ett klikk og verifiser at signatur og payload kommer frem.
Leveringshistorikk
Se alle utgående kall med statuskode, tid, payload og svar. Feilede leveranser kan spilles om.
Flere endepunkter
Registrer flere URL-er per event — bygg egne integrasjoner, driftsalarmer eller separate miljøer.
Hendelser
Abonner per endepunkt på hendelsene dere er interessert i.
| Event | Når det sendes |
|---|---|
| booking.created | Sendes når en ny booking opprettes — via resepsjon, bookingsmotor eller ekstern kanal. |
| booking.checked_in | Sendes når en gjest sjekkes inn. |
| booking.checked_out | Sendes når en gjest sjekkes ut. |
| booking.cancelled | Sendes når en booking avbookes. |
| payment.succeeded | Sendes når en betaling gjennomføres (kort, Swish, faktura m.fl.). |
Eksempel-payload
Alle webhooks sendes som POST med JSON. Signatur og event-type ligger i headers, slik at dere kan rute og verifisere før dere tolker payload.
- • Stayo-Event — hendelsestype.
- • Stayo-Signature — timestamp + HMAC-SHA256.
- • Stayo-Delivery — unik ID per levering (for idempotens).
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" }
}
}
}Verifiser signaturen
Regn ut HMAC-SHA256 over {timestamp}.{rawBody} med deres signing secret og sammenlign med v1 i Stayo-Signature. Bruk en tidskonstant sammenligning.
Avvis kall der tidsstempelet er eldre enn noen minutter for å beskytte mot replay.
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"),
);
}Håndter webhooks i Stayo
Under Innstillinger → Webhooks i Stayo (/settings/webhooks) kan dere:
- • Legge til og fjerne endepunkter per event.
- • Se og rotere signing secret.
- • Sende en testlevering til et endepunkt.
- • Bla i leveringshistorikk med status og payload.
- • Spille om feilede leveranser.
- • Pause et endepunkt midlertidig uten å miste konfigurasjonen.
Vil dere bygge en integrasjon mot Stayo?
Kombiner webhooks med vårt offentlige API — vi hjelper dere i gang og gir tilgang til OpenAPI-spesifikasjon og testmiljø.