Lueira — Software de gestión para turismo activo

Webhooks

Los webhooks te permiten recibir notificaciones en tiempo real cuando ocurren eventos en tu cuenta, en lugar de tener que consultar la API periódicamente.

Configuración

Crea un endpoint de webhook desde Ajustes → Desarrolladores → Webhooks, indicando la URL de destino (debe usar HTTPS) y los eventos a los que quieres suscribirte. Al crearlo se genera un secreto de firma que solo se muestra una vez.

Headers de cada entrega

HeaderContenido
X-Lueira-Webhook-EventNombre del evento, p. ej. order.created
X-Lueira-Webhook-IdUUID de la entrega — úsalo como clave de idempotencia
X-Lueira-Webhook-TimestampMomento de envío, en ISO 8601
X-Lueira-Webhook-Signaturesha256=<hex> — HMAC-SHA256 de la petición
X-Lueira-Webhook-Tenant-IdTenant de origen
X-Lueira-Webhook-Versionv1

Verificar la firma

La firma es un HMAC-SHA256 calculado sobre la cadena {timestamp}.{cuerpo en bruto}, usando tu secreto de webhook como clave. Recalcúlala y compárala con X-Lueira-Webhook-Signature antes de procesar el evento; rechaza cualquier entrega cuyo timestamp tenga más de 5 minutos de antigüedad para evitar ataques de repetición.

Node.js
const crypto = require("crypto");

function isValidSignature(secret, timestamp, rawBody, signatureHeader) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${timestamp}.${rawBody}`)
    .digest("hex");
  return signatureHeader === `sha256=${expected}`;
}

Reintentos y estado del endpoint

Si tu endpoint no responde con un código 2xx, la entrega se reintenta hasta 6 veces con espera exponencial (aprox. 1 min, 5 min, 30 min, 2 h, 6 h, 12 h). Tras 20 fallos consecutivos, el endpoint se deshabilita automáticamente y recibirás un aviso por email; puedes reactivarlo, reenviar entregas concretas o enviar un evento de prueba desde el panel.

Catálogo de eventos

EventoDescripción
order.createdSe ha creado un nuevo pedido o reserva.
order.updatedCambios en un pedido existente.
order.cancelledEl pedido ha sido cancelado.
order.completedEl pedido ha sido completado.
customer.createdSe ha registrado un nuevo cliente.
customer.updatedCambios en los datos del cliente.
payment.capturedSe ha capturado un pago.
payment.refundedSe ha reembolsado un pago (total o parcial).
product.createdSe ha añadido un producto al catálogo.
product.updatedCambios en el catálogo (precios, stock, etc.).
voucher.redeemedSe ha canjeado un bono regalo.
invoice.issuedSe ha emitido una factura.