OptimoCMS Docs
Volver al resumen

Sistema de citas

Citas y reservas en línea: servicios, disponibilidad, personal, sucursales, lista de espera, CRM, panel del personal, recordatorios, iCal, magic links y analítica.

¿Qué es el sistema de citas?

El sistema de citas es un widget que activas por sitio web. Los visitantes pueden reservar citas en línea: eligen un servicio, una fecha, un horario disponible y rellenan sus datos. El sistema previene automáticamente las reservas dobles y calcula los horarios disponibles basándose en tus horarios de apertura. Toda la lógica de reservas se ejecuta en el servidor (Cloud Functions). El cliente nunca puede crear reservas directamente en la base de datos — esto previene fraude y condiciones de carrera.

Activar el sistema de citas

Cómo activar el sistema de citas: 1. Ve a Configuración → Widgets 2. Activa "Booking" 3. Después de la activación, las páginas de administración aparecen en el menú lateral 4. El bloque BookingWidget estará disponible en el Page Builder
Consejos
  • Después de la activación puedes crear servicios y configurar la disponibilidad inmediatamente.

Modelo de datos (técnico)

El sistema de citas almacena cuatro tipos de datos por sitio: • Servicios (nombre, duración, precio, activo) • Personal (nombre, servicios vinculados, activo) • Horario semanal (día, inicio, fin, miembro opcional) • Citas (servicio, fecha, horario, datos del cliente, estado) Los servicios y la disponibilidad son visibles públicamente en tu sitio web. Las citas se crean únicamente en el servidor.
Consejos
  • Las citas se optimizan automáticamente para consultas rápidas por día.

Gestionar servicios

Un servicio es lo que ofreces (ej. "Corte de pelo", "Consulta 30 min", "Masaje 60 min"). Gestionar vía Citas → Servicios: • Nombre — El nombre que ven los visitantes • Duración — En minutos (determina el tamaño del horario) • Precio — Opcional, se muestra a los visitantes • Depósito — Monto opcional vía Stripe • Activo — Interruptor on/off Solo los servicios activos son visibles en el BookingWidget.
Consejos
  • La duración determina el tamaño de los horarios. Un servicio de 30 minutos crea horarios de 30 minutos.

Configurar disponibilidad

Vía Citas → Disponibilidad configuras un horario semanal: • Por día de la semana: hora de inicio y hora de fin • Opcionalmente por miembro del personal (si están configurados) • Días sin horarios = cerrado El sistema calcula automáticamente los horarios disponibles basándose en este plan menos las citas existentes.
Nota
  • Los cambios en la disponibilidad se aplican inmediatamente. Las citas existentes no se ajustan automáticamente.

Cómo se calculan los horarios

El Availability Engine calcula los horarios disponibles en el servidor: 1. Leer la disponibilidad para el día elegido + miembro del personal opcional 2. Generar horarios basados en la duración del servicio (ej. cada 30 min) 3. Obtener citas existentes para ese día (estado ≠ cancelado) 4. Filtrar los horarios ocupados 5. Devolver los horarios disponibles Las citas canceladas no bloquean horarios — esos horarios vuelven a estar disponibles.
Consejos
  • Los horarios se calculan en tiempo real. Si alguien acaba de reservar, el siguiente visitante ya no verá ese horario.

Prevención de doble reserva

El sistema previene automáticamente las citas dobles: 1. Al crear una cita, la disponibilidad se verifica nuevamente 2. Si el horario ya está ocupado → error "Horario ya no disponible" 3. Solo si el horario está libre se confirma la cita Esto garantiza que incluso con solicitudes simultáneas, dos citas nunca terminen en el mismo horario.
Consejos
  • El rate limiting también protege contra spam: máx. 30 solicitudes de horarios/min y 5 citas/min por IP.

Personal (opcional)

Puedes agregar miembros del personal vía Citas → Personal: • Nombre — Se muestra si activas "Mostrar personal" en el widget • Servicios vinculados — Qué servicios realiza este miembro • Activo — Interruptor on/off Los visitantes pueden elegir con qué miembro del personal reservar. La disponibilidad se calcula por miembro.
Consejos
  • El personal es opcional. Sin personal, los visitantes simplemente reservan según la disponibilidad general.

BookingWidget en tu sitio web

