Webhooks
Recibe notificaciones en tiempo real cuando ocurren eventos en tu negocio.
Introduccion
Los webhooks te permiten recibir notificaciones HTTP en tu servidor cuando ocurren eventos importantes, como:
- Se crea una nueva reserva
- Se cancela una reserva
- Se completa un pago
- Se registra un nuevo cliente
En lugar de consultar periodicamente la API (polling), tu servidor recibe los datos automaticamente cuando ocurren los eventos.
Evento ocurre
Un cliente hace una reserva
SalonBookIt notifica
Enviamos POST a tu URL
Tu servidor procesa
Actualiza tu sistema
Configuracion
Configura tus webhooks desde el Dashboard:
- Ve a Configuracion → Integraciones
- En la seccion Webhooks, haz clic en AƱadir Webhook
- Introduce la URL de tu endpoint (debe ser HTTPS)
- Selecciona los eventos que quieres recibir
- Guarda y copia el Secret para verificar las firmas
- Debe usar HTTPS (no HTTP)
- Debe ser accesible publicamente
- Debe responder en menos de 10 segundos
Formato del payload
Cada webhook incluye la siguiente estructura:
{
"id": "evt_abc123xyz789",
"type": "booking.created",
"created": "2024-01-20T10:30:00Z",
"tenant_id": "uuid-del-tenant",
"data": {
// Datos del evento (varian segun el tipo)
}
}
Campos del webhook
| Campo | Tipo | Descripcion |
|---|---|---|
id |
string | ID unico del evento (para idempotencia) |
type |
string | Tipo de evento (ej: booking.created) |
created |
string | Timestamp ISO 8601 del evento |
tenant_id |
string | UUID del negocio |
data |
object | Datos especificos del evento |
Headers de la peticion
Cada webhook incluye estos headers:
| Header | Descripcion |
|---|---|
Content-Type |
application/json |
X-SalonBookIt-Signature |
Firma HMAC para verificar autenticidad |
X-SalonBookIt-Event |
Tipo de evento |
X-SalonBookIt-Delivery |
ID de la entrega (para debugging) |
X-SalonBookIt-Timestamp |
Timestamp de cuando se envio |
Respuesta esperada
Tu servidor debe responder con un codigo 2xx (200, 201, 202, 204) para indicar que el webhook se recibio correctamente.
HTTP/1.1 200 OK
Content-Type: application/json
{"received": true}
Responde antes de 10 segundos. Si necesitas procesar datos pesados, guarda el evento y procesalo de forma asincrona.
Politica de reintentos
Si tu servidor no responde o devuelve un error (4xx o 5xx), reintentamos automaticamente:
| Intento | Espera |
|---|---|
| 1 | Inmediato |
| 2 | 5 minutos |
| 3 | 30 minutos |
| 4 | 2 horas |
| 5 | 24 horas (final) |
Despues de 5 intentos fallidos, el webhook se marca como fallido y no se reintenta mas. Puedes ver los webhooks fallidos en el Dashboard.