Webhooks
Recibe notificaciones en tiempo real cuando ocurren eventos en tu negocio.
Introducci贸n
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 peri贸dicamente la API (polling), tu servidor recibe los datos autom谩ticamente cuando ocurren los eventos.
Evento ocurre
Un cliente hace una reserva
SalonBookIt notifica
Enviamos POST a tu URL
Tu servidor procesa
Actualiza tu sistema
Configuraci贸n
Configura tus webhooks desde el Dashboard:
- Ve a Configuraci贸n → Integraciones
- En la secci贸n 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 p煤blicamente
- 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 (var铆an seg煤n el tipo)
}
}
Campos del webhook
| Campo | Tipo | Descripci贸n |
|---|---|---|
id |
string | ID 煤nico 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 espec铆ficos del evento |
Headers de la petici贸n
Cada webhook incluye estos headers:
| Header | Descripci贸n |
|---|---|
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 envi贸 |
Respuesta esperada
Tu servidor debe responder con un c贸digo 2xx (200, 201, 202, 204) para indicar que el webhook se recibi贸 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 proc茅salo de forma as铆ncrona.
Pol铆tica de reintentos
Si tu servidor no responde o devuelve un error (4xx o 5xx), reintentamos autom谩ticamente:
| Intento | Espera |
|---|---|
| 1 | Inmediato |
| 2 | 5 minutos |
| 3 | 30 minutos |
| 4 | 2 horas |
| 5 | 24 horas (final) |
Despu茅s de 5 intentos fallidos, el webhook se marca como fallido y no se reintenta m谩s. Puedes ver los webhooks fallidos en el Dashboard.