Blog · · 7 min de lectura

Cómo reducir las citas fallidas (no-shows) con n8n e IA

Guía paso a paso para que n8n confirme la cita el mismo día, libere el hueco si el cliente no viene, avise a la lista de espera y mande un email corto para reagendar. Sin programar.

Una cita fallida no es solo un hueco vacío: es tiempo perdido, un cliente que se queda sin servicio y, a menudo, otro que habría venido si alguien le hubiera avisado a tiempo. En clínicas, peluquerías, fisioterapia o asesorías, un 10–20 % de no-shows es habitual si no hay confirmación el mismo día.

En esta guía montarás en n8n un flujo que confirma la cita por la mañana, marca quién no ha contestado o no ha venido, libera el hueco, avisa a uno o dos de tu lista de espera y deja un email breve escrito por IA para que el cliente reagende. Combina bien con los recordatorios de 24 horas (el día antes) y con las reservas en Google Calendar.

Qué vas a construir

Tres piezas pequeñas que comparten Google Calendar y una hoja «Citas»:

  1. Confirmación: un Schedule Trigger cada mañana busca las citas de hoy, manda un email (o WhatsApp) pidiendo «responde SÍ / NO» y apunta el estado.
  2. Detección de no-show: al acabar la franja de la cita, si el estado sigue en «sin confirmar» o «confirmada» y tú marcas «no vino», el flujo libera el hueco y avisa a la lista de espera.
  3. Reagendar: un Basic LLM Chain escribe un email corto al cliente que falló, con enlace para volver a reservar.

Lo que necesitas

  • Una instancia de n8n (en la nube o en tu servidor).
  • Google Calendar y Gmail (u otro SMTP) conectados a n8n con OAuth2.
  • Una clave de API de un proveedor de IA con un límite de gasto puesto.
  • Una hoja «Citas» con columnas event_id, fecha, hora, nombre, email, servicio, estado (pendiente, confirmada, cancelada, no_show, reagendada), confirmado_en y aviso_lista.
  • Opcional: una hoja «Lista de espera» con nombre, email, servicio, prioridad y ultimo_aviso.
  • El mismo formato de contacto en la descripción del evento que usas en los recordatorios (Email: y Tel:).

Si aún no guardas el email en el evento, empieza por ahí: sin contacto, no hay confirmación posible.

Paso 1: confirma por la mañana, no solo el día antes

El recordatorio de 24 horas reduce olvidos. La confirmación del mismo día reduce no-shows de verdad, porque obliga a un «sí» o a un «no» cuando el día ya está encima.

Crea un flujo con Schedule Trigger a las 8:00. Añade Google Calendar (Get Many) filtrando eventos que empiezan hoy (desde {{ $now.startOf('day').toISO() }} hasta {{ $now.endOf('day').toISO() }}). Expande los recurrentes.

Para cada evento, un nodo Code (o Edit Fields) saca email y teléfono de la descripción, igual que en la guía de recordatorios. Filtra los que ya tengan estado = cancelada o no_show en tu hoja (léela con Google Sheets y cruza por event_id).

Envía por Gmail un mensaje corto y fijo, sin IA todavía:

Hola {{ nombre }}, te escribo para confirmar tu cita de hoy a las {{ hora }} ({{ servicio }}). Responde a este email con SÍ si vienes o con NO si no puedes. Si cancelas con tiempo, podemos ofrecer el hueco a otra persona. Gracias.

Guarda o actualiza la fila en «Citas» con estado = pendiente y la hora del envío en confirmado_en.

Por qué no deja la IA redactar la confirmación: es un mensaje legal y operativo; quieres el mismo texto todos los días. La IA la usamos después, en el email de reagendar, donde el tono humano sí aporta.

Paso 2: recoge el SÍ / NO

Segundo flujo con Gmail Trigger (o Email Trigger) que mira respuestas a esos asuntos. Un IF o un Switch:

  • Cuerpo o asunto contiene SÍ / SI / yes → Google Sheets (Update) pone estado = confirmada.
  • Contiene NO / cancel → estado = cancelada, y opcionalmente Google Calendar (Update) añade [CANCELADA] al título o borra el evento si esa es tu política.
  • Cualquier otra cosa → déjalo en pendiente y, si quieres, avísate a ti por Telegram para leerlo a mano.

No hace falta un chatbot: una sola palabra basta y casi todo el mundo la entiende desde el móvil.

Si prefieres WhatsApp, puedes mandar la confirmación con una plantilla aprobada de Meta y leer la respuesta entrante. La base está en conectar WhatsApp Cloud API a n8n. Empieza por email si aún no tienes plantillas; es más simple de operar.

Paso 3: detecta el no-show y libera el hueco

Tercer flujo, Schedule Trigger cada hora. Lee de Google Calendar (o de la hoja) las citas cuya hora de fin ya pasó en la última hora y cuyo estado es pendiente o confirmada.

