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:

  1. Disparador diario: un nodo Schedule Trigger se ejecuta a las 9:20.
  2. Lectura de suscripciones: el nodo Google Sheets lee tu hoja «Suscripciones».
  3. 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.
  4. Aviso con IA: un nodo Basic LLM Chain escribe un correo cercano que recuerda el plan, la fecha de vencimiento y cómo renovar.
  5. 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 (mensual o anual), vence_el (AAAA-MM-DD), enlace_pago (opcional), notas y aviso_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

  1. Crea una fila de prueba con tu propio correo y un vence_el dentro de 10 días.
  2. Ejecuta el flujo a mano y comprueba que aparece el borrador y que aviso_enviado pasa a 14.
  3. Ejecútalo otra vez: no debe crearse ningún borrador nuevo.
  4. Cambia la fecha a dentro de 2 días y confirma que se prepara el segundo aviso.

Coste y buenas prácticas

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.