Configura tu calendario y evita el double-booking
Esta guía cubre el corazón de ConvertCore AI: el sistema de calendario. Si la lees completa vas a entender por qué dos clientes nunca van a poder agendar al mismo profesional a la misma hora, aunque vengan por canales distintos.
Si vienes de GoHighLevel y has perdido citas por double-booking, esta es la sección que te va a hacer respirar.
Modelo mental antes de tocar nada
ConvertCore AI organiza el calendario en cinco capas. Entiéndelas y todo lo demás es trivial:
- Workspace. Tu negocio.
- Categorías. Etiquetas con color para clasificar tipos de servicio. No determinan disponibilidad, solo color y orden visual.
- Service calendars. Una agenda con un grupo de profesionales (staff pool) y una lista de servicios que ese grupo puede dar.
- Servicios. Cada cosa que se reserva: nombre, duración, categoría, opcional precio. Vive dentro de un service calendar.
- Working hours. Horario de atención por profesional, no por calendar. Esto es la clave del anti double-booking.
Un mismo profesional puede estar en varios service calendars. Cuando recibe una cita en uno, queda automáticamente bloqueado en todos los demás. Eso es el anti double-booking.
Paso 1. Crea tus categorías color-coded
Ve a Settings → Categories y pulsa Nueva categoría. Cada categoría tiene:
- Nombre. Aparece en filtros, badges y el widget público.
- Color. Se ve en el calendar como dot, en cards como border-left, en filter chips como background.
- Orden. Define el orden en filtros y en el widget.
Ejemplo: Blossom Spa
Para un spa estético, una configuración que funciona:
| Categoría | Color |
|---|---|
| Valoración | Rosa |
| Facial | Azul |
| Corporal | Amarillo |
| Relajación | Verde |
| Bloqueo / personal | Gris |
Cuando entras al calendar y ves una grilla de citas, los colores te dejan saber a un golpe de vista qué tipo de servicio está corriendo y en qué bloque del día están concentradas las consultas.
Recomendación: empieza con 3 a 5 categorías. Más de 7 colores es ruido visual. Si tienes 12 servicios distintos, agrúpalos por familia.
Paso 2. Define las working hours por staff
Ve a Settings → Working Hours. Verás la lista de miembros del workspace. Para cada uno define:
- Días que trabaja: lunes a domingo, marca/desmarca cada uno.
- Bloques de horario por día: puedes tener varios bloques (ej. 9:00–13:00 y 15:00–19:00 con almuerzo en medio).
- Excepciones: vacaciones, día libre puntual, horario distinto un sábado específico.
Las working hours de un profesional aplican a todos los service calendars en los que está. No las defines por calendar.
Por qué: si Fabi trabaja lunes a viernes 9:00–18:00, eso es verdad esté ofreciendo facial o valoración. La disponibilidad es de la persona, no del servicio.
Paso 3. Crea tu primer service calendar
Ve a Settings → Service Calendars y pulsa Nuevo calendar. Configura:
- Nombre. Lo que el cliente ve cuando elige "tipo de cita". Ejemplo:
Valoración,Servicios spa,Consulta médica. - Staff pool. Los profesionales que pueden atender este calendar. Pueden ser uno solo o varios.
- Categoría default (opcional). Aplica a todos los servicios del calendar a menos que se sobrescriba.
- Color default (opcional). Si no eliges, hereda del de la categoría.
- Asignación:
cualquiera disponible(el sistema elige en orden, balanceando carga) oel cliente elige(el widget muestra a los disponibles para que el cliente seleccione).
Ejemplo Blossom Spa: dos calendars complementarios
Calendar A — Valoración
- Staff pool: solo Fabi (la owner).
- Servicios:
Valoración inicial, 30 minutos, categoría Valoración (rosa).
- Lógica: solo Fabi hace valoraciones porque es quien define el plan de tratamiento.
Calendar B — Servicios spa
- Staff pool: Fabi + Doris.
- Asignación:
cualquiera disponible. - Servicios:
Limpieza facial, 60 minutos, categoría Facial (azul).Tratamiento corporal, 90 minutos, categoría Corporal (amarillo).Sesión de relajación, 60 minutos, categoría Relajación (verde).
Con esto Fabi aparece en los dos calendars. Doris solo en el segundo.
Paso 4. Cómo funciona el anti double-booking
Este es el momento crítico.
Imagina que son las 10:00 de la mañana y pasa esto en paralelo:
- Cliente 1 entra al widget público y agenda una
Limpieza facialcon Fabi a las 11:00 AM. - Cliente 2 llama al spa y la recepcionista intenta agendar una
Valoracióncon Fabi también a las 11:00 AM, desde el calendarValoración.
ConvertCore AI bloquea la segunda reserva. Aunque sea un calendar distinto, aunque sea otro tipo de servicio, Fabi no puede estar en dos lugares a la vez.
La validación corre en tres capas:
- A nivel de UI mostrando el slot en gris en el widget y en el calendar interno.
- A nivel de API rechazando con
409 Conflictcualquier intento de crear o mover una cita que solape con otra del mismo staff. - A nivel de base de datos con un constraint que hace imposible insertar dos citas solapadas para un mismo
staff_id. Es la última línea de defensa: aunque alguien forzara la API, la DB rechaza.
Esto es lo que GoHighLevel no hace bien. En GHL los calendarios son silos, y un staff puede aparecer en dos a la vez. ConvertCore AI invierte el modelo: el staff es la unidad de disponibilidad, no el calendar.
Paso 5. Vista del calendar interno
Calendar en el sidebar te muestra todas las citas del workspace. Puedes:
- Cambiar vista: día, semana, mes.
- Filtrar por staff: ver solo las citas de Fabi, solo las de Doris, o ambos.
- Filtrar por categoría: solo faciales, solo valoraciones, etc.
- Filtrar por service calendar: cuando tienes muchos.
- Crear cita rápido: click sobre cualquier slot vacío.
- Mover cita: drag and drop. La validación anti double-booking corre al soltar.
- Bloquear horario: arrastra sobre slots vacíos y elige
Bloqueopara que ese rango no esté disponible para reservas.
Color en cards
Cada cita en el calendar muestra:
- Border-left del color de la categoría.
- Dot del color del staff (cuando filtras por "todos").
- Tag del nombre del servicio.
Casos especiales
Vacaciones de un profesional
Ve a Settings → Working Hours → [Staff] → Excepciones y agrega un rango de fechas marcado como No disponible. Las citas existentes en ese rango quedan resaltadas en rojo y necesitas reasignar manualmente. ConvertCore AI no las cancela solo.
Cambiar la duración de un servicio
Cambia el valor en el service calendar. Las citas existentes mantienen su duración original. Solo las reservas nuevas usan la nueva.
Cliente quiere reagendar
Desde la cita en el calendar, click derecho → Reagendar. Se abre el flujo del widget para ese cliente y elige otro slot. La cita vieja se cancela automáticamente y se notifica al staff.
Bloqueo manual recurrente
Calendar → Nueva cita → Bloqueo recurrente. Útil para almuerzos diarios, junta semanal, día de inventario al mes.
Errores frecuentes
"Configuré las working hours pero el widget no muestra horarios." Revisa que el staff esté incluido en el staff pool del calendar. Si no está, no aparece. Working hours solas no bastan.
"Creé un calendar con dos staff pero solo aparece uno." Pasa cuando uno de los dos no tiene working hours configuradas. Working hours vacías = staff invisible.
"Las citas creadas internamente no validan double-booking." Sí validan. Si pasa, abre un ticket: es bug y queremos saberlo.
"¿Puedo borrar una categoría con servicios asignados?" No. Primero reasigna los servicios a otra categoría o bórralos.
Checklist de cierre
Antes de salir de Settings, verifica:
- Tienes al menos 3 categorías color-coded.
- Cada miembro del staff tiene working hours definidas.
- Cada service calendar tiene al menos un servicio.
- El staff pool de cada calendar tiene al menos un miembro.
- Probaste reservar una cita desde el calendar interno y se ve con el color correcto.
Cuando los cinco estén en verde, estás listo para embeber el widget de reservas en tu sitio.