Aquí tienes dos modos; elige uno y sé constante:

  • Modo manual (recomendado al empezar): el flujo te manda a ti un resumen por email o Telegram («3 citas de la última hora sin marcar»). Tú pones no_show o confirmada (si vino) en la hoja en un minuto. Evitas acusar en falso a quien llegó y no contestó el SÍ.
  • Modo automático: si a los 15 minutos del inicio sigue en pendiente y no marcaste «llegó», pásalo a no_show. Úsalo solo cuando tu recepción ya marque asistencia en otro sitio.

Cuando el estado pase a no_show o cancelada con poca antelación:

  1. Actualiza el evento en Calendar (título o color) para que el equipo lo vea.
  2. Si tienes lista de espera, filtra 1–2 personas del mismo servicio con ultimo_aviso vacío o antiguo, mándales un email corto («Ha quedado un hueco hoy a las X, ¿lo quieres? Responde YA») y anota aviso_lista.
  3. No ofrezcas el mismo hueco a diez personas a la vez: el primero que diga que sí se lo queda; al resto, un «ya está cogido, te aviso otro día».

Paso 4: la IA escribe el email para reagendar

Justo después de marcar no_show, conecta un Basic LLM Chain con un prompt como este:

Eres quien atiende un pequeño negocio llamado [NOMBRE], de [SECTOR]. Escribe un email breve a un cliente que no pudo venir a su cita. Datos: nombre {{ $json.nombre }}, servicio {{ $json.servicio }}, fecha {{ $json.fecha }}, hora {{ $json.hora }}. Reglas: tono cercano y sin reproches; máximo 70 palabras; asume buena fe (imprevisto, olvido); una sola llamada a la acción: reagendar en [ENLACE DE RESERVA]; no inventes precios, descuentos ni culpables. Responde solo con JSON: {"asunto": máximo 6 palabras, "cuerpo": texto}.

Activa Require Specific Output Format con un Structured Output Parser. Envía con Gmail (al principio en Create Draft, luego en Send cuando el tono te convenza).

Si el cliente responde y quiere fecha, tu flujo de reservas con Google Calendar puede cerrar el círculo. Cuando vuelva a venir, una encuesta de satisfacción al día siguiente te dice si la experiencia de reagendar fue buena.

Paso 5: mide la tasa de no-shows

Una vez a la semana, un Schedule Trigger los lunes lee la hoja «Citas» de los últimos 7 días y calcula:

  • total de citas (excluye canceladas con más de 24 h)
  • cuántas no_show
  • cuántas confirmada / pendiente
  • cuántas de la lista de espera se convirtieron en cita

Pide a la IA tres frases de resumen y mándatelas por email. En un mes sabrás si te falta confirmación por la mañana, si el problema es un día concreto o un servicio, y si la lista de espera compensa. Sin ese número, cualquier cambio es a ciegas.

Pruébalo sin molestar a clientes reales

  1. Crea tres eventos de prueba hoy en un calendario aparte, con tu email en la descripción.
  2. Ejecuta a mano el flujo de confirmación: deben salir tres correos y tres filas pendiente.
  3. Responde SÍ a uno, NO a otro y deja el tercero sin respuesta.
  4. Marca el tercero como no_show y comprueba: email de reagendar (borrador), aviso a lista de espera si la tienes, y estado actualizado.
  5. Cuando cuadre, apunta los flujos al calendario real, deja Gmail en borrador una semana y actívalos.

Coste y límites

  • Coste: la confirmación es texto fijo (casi gratis). La IA solo interviene en el email de reagendar, una llamada corta por no-show. Revisa los precios actuales de tu proveedor y de n8n.
  • WhatsApp: para iniciar tú la conversación hace falta plantilla aprobada; las respuestas del cliente sí pueden ir por la ventana de 24 h. Si no la tienes, quédate en email.
  • No acuses en falso: alguien puede haber venido sin contestar el SÍ. Por eso el modo manual al marcar no-shows es más seguro al principio.
  • Privacidad: guardas nombre, email y asistencia. Menciónalo en tu política de privacidad y respeta a quien pida no recibir más mensajes.
  • La IA redacta, tú decides la política: cuántas horas antes aceptas cancelaciones, si cobras seña o si ofreces el hueco a la lista de espera es decisión tuya, no del modelo.

Empieza con plantillas listas

Si quieres ahorrarte la base de n8n, Calendar e IA, descarga gratis el agente de WhatsApp o mira el pack AgentKiosk: 8 agentes listos para importar, incluido el de citas y reservas con Google Calendar. Este flujo de no-shows lo montas al lado con los pasos de arriba y encaja con él: el agente reserva, los recordatorios avisan el día antes y esta guía confirma el mismo día y recupera el hueco cuando alguien no viene.