Hoppa till innehåll

Ontwikkelaars

Webhooks — realtime events uit Stayo

Abonneer u op events uit Stayo in realtime: nieuwe boekingen, aankomsten en vertrekken, annuleringen en geslaagde betalingen. Ondertekende levering, testlevering, secret-rotatie en leveringshistoriek.

Automatische verzending

Events worden in realtime verzonden wanneer er iets gebeurt in Stayo — geen polling of planning nodig.

Ondertekende leveringen

Elke payload is ondertekend met HMAC-SHA256 en uw signing secret, zodat u kunt verifiëren dat de aanroep van Stayo komt.

Secret-rotatie

Vernieuw het signing secret wanneer u wilt, direct vanuit /settings/webhooks — zonder historiek te verliezen.

Testlevering

Stuur met één klik een testevent naar uw endpoint en controleer dat handtekening en payload goed aankomen.

Leveringshistoriek

Bekijk alle uitgaande aanroepen met statuscode, tijd, payload en antwoord. Mislukte leveringen kunnen opnieuw worden afgespeeld.

Meerdere endpoints

Registreer meerdere URL's per event — bouw eigen integraties, operationele meldingen of gescheiden omgevingen.

Events

Abonneer per endpoint op de events die u interesseren.

EventWanneer het wordt verzonden
booking.createdVerzonden wanneer een nieuwe boeking wordt aangemaakt — via receptie, boekingsmodule of een extern kanaal.
booking.checked_inVerzonden wanneer een gast wordt ingecheckt.
booking.checked_outVerzonden wanneer een gast wordt uitgecheckt.
booking.cancelledVerzonden wanneer een boeking wordt geannuleerd.
payment.succeededVerzonden wanneer een betaling is voltooid (kaart, Swish, factuur, etc.).

Voorbeeldpayload

Alle webhooks worden verzonden als POST met JSON. Handtekening en eventtype staan in de headers, zodat u kunt routeren en verifiëren voordat u de payload interpreteert.

  • Stayo-Event — het eventtype.
  • Stayo-Signature — timestamp + HMAC-SHA256.
  • Stayo-Delivery — uniek ID per levering (voor idempotentie).
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" }
    }
  }
}

Handtekening verifiëren

Bereken HMAC-SHA256 van {timestamp}.{rawBody} met uw signing secret en vergelijk met v1 in Stayo-Signature. Gebruik een constant-time vergelijking.

Weiger aanroepen met een timestamp ouder dan enkele minuten om uzelf te beschermen tegen 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"),
  );
}

Webhooks beheren in Stayo

Onder Instellingen → Webhooks in Stayo (/settings/webhooks) kunt u:

  • Endpoints per event toevoegen en verwijderen.
  • Het signing secret bekijken en vernieuwen.
  • Een testlevering naar een endpoint sturen.
  • De leveringshistoriek met status en payload doorzoeken.
  • Mislukte leveringen opnieuw afspelen.
  • Een endpoint tijdelijk pauzeren zonder de configuratie te verliezen.

Wilt u een integratie met Stayo bouwen?

Combineer webhooks met onze publieke API — wij helpen u op weg en geven toegang tot de OpenAPI-specificatie en een testomgeving.