Blog · · 4 min de lectura
Cómo avisar a tus clientes antes de que venza su suscripción o cuota con n8n e IA
Guía paso a paso para que n8n revise cada mañana tus suscripciones y cuotas en Google Sheets, detecte las que vencen pronto y prepare con IA un aviso de renovación personalizado.

En un gimnasio, una academia, un club, un SaaS pequeño o cualquier negocio con cuotas mensuales o anuales anotas la fecha de renovación… y se te pasa. El cliente deja de pagar sin que nadie le haya escrito, o renueva con la competencia porque nadie le ofreció seguir a tiempo.
En esta guía vas a montar en n8n un flujo que cada mañana revisa tus suscripciones en Google Sheets, detecta las que vencen en 14 o 3 días y redacta con IA un aviso de renovación en Gmail. Tú revisas el borrador y lo envías.
Qué vas a construir
Un flujo de cinco pasos que funciona solo todos los días:
- Disparador diario: un nodo Schedule Trigger se ejecuta a las 9:20.
- Lectura de suscripciones: el nodo Google Sheets lee tu hoja «Suscripciones».
- Filtro por fecha: un nodo Code se queda con las filas que vencen en 14 o 3 días y que no se han avisado ya en esa fase.
- Aviso con IA: un nodo Basic LLM Chain escribe un correo cercano que recuerda el plan, la fecha de vencimiento y cómo renovar.
- Borrador y registro: Gmail crea el borrador y Google Sheets anota la fase avisada en
aviso_enviado.
Lo que necesitas
- Una instancia de n8n (en la nube o instalada gratis en tu ordenador).
- Google Sheets y Gmail 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 «Suscripciones» con estas columnas:
cliente,email,plan,importe,ciclo(mensualoanual),vence_el(AAAA-MM-DD),enlace_pago(opcional),notasyaviso_enviado(vacía).
Paso 1: prepara la hoja de suscripciones
Lo importante es que vence_el tenga siempre el mismo formato de fecha. En plan usa nombres claros («cuota mensual», «membresía anual», «plan Pro»). En enlace_pago pon el enlace de Stripe, Lemon Squeezy, Bizum o tu pasarela si lo tienes; si no, déjalo vacío y el prompt no lo inventará. En notas apunta preferencias útiles («prefiere WhatsApp», «descuento fidelidad»).
Paso 2: disparador y lectura
Añade un Schedule Trigger diario a las 9:20 (revisa que la zona horaria del flujo, en Settings, sea Europe/Madrid). Conéctalo a Google Sheets → Get Row(s) apuntando a tu hoja «Suscripciones».
Paso 3: filtra lo que vence pronto
Añade un nodo Code (modo Run Once for All Items) con este código:
const hoy = new Date(); hoy.setHours(0, 0, 0, 0);
const salida = [];
for (const i of $input.all()) {
const c = i.json;
if (!c.email || !c.vence_el) continue;
const dias = Math.round((new Date(c.vence_el) - hoy) / 86400000);
let fase = null;
if (dias <= 3 && dias >= 0) fase = '3';
else if (dias <= 14 && dias > 3) fase = '14';
if (!fase || String(c.aviso_enviado) === fase) continue;
salida.push({ json: { ...c, dias, fase } });
}
return salida;
Así cada cliente recibe como máximo dos avisos: uno dos semanas antes y otro en los últimos tres días. Si no vence nada, el flujo termina sin gastar IA.
Paso 4: redacta el aviso con IA
Añade un Basic LLM Chain con un modelo pequeño y barato (por ejemplo, gpt-4o-mini) y este prompt:
Eres quien atiende a los clientes de [NOMBRE DEL NEGOCIO]. Escribe un correo breve para
{{ $json.cliente }} recordando que su suscripción {{ $json.plan }}
(ciclo {{ $json.ciclo }}, importe {{ $json.importe }}) vence el {{ $json.vence_el }}
(faltan {{ $json.dias }} días).
Enlace de pago (si existe, inclúyelo; si está vacío, no inventes uno): {{ $json.enlace_pago }}
Notas: {{ $json.notas }}
- Tono cercano y profesional, en español, máximo 6 frases.
- Recuerda el plan y la fecha sin presión agresiva.
- Si hay enlace_pago, invita a renovar con un clic; si no, pide responder a este correo.
- No inventes descuentos, precios ni condiciones que no estén en los datos.
Devuelve solo el cuerpo del correo.
Los datos salen de tu hoja; la IA solo pone el tono. Si cobras por domiciliación y no usas enlace, quita esa parte del prompt.
Paso 5: crea el borrador y marca el aviso
Conecta un nodo Gmail → Create Draft con el destinatario {{ $('Code').item.json.email }}, el asunto Tu {{ $('Code').item.json.plan }} se renueva pronto y el texto de la IA en el cuerpo. Usar borradores te deja revisar antes de enviar, igual que en avisos de renovación de contratos o avisos de caducidad de seguros y documentos.
Después, un nodo Google Sheets → Update Row que busque por email + plan y escriba la fase en aviso_enviado.
Cuando tengas confianza en los textos, puedes cambiar Create Draft por Send.
Cómo probarlo
- Crea una fila de prueba con tu propio correo y un
vence_eldentro de 10 días. - Ejecuta el flujo a mano y comprueba que aparece el borrador y que
aviso_enviadopasa a14. - Ejecútalo otra vez: no debe crearse ningún borrador nuevo.
- Cambia la fecha a dentro de 2 días y confirma que se prepara el segundo aviso.
Coste y buenas prácticas
- Coste: cada aviso cuesta menos de una décima de céntimo en la API de IA.
- No seas pesado: dos avisos bastan; si el cliente no renueva, anótalo y pásalo a un flujo de reactivación de clientes inactivos.
- Avisa de errores: activa un flujo de errores para enterarte si Gmail o la hoja fallan, como en gestión de errores en n8n.
- Combínalo con avisos de renovación de contratos si también gestionas vencimientos de servicio, y con recordatorios de facturas impagadas si la cuota ya se facturó y no se cobró.
Empieza con plantillas listas para importar
Si quieres tener ya montada la base de atención al cliente en n8n, descarga gratis el agente de WhatsApp o echa un vistazo al pack completo AgentKiosk: 8 agentes probados en español e inglés, con su workflow, su prompt y su guía, listos para importar y combinar con estos avisos de suscripción.


