Blog · · 6 min de lectura
Cómo cubrir citas canceladas con una lista de espera automática en n8n e IA
Guía paso a paso para rellenar huecos de última hora en tu agenda con n8n, Google Calendar, Google Sheets e IA cuando un cliente cancela.

Cuando un cliente avisa con tiempo de que no puede acudir a su cita, ya has ganado la mitad de la batalla frente a los plantones de última hora. El problema viene justo después: tienes un hueco libre mañana a las 17:00 y una lista de personas que querían hora esta semana, pero ponerte a llamar o escribir una por una mientras atiendes el negocio hace que ese hueco se quede vacío.
En esta guía vas a montar en n8n un flujo que detecta cuándo se libera una cita, busca en tu lista de espera de Google Sheets a los clientes a los que les encaja ese horario y servicio, les avisa con un mensaje natural redactado con IA y asigna el hueco al primero que confirma en Google Calendar.
Qué vas a construir
Un flujo en cinco pasos conectado a tu calendario y a una hoja «Lista de espera»:
- Detección del hueco libre: cuando una cita pasa a cancelada (desde el enlace de cancelación o al borrar/marcar el evento en Google Calendar), n8n recoge la fecha, la hora y la duración liberadas.
- Búsqueda de candidatos: filtra en tu hoja «Lista de espera» a quienes pidieron ese mismo servicio (o uno que quepa en ese tiempo) y prefieren esa franja horaria.
- Aviso por turnos con IA: un nodo Basic LLM Chain escribe un mensaje breve y directo ofreciendo la hora concreta que acaba de quedar libre.
- Reserva sin duplicados: cuando un cliente responde que la quiere, n8n comprueba en Google Calendar que el hueco sigue libre antes de crear el evento.
- Cierre limpio: marca la fila como
cubiertoy, si alguien contesta cuando ya se ha asignado, le avisa con amabilidad de que se acaba de ocupar y que sigue primero para el próximo hueco.
Lo que necesitas
- Una instancia de n8n (en la nube o instalada gratis en tu ordenador).
- Google Calendar, Google Sheets y Gmail (o WhatsApp Cloud API) conectados en n8n.
- Una clave de API de OpenAI u otro proveedor de IA con un límite mensual de gasto configurado en su panel.
- Una hoja de Google Sheets llamada «Lista de espera» con las columnas
id,nombre,contacto,servicio,duracion_min,dias_preferidos(por ejemploL,M,X,J,V),franja(manana,tarde,cualquiera),estado(esperando,avisado,cubierto,baja),ultimo_avisoynotas.
Paso 1: alimenta la lista de espera sin trabajo extra
Una lista de espera solo funciona si apuntarse cuesta diez segundos. Tienes dos formas muy sencillas de llenarla:
- Desde tu formulario web o recepción: cuando alguien pide cita para esta semana y no tienes hueco, en lugar de decirle «llámame el lunes a ver si hay suerte», añade una fila en «Lista de espera» con su franja preferida.
- Desde tu agente de atención: si usas un agente de WhatsApp con IA o un chatbot en tu web, añade una herramienta de Google Sheets para que, cuando no haya horas libres esta semana, ofrezca apuntar al cliente en la lista de espera.
Paso 2: detecta la cancelación y filtra candidatos
El disparador puede ser el mismo Webhook donde recibes las cancelaciones de tus recordatorios de citas o un Schedule Trigger cada 15 minutos que busque citas marcadas como [CANCELADA] en Google Calendar.
Antes de avisar a nadie, añade dos filtros:
- Margen mínimo: comprueba que faltan al menos 2 horas para la cita (avisar con 15 minutos de antelación rara vez sirve y genera estrés).
- Encaje real: lee las filas de «Lista de espera» con Google Sheets (Get Rows) y pasa por un nodo Filter que deje solo las filas con:
estado=esperando.duracion_minmenor o igual que los minutos del hueco libre.franjaigual acualquierao coincidente con la hora liberada (mañana antes de las 14:00, tarde después).- Sin otro aviso enviado hoy (
ultimo_avisovacío o de otro día), para no freír a mensajes a la misma persona si se cancelan dos citas seguidas.
Con un nodo Sort + Limit, quédate con los 3 primeros por orden de inscripción. Avisar a 3 personas a la vez suele bastar para cubrir el hueco rápido sin dejar a veinte clientes frustrados porque llegaron tarde.
Paso 3: redacta un aviso claro y natural con IA
Conecta un Basic LLM Chain (con Structured Output Parser) para generar un mensaje corto que vaya directo al grano: día, hora, servicio y cómo confirmar. Usa un prompt como este:
Trabajas en [NOMBRE DEL NEGOCIO]. Acaba de quedar libre un hueco y escribes a un cliente de la lista de espera. Datos: nombre {{ $json.nombre }}, servicio {{ $json.servicio }}, fecha y hora liberadas {{ $json.hueco_fecha_hora }}. Reglas: español de España, tono cercano y directo; máximo 55 palabras; di exactamente qué día y a qué hora ha quedado libre y para qué servicio; dile que pulse en el enlace de confirmación [ENLACE_CONFIRMAR] o responda «LA QUIERO» si se lo queda, indicando que se asigna al primero que confirme; no inventes precios ni condiciones. Devuelve solo JSON: {"asunto": máximo 6 palabras, "mensaje": texto}.
Después del nodo de IA:
- Envía el mensaje por Gmail (o WhatsApp si tienes ventana abierta o plantilla aprobada).
- Actualiza la fila en Google Sheets:
estado=avisadoyultimo_avisocon la fecha y hora actuales.
Paso 4: asigna el hueco al primero que confirme (sin pisar citas)
Cuando uno de los clientes avisa de que se queda la hora (pulsando el enlace con parámetros hueco_id y cliente_id hacia un Webhook de n8n, o respondiendo al mensaje):
- Comprueba disponibilidad real: usa Google Calendar (Get Many) en el tramo exacto del hueco.
- Añade un nodo IF:
- Si el tramo sigue libre: crea el evento en Google Calendar con los datos del cliente, cámbiale el
estadoen la hoja acubierto, envíale la confirmación definitiva y devuelve aesperandoa los otros dos candidatos a los que habías avisado para que sigan en la lista. - Si otro cliente se adelantó hace unos minutos: no crees ningún evento. Respóndele automáticamente que ese hueco se acaba de cubrir hace un momento, pero que mantiene su prioridad en la lista de espera para el siguiente que salga.
Este control en el calendario antes de crear el evento evita el clásico error de dar la misma hora a dos personas.
Paso 5: limpia la lista cada semana
Una lista de espera con peticiones de hace dos meses pierde sentido. Añade una rama con Schedule Trigger cada lunes a las 9:00 que marque como baja las filas que lleven más de 21 días en esperando (o después de la fecha límite que indicó el cliente), para trabajar siempre con gente que sigue buscando cita.
Pruébalo en 5 minutos antes de activarlo
- Crea en Google Calendar una cita de prueba para mañana a las 17:00 y márcala como cancelada.
- En tu hoja «Lista de espera», añade dos filas con tu propio correo: una que encaje en horario de tarde y otra que solo pueda por la mañana.
- Ejecuta el flujo en n8n y comprueba que solo recibe el aviso la fila de tarde.
- Abre el enlace de confirmación dos veces seguidas: la primera debe crear el evento en tu calendario y la segunda debe responder que el hueco ya está ocupado.
Coste y buenas prácticas
- Coste: redactar 3 avisos cortos por cada cancelación cuesta menos de un céntimo en la API de tu modelo de IA.
- No avises a toda la lista a la vez: manda el aviso en tandas pequeñas (de 1 a 3 personas). Si en 45 minutos nadie confirma, el flujo puede avisar a los siguientes 3.
- Si un cliente escribe con dudas («¿podría ser media hora más tarde?»), no dejes que la automatización decida sola: pásalo a tu equipo siguiendo la guía de derivación a humano en n8n.
Empieza con plantillas listas para importar
Si quieres tener ya montada la base de reservas y atención al cliente en n8n, descarga gratis el agente de WhatsApp o echa un vistazo al pack completo AgentKiosk: incluye 8 agentes probados en español e inglés —entre ellos el de citas y reservas con Google Calendar y el de atención al cliente en WhatsApp PRO— listos para importar y conectar con esta lista de espera.


