Utvecklare
Webhooks — realtidshändelser från Stayo
Prenumerera på händelser i Stayo i realtid: nya bokningar, in- och utcheckningar, avbokningar och lyckade betalningar. Signerad leverans, testleverans, hemlighetsrotation och leveranshistorik.
Automatisk dispatch
Händelser skickas i realtid när något händer i Stayo — inga pollingjobb eller schemaläggning.
Signerade leveranser
Varje payload signeras med HMAC-SHA256 och er signing secret så ni kan verifiera att anropet kommer från Stayo.
Rotera hemligheter
Rotera signing secret när ni vill direkt från /settings/webhooks — utan att tappa historik.
Testleverans
Skicka en testhändelse till er endpoint med ett klick och verifiera att signatur och payload kommer fram.
Leveranshistorik
Se alla utgående anrop med statuskod, tid, payload och svar. Felade leveranser kan spelas om.
Flera endpoints
Registrera flera URL:er per event — bygg egna integrationer, driftlarm eller separata miljöer.
Händelser
Prenumerera per endpoint på de händelser ni är intresserade av.
| Event | När det skickas |
|---|---|
| booking.created | Skickas när en ny bokning skapas — via reception, bokningsmotor eller extern kanal. |
| booking.checked_in | Skickas när en gäst checkas in. |
| booking.checked_out | Skickas när en gäst checkas ut. |
| booking.cancelled | Skickas när en bokning avbokas. |
| payment.succeeded | Skickas när en betalning genomförs (kort, Swish, faktura m.fl.). |
Exempel-payload
Alla webhooks skickas som POST med JSON. Signatur och event-typ ligger i headers, så ni kan routa och verifiera innan ni tolkar payload.
- •
Stayo-Event— händelsetyp. - •
Stayo-Signature— timestamp + HMAC-SHA256. - •
Stayo-Delivery— unikt ID per leverans (för 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" }
}
}
}Verifiera signaturen
Räkna ut HMAC-SHA256 över {timestamp}.{rawBody} med er signing secret och jämför med v1 i Stayo-Signature. Använd en tidskonstant jämförelse.
Avvisa anrop där tidsstämpeln är äldre än några minuter för att skydda 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"),
);
}Hantera webhooks i Stayo
Under Inställningar → Webhooks i Stayo (/settings/webhooks) kan ni:
- • Lägga till och ta bort endpoints per event.
- • Se och rotera signing secret.
- • Skicka en testleverans till en endpoint.
- • Bläddra i leveranshistorik med status och payload.
- • Spela om felade leveranser.
- • Pausa en endpoint tillfälligt utan att förlora konfiguration.
Vill ni bygga en integration mot Stayo?
Kombinera webhooks med vårt publika API — vi hjälper er igång och ger tillgång till OpenAPI-specifikation och testmiljö.