Solicitudes de reserva
Un visitante de uno de tus mapas publicados puede enviar a tu negocio una solicitud sobre un lugar del mapa: una reserva en un establecimiento, una visita a un inmueble, una cita en una tienda, una recogida en una parada. La solicitud llega a la bandeja de entrada de tu organización en Kaleidr Booking, en booking.kaleidr.com, por correo electrónico si lo eliges, y a tus propios sistemas mediante webhooks. La respondes desde la bandeja de entrada.
Una solicitud es una solicitud, no una reserva confirmada. No se reserva, retiene ni paga nada: tu negocio la confirma por correo electrónico o como lo haga habitualmente.
Activar las solicitudes
- En Kaleidr Booking, abre Configuración, General y activa Aceptar solicitudes. Mientras esté desactivado, ningún visitante puede enviar una solicitud a tu organización y los botones de solicitud no aparecen.
- En Kaleidr Studio, añade una acción de solicitud a una colección: abre la colección, Ficha y filtros, Acciones del lugar, y añade Solicitud. Su etiqueta es el botón que ven los visitantes; cada kit empieza con la suya:
| Tipo de colección | Etiqueta predeterminada | El visitante pide |
|---|---|---|
| Tiendas | Request an Appointment | Una cita, una recogida o la respuesta a una pregunta |
| Anuncios | Schedule a Tour | Una visita en persona o por vídeo, o más información |
| Establecimientos | Reserve | Una reserva o la respuesta a una pregunta |
| Paradas | Request Pickup | Una recogida, un pedido anticipado o un aviso |
- Publica un mapa que muestre la colección. Sus fichas de lugar, sus diseños de lugares y los lugares de sus respuestas de Ask Kaleidr muestran entonces el botón.
- Una acción de solicitud por colección. Añadirla activa las solicitudes para todos los lugares de la colección. Una colección nueva de Establecimientos empieza con Reserve, y una de Paradas con Request Pickup.
- Las colecciones de Vehículos y Personalizadas no admiten solicitudes.
- Lugares del chat. El ajuste Solicitudes de un mapa en Studio, Aceptar Solicitudes para Cualquier Lugar, permite también que los visitantes envíen una solicitud sobre un lugar que Kaleidr AI menciona en sus respuestas, como un restaurante cerca de tu hotel. Está desactivado de forma predeterminada. Esa solicitud identifica el lugar por su nombre y dirección. Solo lleva una posición en el mapa cuando la dirección se encontró en los datos de direcciones propios de Kaleidr.
- Kaleidr AI puede rellenar un formulario, nunca enviarlo. Si se le pide "reserva una mesa para cuatro a las 7", el panel Ask Kaleidr prepara el formulario con lo que dijo el visitante y muestra Revisar y Enviar. El visitante lo revisa, añade sus datos y lo envía. Kaleidr AI nunca ve el nombre, el correo ni el teléfono de un visitante.
El formulario
El visitante ve el formulario sobre el mapa: los campos del kit de la colección, su nombre, su correo y un teléfono opcional, un mensaje y la línea de consentimiento. Enviar solicitud sigue desactivado hasta que se completan los campos obligatorios y se marca la casilla de consentimiento. Tras enviarla, el visitante ve Solicitud enviada y una referencia como K-7XQ2MD. Para el formulario en sí, consulta El formulario de solicitud.
En Kaleidr Booking, Configuración, Formularios de solicitud tiene una pestaña por kit. Para cada campo eliges si se muestra, si es obligatorio y su etiqueta, y puedes añadir hasta cinco preguntas propias. La vista previa de al lado muestra el formulario tal como lo verán los visitantes.
| Kit | Campos estándar |
|---|---|
| Tiendas | Para qué es la solicitud, fecha, franja del día, artículos |
| Anuncios | Para qué es la solicitud, visita en persona o por vídeo, hasta tres fechas, franja del día, financiación |
| Establecimientos | Para qué es la solicitud, fecha, hora, número de personas (1 a 50), noches (1 a 60) |
| Paradas | Para qué es la solicitud, recogida, destino, fecha, hora, número de personas (1 a 20), artículos |
La recogida y el destino son texto que escribe el visitante. En el diseño en vivo, una colección de Paradas cuya acción de solicitud permite elegirlos añade los dos puntos, encontrados con una búsqueda de dirección o un toque en el mapa. Son lo que el visitante eligió para que actúes.
Bots. Un visitante que no ha iniciado sesión en Kaleidr pasa una breve comprobación humana antes de enviar la solicitud.
La bandeja de entrada
Solicitudes en Kaleidr Booking es un tablero con las columnas Nueva, Aceptada, Completada y Rechazada. Arrastra una tarjeta para cambiar su estado, o usa su menú Mover a. Mostrar spam muestra las solicitudes marcadas como spam. Filtra por mapa, lugar, kit y fecha, o busca por referencia, nombre, correo o lugar.
Abre una solicitud para ver los datos y las respuestas del visitante, el consentimiento que dio, el lugar en un mapa y el historial de la solicitud. Desde ahí:
| Acción | Qué hace |
|---|---|
| Aceptar, Rechazar, Marcar como completada, Marcar como spam, Reabrir | Cambia el estado. Una solicitud nueva puede aceptarse, rechazarse o marcarse como spam; una aceptada puede marcarse como completada o rechazarse; una rechazada o marcada como spam puede reabrirse. Completada es definitivo. |
| Respuesta | Envía tu respuesta al visitante por correo. Su contestación llega a tu propia dirección de correo. |
| Agregar nota | Una nota solo para tu equipo. Nunca se envía. |
| Asignar a | Asigna la solicitud a un miembro de tu organización. |
| Borrar solicitante | Elimina todas las solicitudes de esa dirección de correo en tu organización. Consulta Conservación y borrado. |
Quién puede hacer qué sigue los roles de tu organización: propietarios, administradores, miembros y lectores pueden leer las solicitudes; propietarios, administradores y miembros pueden cambiarlas, responderlas y asignarlas; propietarios y administradores gestionan la configuración, los formularios, los webhooks y las notificaciones, eliminan y borran solicitudes y las exportan como CSV.
Correo. En Configuración, Notificaciones, Avisar de nuevas solicitudes por correo envía un correo a los miembros activados en Equipo cuando llega una solicitud. El correo indica el lugar y el tipo de solicitud y enlaza con ella; no lleva ningún dato del visitante. Enviar confirmaciones envía al visitante una copia con la referencia.
Solicitudes de prueba. Una solicitud que envías tú mismo desde Studio se marca como Prueba y no cuenta para el límite de tu plan.
Consentimiento
La línea de consentimiento del formulario dice: "Acepto que tu negocio use estos datos para responder a mi solicitud. Kaleidr los trata en nombre de tu negocio.", con el nombre de tu negocio en lugar de tu negocio: el Nombre del negocio de Configuración, General, o si no el nombre de tu organización. Define el Enlace a la política de privacidad con una dirección https:// de tu propia política, y la línea enlaza a ella. La casilla empieza sin marcar, y una solicitud sin ella se rechaza. Cada solicitud guarda la versión de la línea que aceptó el visitante y cuándo.
Conservación y borrado
- Conservar solicitudes durante elimina una solicitud tras ese tiempo sin actividad: 365 días salvo que lo cambies, de 30 a 730 días. Una solicitud marcada como spam se elimina a los 30 días.
- Borrar solicitante elimina todas las solicitudes de una dirección de correo en tu organización, junto con los correos enviados sobre ellas. Úsalo cuando una persona te pida que elimines sus datos.
- Eliminar una solicitud la elimina junto con los correos enviados sobre ella.
- Cuando una persona elimina su cuenta de Kaleidr, sus solicitudes se eliminan en todas las organizaciones.
- Cuando se elimina tu organización, sus solicitudes se eliminan con ella.
Webhooks
Un webhook envía cada evento de solicitud a una dirección tuya en cuanto ocurre, para que tu sistema de reservas, tu CRM o la automatización de tu hoja de cálculo actúen sobre él. Añade uno en Kaleidr Booking en Configuración, Webhooks. Los webhooks están disponibles en Pro y Enterprise.
- La dirección debe ser
httpsen el puerto 443, y todas las direcciones a las que resuelve su nombre deben ser públicas. Cualquier otro puerto, o una dirección privada, se rechaza al guardarla y de nuevo en cada entrega. - El secreto se muestra una vez, al añadir el webhook. Rotar secreto genera uno nuevo; el anterior sigue firmando durante 24 horas para que puedas hacer el cambio.
- Enviar prueba envía un evento
webhook.test.
| Evento | Se envía cuando |
|---|---|
request.created | Un visitante envía una solicitud. |
request.status_changed | Cambia el estado de una solicitud. data.from_status contiene el anterior. |
request.replied | Alguien responde al visitante. data.reply contiene { body, created_at }. |
webhook.test | Eliges Enviar prueba. |
Cada entrega es un POST con un cuerpo JSON y estos encabezados:
| Encabezado | Valor |
|---|---|
Kaleidr-Signature | t=<unix seconds>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")> |
Kaleidr-Event-Id | El id del evento, el mismo en cada reintento. Úsalo para ignorar una repetición. |
Kaleidr-Event-Type | El evento, como en la tabla anterior. |
Kaleidr-Delivery-Attempt | De 1 a 7. |
{
"id": "8a1c2b9e-0000-4000-8000-000000000001",
"type": "request.created",
"api_version": "2026-10-22",
"created_at": "2026-10-22T15:04:05Z",
"org_id": "…",
"data": {
"request": {
"id": "…",
"ref": "K-7XQ2MD",
"kit": "venues",
"status": "new",
"place": { "name": "Sample Venue", "line": "…", "lat": 40.7411, "lng": -73.9897 },
"requester": { "name": "…", "email": "…", "phone": null, "locale": "en", "signed_in": false },
"fields": { "kind": "reservation", "date": "2026-10-30", "time": "19:00", "party_size": 4 },
"message": "…"
}
}
}
Una solicitud sobre un lugar del chat cuya dirección no se encontró en los datos de direcciones propios de Kaleidr tiene place.lat y place.lng con valor null.
Verificar la firma
Verifica el cuerpo sin procesar antes de analizarlo, y rechaza una marca de tiempo de más de cinco minutos. Durante una rotación, el encabezado lleva un segundo v1=, firmado con el secreto anterior; acepta cualquiera de los dos.
import hashlib, hmac, time
def verify(header: str, secret: str, body: bytes, tolerance: int = 300) -> bool:
parts = [p.split("=", 1) for p in header.split(",")]
t = next((v for k, v in parts if k == "t"), "")
if not t.isdigit() or abs(time.time() - int(t)) > tolerance:
return False
expected = hmac.new(secret.encode(), f"{t}.".encode() + body, hashlib.sha256).hexdigest()
return any(k == "v1" and hmac.compare_digest(v, expected) for k, v in parts)
Prueba tu código con este vector:
| Entrada | Valor |
|---|---|
| secreto | whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw |
t | 1761091200 |
| cuerpo | {"id":"8a1c2b9e-0000-4000-8000-000000000001","type":"webhook.test"} |
v1 | 3e55a2f93ac990282b95fd9140f8290ffaddc5d41969831e4234b164d613bd72 |
Entrega y reintentos
- Responde con cualquier estado 2xx en 10 segundos. No se siguen redirecciones.
- Al menos una vez. Una entrega que falla se reintenta tras 1 minuto, 5 minutos, 30 minutos, 2 horas, 6 horas y 24 horas: siete intentos en unas 32 horas. El mismo evento puede llegar dos veces; ignora un
Kaleidr-Event-Idque ya hayas visto. - El cuerpo es la solicitud tal como está al enviarse, así que un reintento lleva su estado más reciente. Una solicitud borrada entretanto no se envía.
- Diez entregas seguidas que fallan en todos sus intentos desactivan el webhook. Volver a activarlo reinicia el recuento.
- Entregas, en cada webhook, muestra los intentos de los últimos 30 días con su estado, código de respuesta y tiempo, sin los cuerpos. Reintentar vuelve a enviar una fallida.
Límites
| Límite | Free | Pro | Enterprise |
|---|---|---|---|
| Solicitudes al mes | 50 | 1.000 | Según tu acuerdo |
| Webhooks | Ninguno | 5 | Según tu acuerdo |
Un mes es el período de facturación de tu organización. Las solicitudes de prueba no cuentan. Al alcanzar el límite, las solicitudes nuevas se rechazan hasta el siguiente período, y el formulario muestra en su lugar el teléfono o el enlace del lugar cuando lo tiene.