El BookingWidget es un bloque que colocas en una página a través del Page Builder: 1. Abre una página en el Page Builder 2. Busca "BookingWidget" en la lista de bloques (categoría: Widgets) 3. Arrástralo a tu página 4. Configura: título, color de acento, diseño (compacto/completo), mostrar personal En el sitio en vivo, los visitantes siguen los pasos: elegir servicio → elegir fecha (14 días adelante) → elegir horario → rellenar datos → confirmación. En el editor ves una vista previa ficticia sin llamadas API reales. En el sitio publicado el widget funciona con datos reales.
Consejos
  • El widget es responsive y funciona en móvil (375px).
  • Cuando no hay horarios disponibles, el visitante ve un mensaje claro.

Gestionar citas

Vía Citas → Citas ves todas las citas: • Filtrar por fecha o estado • Estados: confirmado, pendiente, pago pendiente, cancelado, completado • Acciones: confirmar o cancelar por cita Al cancelar, el horario se libera para otros visitantes.

Depósito Stripe (opcional)

Puedes requerir un depósito por servicio a través de Stripe: 1. Ve a Citas → Servicios 2. Edita un servicio 3. Activa "Depósito requerido (opcional)" 4. Establece el monto del depósito Al reservar, el visitante es redirigido a Stripe Checkout. La cita obtiene el estado "pago pendiente". Después del pago: confirmado automáticamente. Sin pago en 30 minutos: cancelado automáticamente (mediante una función programada que se ejecuta cada 10 minutos). ¿A dónde va el dinero? • Se puede vincular una cuenta de Stripe por sitio a través de Configuración → Pagos → Conectar Stripe • Con Stripe Connect: el dinero va directamente a la cuenta del cliente, menos la tarifa de servicio • Sin Stripe Connect: el dinero va a la cuenta de la plataforma
Nota
  • Stripe debe estar configurado en el sitio web (Configuración → Pagos) antes de que funcionen los depósitos.
  • La agencia vincula la cuenta de Stripe del cliente final por sitio a través de Configuración → Pagos.

Configuración de citas

A través de Citas → Configuración, configura opciones avanzadas: • Horizonte de reserva — Hasta cuántos días por adelantado pueden reservar los clientes (7, 14, 30, 60 o 90 días). Por defecto: 14 días. • Margen entre citas — Tiempo adicional entre citas consecutivas (0, 5, 10, 15 o 30 minutos) • Intervalo de horarios — Intervalo entre horas de inicio disponibles (15, 30 o 60 minutos) Con más de 14 días, el BookingWidget muestra automáticamente un calendario mensual en lugar de botones de fecha.
Consejos
  • El margen es útil cuando necesitas tiempo de limpieza entre citas.
  • Los días cerrados y completos se muestran en gris en el calendario.

Sucursales

Con sucursales puedes gestionar múltiples ubicaciones dentro de un mismo sitio web: • Nombre, dirección, ciudad, teléfono por sucursal • Cada sucursal tiene su propio personal, disponibilidad y citas • El BookingWidget muestra un paso de selección de sucursal con 2+ sucursales activas • Con 1 sucursal se selecciona automáticamente A través de Citas → Sucursales gestionas tus ubicaciones.
Consejos
  • Con 0 sucursales el sistema funciona como antes — sin paso de sucursal en el widget.
  • El personal y la disponibilidad se configuran por sucursal.

Gestión de no-shows (Citas)

El sistema detecta automáticamente los no-shows en las citas: • No-show automático — Si un cliente no se presenta dentro del tiempo establecido después de la hora de la cita • Anulación por personal — El personal puede cambiar un no-show de vuelta a 'confirmado' • Reapertura — Una cita cancelada puede ser reabierta Configurable por sucursal: no-show automático on/off y temporizador en minutos.
Consejos
  • Al producirse un no-show, el horario liberado se ofrece a la lista de espera (si está activa).

Gestión de walk-ins (Citas)

A través del panel del personal, el personal puede registrar walk-ins: • Elegir un servicio y horario • El walk-in se crea inmediatamente sin validación en línea • Los walk-ins son visibles en el resumen de citas con fuente 'walk-in' Los walk-ins ignoran el horizonte de reserva — siempre se pueden crear para hoy.
Consejos
  • Los walk-ins aparecen inmediatamente en el panel de administración y el calendario del personal.

Lista de espera (Citas)

