Son las 9:15 de un martes. Una coordinadora de una clínica que deriva pacientes tiene a alguien al teléfono que necesita fisioterapia esta semana. Abre otra pestaña, llama a tu recepción, espera, y hace la pregunta que tu equipo responde cuarenta veces al día: “¿Tienen algo el jueves por la mañana?”. Tu recepcionista deja a otra persona en espera para mirarlo. Dos personas y dos líneas ocupadas para leer un calendario que ya existe.
Los calendarios incrustados eliminan esa llamada. El CRM de la coordinadora muestra tu agenda en vivo, junto a la ficha del paciente que ya tiene abierta. Es de solo lectura, va firmado y muestra exactamente lo que tú decidas.
Todas las formas de compartir un calendario tienen un problema
Las consultas que trabajan con socios (redes de derivación, centros de llamadas, la oficina central de un grupo, su propio equipo comercial) siempre han tenido que elegir entre tres opciones imperfectas.
Darles un usuario. Una persona ajena a tu consulta tiene una cuenta en tu sistema de agenda. Cuesta una licencia, casi siempre muestra mucho más de lo necesario y alguien tiene que acordarse de quitarla cuando termina la colaboración.
Compartir un feed de calendario. Un enlace ICS es un secreto que nunca caduca, funciona desde cualquier dispositivo y no te dice quién lo abrió. Además se queda atrás: la mayoría de las apps de calendario actualizan un feed suscrito cada pocas horas.
Enviar capturas o un correo diario. Es seguro, y ya está desactualizado cuando alguien lo lee.
Lo que los socios necesitan de verdad es una ventana: que esté en vivo, que viva dentro de la herramienta que ya usan, y que tú puedas estrechar o cerrar cuando quieras.
Cómo se ve un calendario incrustado
Un calendario incrustado es la agenda de tu consulta en vista de día, semana, mes o agenda, dentro de otro producto: un CRM, una intranet, un portal de socios o un sitio web. Usa tus colores, empieza la semana el día que elijas, muestra el horario que fijes y cambia entre inglés y español.
appointment:click { id: "a3f…", external_id: "crm-8812" }
Las citas se colorean por profesional, servicio o estado. Al hacer clic en una se puede abrir un pequeño panel de solo lectura, o simplemente avisar a la página anfitriona de qué cita se pulsó. Si creas citas con nuestra API REST y tu propio external_id, ese id vuelve en el evento de clic, y el CRM puede abrir su propio registro de esa cita. Nadie tiene que copiar nada de un sitio a otro.
Tú decides cuánto ven
El ajuste más importante es el nivel de detalle, y hay tres.
Solo ocupado muestra que un horario está tomado y por qué profesional. Con eso, un centro de llamadas puede decir “el jueves a las 10 está libre” sin saber nada de tus pacientes. Servicio añade qué tipo de cita es y si está confirmada, que suele ser lo adecuado para un tablero del equipo o una pantalla de operaciones. Completo añade el nombre, el correo y el teléfono del paciente, para los casos en que un socio de confianza coordina la atención contigo. Cada vez que se muestra un calendario con detalle completo, queda escrito en tu registro de auditoría junto con la persona que lo estaba viendo.
Hay cosas que no se muestran en ningún nivel: notas de la cita, respuestas de admisión, medicación, condiciones, seguro, fecha de nacimiento y dirección. No se ocultan en el navegador. El embed ni siquiera lee esos campos de la base de datos.
Seguro por diseño, no por configuración
La forma obvia de construir algo así es dar a los socios un enlace público. A propósito, no lo hicimos. Los calendarios incrustados no tienen modo público: cada vista necesita una sesión de corta duración que pide tu propio servidor.
En la práctica funciona así. Tu servidor guarda una clave API que solo sirve para una cosa: abrir sesiones de embed. Cuando uno de tus usuarios abre la página, tu servidor confirma quién es y pide a Genkō un token, que dura 15 minutos por defecto y nunca más de una hora. El navegador solo ve ese token, y el pequeño script de carga lo renueva antes de que caduque.
Cada embed también enumera los sitios web exactos que pueden mostrarlo, por ejemplo https://crm.example.com. Si lo pegas en cualquier otro sitio, no carga. Genkō vuelve a comprobar el sitio en cada petición, y también comprueba que el embed siga activo, que la clave siga siendo válida y que tu organización siga en el plan adecuado. Así que el interruptor de apagado actúa al momento: revoca la clave, desactiva el embed o quita un sitio, y las sesiones abiertas dejan de funcionar en su siguiente petición.
Configurar uno lleva una tarde
Los embeds se gestionan en Configuración → Calendarios incrustados. Empiezas con una plantilla (la agenda del equipo, el calendario de un profesional o un tablero de solo ocupación), la ajustas y ves cómo se actualiza la vista previa en vivo. La vista previa muestra exactamente lo que verá tu socio, así que no hay que adivinar nada.
Antes de compartir nada, pega en la prueba de origen la dirección de la página donde aparecerá el calendario. Te dice al momento si esa página está permitida. Después copia el fragmento:
<div id="genko-calendar"></div>
<script src="https://www.getgenko.com/embed.js"></script>
<script>
Genko.embed.mount(document.getElementById('genko-calendar'), {
embed: 'emb_…',
getToken: () => fetch('/genko/embed-token', { method: 'POST' })
.then((r) => r.json()).then((d) => d.token),
})
</script>Tu desarrollador añade un pequeño endpoint en tu servidor que cambia la clave por un token. El constructor tiene versiones listas para usar en Node, PHP, Python y curl. Algunos CRM eliminan los scripts; para esos hay una versión con un iframe simple que generas en tu propio servidor.
Dónde lo usan las consultas
Socios que derivan pacientes. Un tablero de solo ocupación dentro del sistema de la clínica socia sustituye la llamada de “¿tienen algo esta semana?”. Su coordinadora ve los huecos y reserva por el canal que ya usáis para las derivaciones.
Centros de llamadas y equipos centrales de reservas. Los agentes tienen un calendario por sede dentro del CRM donde ya registran las llamadas, y nadie cambia de pestaña en mitad de una llamada.
Tu propio CRM. Los equipos comerciales y de cuentas ven la agenda junto a la ficha del contacto. Al hacer clic en una cita se abre su propio registro, gracias al external_id que pusiste al crearla.
Grupos con varias sedes. La oficina central tiene un embed por socio o por público y estrecha cada sesión a un profesional o una vista al abrirla. Así, diez embeds cubren mucho más que diez pantallas.
Lo que no hace, a propósito
Un calendario incrustado no reserva citas. Los pacientes reservan desde tu portal del paciente o el chat de tu sitio web, que están hechos para el público. El embed es una vista de la agenda para el equipo y los socios, y que sea de solo lectura es lo que te permite compartirlo sin preocuparte.
Confirmar, reprogramar y cancelar desde dentro del embed está en la hoja de ruta. La configuración ya tiene sitio para ello, así que cuando llegue lo activarás en un embed existente en lugar de crear uno nuevo. Un modo público y el CSS personalizado no están previstos. Los dos debilitarían las garantías que hemos descrito.
Pon tu agenda donde ya trabajan tus socios.
Los calendarios incrustados están incluidos en el plan Network: hasta 10 embeds por organización, cada uno con hasta 10 sitios permitidos. La guía para desarrolladores cubre la configuración de principio a fin.
Leer la guía de embeds →