Webhooks
Recibe notificaciones en tiempo real cuando ocurren eventos en tu cuenta de AgendaPro.
Descripción
Los webhooks te permiten recibir notificaciones HTTP POST cuando ocurren eventos en tu cuenta de AgendaPro (por ejemplo, cuando se crea una reserva o se actualiza un cliente).
Configuración
Puedes registrar y administrar webhooks desde Configuraciones > Integraciones en tu cuenta de AgendaPro.
Al crear un webhook necesitas:
- URL: el endpoint que recibirá las notificaciones (debe aceptar POST).
- Eventos: los tipos de eventos que quieres recibir.
Eventos disponibles
| Evento | Descripción |
|---|---|
booking.created | Se creó una reserva |
booking.updated | Se actualizó una reserva |
client.created | Se creó un cliente |
client.updated | Se actualizó un cliente |
Patrones wildcard:
| Patrón | Descripción |
|---|---|
* | Todos los eventos |
booking.* | Todos los eventos de reservas |
client.* | Todos los eventos de clientes |
Formato del payload
Cada notificación se envía como un POST con un JSON body:
{
"event": "booking.created",
"timestamp": "2026-03-27T14:30:00Z",
"data": {
"id": 12345,
"start_time": "2026-03-28T10:00:00-03:00",
"end_time": "2026-03-28T10:30:00-03:00",
"service_id": 10,
"client_id": 42,
"location_id": 1
}
}Verificación de firma (HMAC-SHA256)
Cada webhook tiene un secret único que se muestra solo una vez al crearlo. Usa este secret para verificar que las notificaciones provienen de AgendaPro.
Cada request incluye un header X-Webhook-Signature con la firma HMAC-SHA256 del body:
# Ruby
expected = OpenSSL::HMAC.hexdigest('SHA256', webhook_secret, request.raw_post)
if expected == request.headers['X-Webhook-Signature']
# Notificación verificada
end// Node.js
const crypto = require('crypto');
const expected = crypto.createHmac('sha256', webhookSecret)
.update(rawBody)
.digest('hex');
if (expected === req.headers['x-webhook-signature']) {
// Notificación verificada
}# Python
import hmac, hashlib
expected = hmac.new(webhook_secret.encode(), request.body, hashlib.sha256).hexdigest()
if expected == request.headers.get('X-Webhook-Signature'):
# Notificación verificadaReintentos
Si tu endpoint no responde con un status 2xx, AgendaPro reintentará la entrega con backoff exponencial.
Después de múltiples intentos fallidos, el webhook se desactiva automáticamente. Puedes reactivarlo desde la configuración.
Buenas prácticas
- Responde rápido: retorna
200 OKlo antes posible. Procesa el evento de forma asíncrona si necesitas hacer trabajo pesado. - Verifica la firma: siempre valida el header
X-Webhook-Signaturepara asegurar que la notificación es legítima. - Maneja duplicados: en casos excepcionales, un evento podría entregarse más de una vez. Usa el
iddel recurso para idempotencia.
Updated about 2 months ago