Cuando todos los horarios están ocupados, el cliente puede inscribirse en la lista de espera: 1. Cliente quiere reservar → todo ocupado → "¿Inscribirse en la lista de espera?" 2. Cliente completa sus datos, elige preferencia horaria 3. Cuando se libera un horario → correo con enlace aceptar/rechazar 4. Cliente acepta → cita creada 5. Sin respuesta → oferta caduca, siguiente en la fila Configuración por sucursal: • Lista de espera on/off • Modo: automático o manual • Tiempo de validez de la oferta (por defecto: 2 horas)
Consejos
  • En modo automático, los espacios se ofrecen inmediatamente al producirse una cancelación o no-show.
  • Los clientes en lista de espera reciben 3 correos: confirmación, espacio ofrecido y opcionalmente caducado.

Confirmación por correo del cliente (Doble Opt-in)

Opcionalmente puedes requerir que los clientes confirmen su cita por correo: 1. Activa 'Confirmación del cliente requerida' en la configuración de la sucursal 2. Establece el tiempo de caducidad (1, 2, 4, 12 o 24 horas) Después de la reserva, el cliente recibe un correo con un botón de confirmación. Sin confirmación dentro del tiempo establecido, la cita se cancela automáticamente.
Nota
  • Las citas no confirmadas se cancelan automáticamente. Informa a tus clientes sobre esto.

Panel del personal con PIN (Citas)

El panel del personal es una página protegida en tu sitio web donde el personal puede gestionar citas sin iniciar sesión en el CMS. Funcionalidades: • Agenda diaria con todas las citas y estados • Crear walk-in con 1 clic • Cambiar estado (confirmar, completar, no-show, anular) • Consultar lista de espera • Bienvenida personalizada: se muestra el nombre del miembro del personal después de iniciar sesión Acceso mediante un código PIN de 4-6 dígitos por miembro del personal. La duración de la sesión es configurable. A través de Citas → Acceso del personal configuras: • Panel on/off y duración de sesión • Añadir miembros del personal con nombre y PIN personal • Activar/desactivar o eliminar por miembro • Compartir código QR y enlace para instalar la App Staff
Consejos
  • Después de 5 intentos de PIN incorrectos por minuto, la IP se bloquea temporalmente.
  • Cada miembro del personal tiene su propio PIN — así sabes quién está conectado.
  • La página del personal se puede instalar como aplicación PWA independiente en una tablet. Escanea el código QR en la página de Acceso del personal.

Formulario: Notas, Intake y Marketing Opt-in

El formulario de citas admite campos adicionales: • Notas — Campo de texto libre para solicitudes especiales • Preguntas de intake — Preguntas adicionales opcionales configurables por servicio • Opt-in de marketing — Casilla para consentimiento de newsletter/marketing Todos los campos adicionales se guardan con la cita y son visibles en el panel de administración.
Consejos
  • Las preguntas de intake son útiles para la preparación de citas (ej. '¿Cuáles son sus síntomas?').

CRM — Gestión de clientes (Citas)

El sistema de citas mantiene automáticamente perfiles de clientes: • Creado automáticamente en la primera cita (basado en dirección de correo) • Historial de visitas — Todas las citas con estado y fecha • Niveles de fidelidad — Calculados automáticamente según el número de visitas • Etiquetas y notas — Añadidas manualmente para contexto adicional • Consentimiento de marketing — Permiso para marketing • Contador de no-shows A través de Citas → Clientes consultas y gestionas la lista de clientes.
Consejos
  • Los perfiles se actualizan automáticamente después de cada cita.
  • Niveles de fidelidad: 1 visita = nuevo, 2-4 = recurrente, 5-9 = habitual, 10+ = VIP.

iCal y Añadir al calendario (Citas)

Después de una cita, el cliente recibe opciones de calendario: • Archivo adjunto .ics en el correo de confirmación • Botón de Google Calendar • El archivo .ics se abre en la app de calendario predeterminada (Apple Calendar, Outlook, etc.) La cita contiene: nombre del servicio, fecha, hora, ubicación y opcionalmente miembro del personal.
Consejos
  • El archivo adjunto .ics se genera automáticamente — no requiere configuración.

Recordatorios automáticos y correos de estado (Citas)

