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»:
- 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.
- 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.
- 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_enyaviso_lista. - Opcional: una hoja «Lista de espera» con
nombre,email,servicio,prioridadyultimo_aviso. - El mismo formato de contacto en la descripción del evento que usas en los recordatorios (
Email:yTel:).
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) poneestado=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
pendientey, 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_showoconfirmada(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
pendientey no marcaste «llegó», pásalo ano_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:
- Actualiza el evento en Calendar (título o color) para que el equipo lo vea.
- Si tienes lista de espera, filtra 1–2 personas del mismo
servicioconultimo_avisovacío o antiguo, mándales un email corto («Ha quedado un hueco hoy a las X, ¿lo quieres? Responde YA») y anotaaviso_lista. - 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
- Crea tres eventos de prueba hoy en un calendario aparte, con tu email en la descripción.
- Ejecuta a mano el flujo de confirmación: deben salir tres correos y tres filas
pendiente. - Responde SÍ a uno, NO a otro y deja el tercero sin respuesta.
- Marca el tercero como
no_showy comprueba: email de reagendar (borrador), aviso a lista de espera si la tienes, y estado actualizado. - 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.


