> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendario integrado

> El motor de programación integrado de Famulor para reservar citas durante la llamada, sin cuenta de calendario externa

Famulor incorpora un sistema de programación completo propio: tipos de evento con su propia disponibilidad semanal, una página pública de reserva incrustable, sincronización opcional con un calendario real y un webhook firmado en cada reserva. Los asistentes reservan contra él durante la llamada igual que con cualquier otro proveedor. Los proveedores externos — Cal.com, Calendly, Acuity Scheduling, eTermin, HighLevel — están en [Calendario y reservas](/es/assistants/calendar-booking).

## El calendario nativo

**Native** es el motor de reservas propio de Famulor — construido directamente en la plataforma en lugar de ser un producto de terceros al que te das de alta, y aparece junto al resto de proveedores de calendario en [Proveedores de un vistazo](/es/assistants/calendar-booking#proveedores-de-un-vistazo). No hay cuenta externa, ni clave de API, ni pantalla de consentimiento OAuth: define un [tipo de evento](#el-motor-de-reservas-integrado) con su propia disponibilidad semanal y queda listo de inmediato para asignarlo a un asistente.

<Note>
  Native funciona con la misma función de plan **Calendar integrations** que el resto de proveedores que aparecen en [Proveedores de un vistazo](/es/assistants/calendar-booking#proveedores-de-un-vistazo) — no es un complemento de pago aparte por encima de Cal.com o Calendly. Tu plan igualmente tiene que incluir esa función antes de poder crear cualquier tipo de evento o integración, también los nativos. Consulta [Restricción por plan](#restricción-por-plan).
</Note>

Un tipo de evento nativo asignado recibe las mismas herramientas `check_availability` y `book_appointment` que cualquier otra integración, sin ninguna API de terceros de por medio: los huecos salen directamente de las propias ventanas de disponibilidad, los márgenes y las reglas de aviso del tipo de evento. Native es también uno de los dos únicos proveedores —el otro es Acuity— cuyos asistentes pueden buscar, cancelar y reprogramar una cita existente, y el único de los dos que no necesita ninguna cuenta externa para ello. Consulta [Asignar a un asistente](/es/assistants/calendar-booking#asignar-a-un-asistente) para ver la lista completa de herramientas.

### Conexiones de calendario

Native funciona de forma independiente solo con sus propias reglas de disponibilidad semanal, o puedes conectar un calendario real para que se respeten sus horarios ocupados y —en la mayoría de los tipos de conexión— las reservas confirmadas se escriban de vuelta en él. Conecta Google Calendar y Outlook en **Booking → Integrations**; añade CalDAV o un feed ICS en **Booking → Event types → Calendars**. En cualquier caso, elige la conexión en el propio campo **Calendars** del tipo de evento para usarla de verdad.

| Conexión                    | Qué hace                                                                                                                                                                                                                   | Configuración                                                                                                                                                                                                                                                      |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Google Calendar**         | Libre/ocupado, además crea y elimina la reserva como evento de calendario con invitación a un participante                                                                                                                 | Conexión OAuth (una vez)                                                                                                                                                                                                                                           |
| **Outlook / Microsoft 365** | Libre/ocupado, además crea y elimina la reserva como evento de calendario con invitación a un participante                                                                                                                 | Conexión OAuth (una vez)                                                                                                                                                                                                                                           |
| **CalDAV**                  | Libre/ocupado, además crea y elimina la reserva como evento de calendario — sin invitación a participantes por parte del servidor, así que el invitado depende del propio correo de confirmación ICS del motor de reservas | URL del servidor + usuario + contraseña de aplicación — valores predefinidos para **Apple iCloud**, **Fastmail** y **Nextcloud**, además de **Custom** para Zimbra, Baïkal o cualquier otro servidor CalDAV; la colección de calendario se detecta automáticamente |
| **ICS feed**                | Solo libre/ocupado — de solo lectura, nunca se escribe nada de vuelta                                                                                                                                                      | Una URL secreta de ICS/iCal (se acepta `webcal://`), por ejemplo la «Dirección secreta» de Google Calendar o «Publicar calendario» de Outlook                                                                                                                      |

## El motor de reservas integrado

Crea tipos de evento en **Booking** dentro del panel (o mediante la API/MCP):

* **Name, slug, duration** — el slug es único dentro del espacio de trabajo y pasa a formar parte de la URL de la página pública de reserva que se muestra en el editor.
* **Weekly availability** — franjas horarias por día de la semana en la zona horaria del tipo de evento, por ejemplo, de lunes a viernes de 09:00 a 17:00.
* **Buffers & rules** — margen antes y después de cada reserva, aviso mínimo, con cuánta antelación pueden reservar los clientes, e incremento de los huecos.
* **Calendar sync** (opcional) — vincula un [calendario conectado](#conexiones-de-calendario). Las conexiones de Google, Outlook y CalDAV restan sus horarios ocupados de los huecos ofrecidos y envían de vuelta las reservas confirmadas como eventos de calendario; en Google y Outlook, el invitado se añade como participante, así que el proveedor también envía su propia invitación. Un feed ICS solo aporta horarios ocupados.
* **Host confirmation** — el invitado siempre recibe un correo de confirmación con una invitación ICS. Una segunda copia va al anfitrión: la cuenta de Add-to-calendar, un correo de organizador personalizado, o el propietario del tipo de evento si no hay ningún calendario seleccionado.

### Página pública de reserva e incrustación

Cada tipo de evento activo tiene una página pública con la marca del tenant en `https://<your-domain>/book/{workspace}/{slug}` — no requiere iniciar sesión. Su botón **Public link & embed code** en la lista de tipos de evento copia un fragmento de iframe ya preparado para tu propio sitio, junto con el pequeño script que ajusta el tamaño del marco a su contenido. Incrústalo donde quieras:

```html theme={null}
<iframe src="https://<your-domain>/book/acme/intro-call"
        style="width:100%;min-height:640px;border:0" loading="lazy"></iframe>
```

Los visitantes eligen un hueco en su propia zona horaria, introducen nombre y correo, y reciben un **correo de confirmación con una invitación de calendario ICS** más un enlace de cancelación. El anfitrión configurado recibe un correo **New booking** correspondiente. Si dos personas eligen el mismo hueco a la vez, solo la primera reserva tiene éxito y al otro visitante se le pide elegir otra hora.

### Reservar desde llamadas

Conecta el motor de reservas integrado a un asistente para hacer reservas durante la llamada en el mismo calendario y enlazarlas con la llamada correspondiente. Lo asignas exactamente igual que un proveedor externo — consulta [Asignar a un asistente](/es/assistants/calendar-booking#asignar-a-un-asistente).

### Webhooks

Asigna a un tipo de evento una **Webhook URL** y Famulor la notificará cada vez que se cree, cancele o reprograme una reserva de ese tipo de evento. Al guardar la URL se revela un **Webhook signing secret** — se muestra una sola vez, así que cópialo antes de salir de la página.

Cada envío es un `POST` de `booking.created`, `booking.cancelled` o `booking.rescheduled`, firmado con un HMAC-SHA256 del cuerpo sin procesar en `X-Famulor-Signature: sha256=<hex digest>`. El objeto `data` incluye `booking_id`, los `event_type_id`/`event_type_slug`/`event_type_name` del tipo de evento, `invitee` (`name`, `email`, `phone`, `timezone`), `start_time` y `end_time` (más `previous_start_time` en una reprogramación), `status`, `source` (`web`, `call` o `api`), el `call_id` de origen cuando la reserva proviene de una llamada, y `notes` en texto libre.

Consulta [Recibir webhooks](/es/api-reference/integration-examples#recibir-webhooks) para ver un ejemplo completo de servidor, incluida la verificación de firma.

## Restricción por plan

Tu plan debe incluir **Calendar integrations** — la misma función de plan que restringe los proveedores externos en [Calendario y reservas](/es/assistants/calendar-booking). Sin ella, no puedes crear tipos de evento, y las páginas públicas de reserva no aceptan nuevas reservas.

## API y MCP

Todo lo anterior está disponible en la [API REST pública](/es/api-reference/introduction) y como herramientas de MCP en `https://<your-domain>/mcp`. Las integraciones de proveedores (Cal.com, Calendly, Acuity, eTermin, HighLevel) y la asignación de cualquier calendario a un asistente se explican en [Calendario y reservas](/es/assistants/calendar-booking).

`GET /api/v1/bookings` y `list_bookings` admiten filtros por tipo de evento, origen y fecha. Usa `view=upcoming|unconfirmed|recurring|past|cancelled` para obtener las mismas vistas de reserva que el panel, o usa un filtro `status` exacto; `view` y `status` son mutuamente excluyentes.

| REST                                                                                        | Herramienta MCP                                                                                                  | Alcance               |
| ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------- |
| `GET/POST /api/v1/booking-event-types`, `GET/PATCH/DELETE /api/v1/booking-event-types/{id}` | `get_booking_event_types`, `create_booking_event_type`, `update_booking_event_type`, `delete_booking_event_type` | `bookings:read/write` |
| `GET /api/v1/bookings`, `GET /api/v1/bookings/{id}`, `POST /api/v1/bookings/{id}/cancel`    | `list_bookings`, `get_booking`, `cancel_booking`                                                                 | `bookings:read/write` |

Cancelar una reserva envía una actualización ICS `METHOD:CANCEL`, por lo que la cita desaparece automáticamente del calendario de la persona invitada.
