Hoppa till innehåll

Desarrolladores

Webhooks — eventos en tiempo real desde Stayo

Suscríbase a eventos de Stayo en tiempo real: nuevas reservas, llegadas y salidas, cancelaciones y pagos realizados. Entrega firmada, entrega de prueba, rotación de secretos e historial de entregas.

Envío automático

Los eventos se envían en tiempo real cuando algo ocurre en Stayo — sin polling ni programación.

Entregas firmadas

Cada payload está firmado con HMAC-SHA256 y su signing secret para que pueda verificar que la llamada procede de Stayo.

Rotación de secretos

Renueve el signing secret cuando quiera directamente desde /settings/webhooks — sin perder el historial.

Entrega de prueba

Envíe un evento de prueba a su endpoint con un clic y compruebe que la firma y el payload llegan correctamente.

Historial de entregas

Vea todas las llamadas salientes con código de estado, hora, payload y respuesta. Las entregas fallidas pueden reintentarse.

Varios endpoints

Registre varias URL por evento — cree sus propias integraciones, alertas operativas o entornos separados.

Eventos

Suscríbase por endpoint a los eventos que le interesen.

EventoCuándo se envía
booking.createdSe envía cuando se crea una nueva reserva — desde recepción, el motor de reservas o un canal externo.
booking.checked_inSe envía cuando un huésped hace el check-in.
booking.checked_outSe envía cuando un huésped hace el check-out.
booking.cancelledSe envía cuando se cancela una reserva.
payment.succeededSe envía cuando se completa un pago (tarjeta, Swish, factura, etc.).

Ejemplo de payload

Todos los webhooks se envían como POST con JSON. La firma y el tipo de evento van en los encabezados, para que pueda enrutar y verificar antes de interpretar el payload.

  • Stayo-Event — el tipo de evento.
  • Stayo-Signature — timestamp + HMAC-SHA256.
  • Stayo-Delivery — ID único por entrega (para idempotencia).
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" }
    }
  }
}

Verificar la firma

Calcule el HMAC-SHA256 de {timestamp}.{rawBody} con su signing secret y compárelo con v1 en Stayo-Signature. Use una comparación de tiempo constante.

Rechace las llamadas con una marca de tiempo de más de unos minutos para protegerse contra reenvíos.

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"),
  );
}

Gestionar webhooks en Stayo

En Configuración → Webhooks en Stayo (/settings/webhooks) puede:

  • Añadir y eliminar endpoints por evento.
  • Ver y renovar el signing secret.
  • Enviar una entrega de prueba a un endpoint.
  • Explorar el historial de entregas con estado y payload.
  • Reintentar las entregas fallidas.
  • Pausar un endpoint temporalmente sin perder su configuración.

¿Quiere crear una integración con Stayo?

Combine los webhooks con nuestra API pública — le ayudamos a empezar y le damos acceso a la especificación OpenAPI y a un entorno de prueba.