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.
| Evento | Cuándo se envía |
|---|---|
| booking.created | Se envía cuando se crea una nueva reserva — desde recepción, el motor de reservas o un canal externo. |
| booking.checked_in | Se envía cuando un huésped hace el check-in. |
| booking.checked_out | Se envía cuando un huésped hace el check-out. |
| booking.cancelled | Se envía cuando se cancela una reserva. |
| payment.succeeded | Se 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.