Saltar al contenido principal

Resumen

Bookings & Schedules es el sistema de agendamiento de citas de CXF. Un host —un Contact, un User o un Content Instance— publica su disponibilidad, ofrece uno o más tipos de evento reservables y acepta citas. Los conflictos de slot, las duraciones, los buffers, la frecuencia y la ventana hacia el futuro se aplican automáticamente. Para el modelo mental, consulta Conceptos básicos. Se compone de tres objetos conectados:
  • Schedule — el calendario de disponibilidad del host (horas semanales, overrides por fecha, timezone).
  • Booking Template — un tipo de evento reservable sobre un schedule (duraciones, título, límites).
  • Booking — una cita real, opcionalmente con invitados.

Dónde encontrarlo

Bookings & Schedules es un feature solo de API — no hay una pantalla de administración dedicada. Lo consumen los front-ends de booking y de funnels, y las integraciones, a través de la API: obtener los slots disponibles de un host, crear un booking, y dejar que las personas gestionen sus propios bookings.

Schedule

Un schedule es el calendario de disponibilidad de un host.
PropertyTipoRequeridoDescripción
titlestringNombre del schedule.
slugstringIdentificador único.
descriptionstringNoDescripción opcional.
object_type / object_idreferenceEl host dueño del schedule (un Contact, User o Content Instance).
timezonestringEl timezone de referencia para la disponibilidad.
bookings_per_slotnumberNoCuántos bookings pueden compartir un slot (default 1).
availabilityobjectHoras semanales: cada día de la semana → una lista de { start_time, end_time } (HH:MM).
overridesarrayNoExcepciones por fecha: { date, start_time?, end_time? }. Omite ambas horas para un bloqueo de día completo.

Booking Template

Un booking template es un tipo de evento reservable adjunto a un schedule.
PropertyTipoRequeridoDescripción
titlestringNombre del tipo de evento.
slugstringIdentificador único.
descriptionstringNoDescripción opcional.
schedule_idreferenceEl schedule contra el que se reserva este tipo de evento.
default_booking_titlestringTítulo de los bookings creados — un template Mustache.
default_durationnumberDuración por defecto, en minutos.
durationsarrayNoDuraciones permitidas en minutos (default [default_duration]).
limits.future_bookingsnumberNoCuántos días hacia adelante se permite un booking.
limits.buffer_time.before_booking / .after_bookingnumberNoMinutos de buffer alrededor de cada booking.
limits.frequencyobjectNoMáximo de bookings por day / week / month / year, por host.
default_booking_title es un template Mustache — puede referenciar duration, booking_template, schedule y scheduler (el nombre, email y teléfono del host).

Booking

Un booking es una cita real.
PropertyTipoRequeridoDescripción
template_idreferenceEl tipo de evento que se reserva.
object_type / object_idreferenceEl host que se reserva (un Contact o User).
titlestringNoSe completa desde el template si se deja vacío.
descriptionstringNoDescripción opcional.
durationnumberDuración en minutos — debe ser una de las duraciones permitidas del template.
timezonestringSe usa para interpretar starts_at.
starts_atdatetimeHora de inicio (guardada en UTC).
ends_atdatetimeAutostarts_at + duration.
statusenumAutopending (default), confirmed, canceled, completed o missed.
guestsarrayNoInvitados opcionales (Contacts o Users).

Disponibilidad y slots

Cuando un front-end pide la disponibilidad de un host, CXF devuelve los slots de tiempo libres. Toma las horas de cada día (el override de la fecha si existe, si no las horas semanales de ese día), quita el tiempo ocupado por bookings existentes (expandido por los buffers del template), y ofrece slots de la duración elegida. Un slot desaparece cuando alcanza bookings_per_slot. Los horarios son timezone-aware: los bookings se guardan en UTC y la respuesta ya viene convertida al timezone solicitado.

Reglas de booking

Cada booking se valida automáticamente; una solicitud que rompe una regla se rechaza:
  • Disponibilidad — debe caer dentro de las horas del día, en un solo día.
  • Overrides — no puede caer en un bloqueo de día completo ni fuera de las horas de un override.
  • Duración — debe ser una de las duraciones permitidas del template.
  • Solapamiento y buffers — respeta bookings_per_slot, contando el buffer alrededor de los bookings existentes.
  • Ventana futura — dentro de limits.future_bookings días.
  • Frecuencia — dentro de limits.frequency para el host.

Status e invitados

  • Un booking pasa por pending → confirmed, y puede terminar como canceled, completed o missed. Solo los bookings pending y confirmed ocupan un slot — los demás lo liberan.
  • Un booking puede llevar una lista de invitados (Contacts o Users). A través de la API de contacto, las personas pueden listar, cancelar y agregar invitados a sus propios bookings.

Seeds

Bookings & Schedules no está soportado actualmente en los Seeds.

Gobernanza y permisos

  • Un Super admin o un Master puede crear, editar y eliminar por completo los schedules, booking templates y bookings.
  • Un usuario Journey Manager puede modificarlos cuando su JM App está configurada para permitirlo.

Acceso por API

Los schedules, booking templates y bookings tienen CRUD completo. Un endpoint de availability por host devuelve los slots libres, y una API de contacto permite a las personas crear un booking y gestionar los propios (cancelar, agregar invitados). Consulta la API reference.

Relacionado

Contacts

Un host común para schedules y bookings.

Engagement Funnels

Los flujos de booking suelen construirse dentro de funnels.