El sistema envía correos automáticamente: Recordatorios: • 24 horas antes (configurable por sucursal) • Opcionalmente 1 hora antes Correos de estado: • Cancelación por admin/personal → el cliente es informado • Confirmación por admin → correo de confirmación • Marcado como no-show → correo opcional al cliente Todos los correos usan el diseño de marca e incluyen un magic link para autoservicio.
Consejos
  • Los recordatorios se pueden activar/desactivar por sucursal.
  • El recordatorio de 1 hora está desactivado por defecto.

Vista de calendario del personal (Agenda admin)

El calendario del personal ofrece una vista visual de todas las citas: • Vista diaria — Línea de tiempo con todas las citas por miembro del personal • Vista semanal — Resumen de toda la semana • Pausas — Los tiempos bloqueados se muestran como bloques grises • Disponibilidad — Visible qué horarios aún están libres Haz clic en una cita para ver detalles o cambiar el estado. Filtra por sucursal y miembro del personal.
Consejos
  • El calendario también es accesible a través del panel del personal en el sitio en producción.

Analítica CRM + Exportación (Citas)

El panel CRM combina métricas CRM con analítica específica de citas: Tarjetas CRM (8): • Total de clientes, nuevos clientes, tasa de retención, clientes VIP • No-shows repetidos, opt-ins de marketing, visitas promedio, clientes inactivos Tarjetas de citas (6): • Ingresos del mes — Suma de depósitos/pagos • Servicio más popular — Servicio más reservado • Día más ocupado — Día de la semana con más citas • Horario más ocupado — Hora con más citas • Prom. citas/día — Promedio de 30 días • Tasa de ocupación — Horarios reservados / horarios disponibles × 100% Exportación CSV con plantillas de segmento: VIP, recuperación, habituales, filtros personalizados.
Consejos
  • La analítica se almacena en caché durante 1 hora para cargas rápidas.
  • Usa la exportación para campañas de marketing dirigidas a segmentos específicos de clientes.

Términos y condiciones

Requiere que los clientes acepten tus términos al reservar: 1. Ve a Reservas → Configuración → Términos y condiciones 2. Activa 'Términos obligatorios' 3. Introduce tu texto de términos (o pega una URL) 4. Guarda Aparece una casilla de verificación obligatoria durante la reserva.
Consejos
  • Puedes enlazar a una página de términos separada.
  • La aceptación se guarda con marca de tiempo (compatible con RGPD).

Cargos por no presentarse (Reserva)

Cobra una tarifa por no presentarse: 1. Ve a Reservas → Configuración 2. Activa 'Cargo por no presentarse' 3. Establece el importe (fijo o porcentaje del precio del servicio) Cuando hay una ausencia, se crea automáticamente un cargo en Stripe si el cliente proporcionó un método de pago.
Nota
  • Los cargos por no presentarse requieren una conexión Stripe activa.

Sincronización de calendario (Google/Outlook/Apple)

Sincroniza las reservas con calendarios externos: 1. Ve a Reservas → Sincronización de calendario 2. Elige un proveedor: Google Calendar, Microsoft Outlook o Apple Calendar 3. Completa la autorización OAuth 4. Selecciona qué calendario usar Después de conectar: • Las nuevas reservas aparecen automáticamente en el calendario externo • Los horarios ocupados en el calendario externo bloquean automáticamente los slots • Las cancelaciones se sincronizan bidireccionalmente
Consejos
  • Puedes conectar un calendario separado por miembro del personal.
  • La sincronización se ejecuta cada 5 minutos.

Suscripciones (Reserva)

Ofrece citas recurrentes mediante suscripciones: 1. Ve a Reservas → Suscripciones 2. Crea una suscripción: nombre, frecuencia (semanal/mensual), precio, servicio vinculado 3. Los clientes eligen una suscripción al reservar Stripe gestiona la facturación periódica automática.
Consejos
  • Ideal para peluqueros, coaches y terapeutas con clientes habituales.
  • Al cancelar, las citas existentes siguen siendo válidas hasta el final del período.

Caja POS (Reserva)

Usa la caja registradora integrada para pagos presenciales: 1. Ve a Reservas → Configuración POS 2. Activa POS y conecta un Stripe Terminal 3. En una reserva: haz clic en 'Cobrar' El POS soporta: • Pagos con tarjeta vía Stripe Terminal • Registro manual de pagos en efectivo • Impresión de recibos vía Web Serial API
Consejos
  • El POS también funciona en el panel del personal en una tablet.
  • Los recibos se formatean automáticamente con tu marca.

Llámanos