Blog · · 4 min de lectura

Cómo avisar a tus clientes antes de que venza su contrato o servicio con n8n e IA

Guía paso a paso para que n8n revise cada mañana tus contratos en Google Sheets, detecte los que vencen pronto y prepare con IA un aviso de renovación personalizado para cada cliente.

Muchos negocios pequeños viven de servicios que se renuevan: el mantenimiento de una caldera, una cuota anual de gimnasio, un seguro, un plan de soporte informático o la revisión de un vehículo. El problema es que la fecha de vencimiento suele estar apuntada en una hoja que nadie mira, y cuando te acuerdas el cliente ya ha contratado con otro.

En esta guía vas a montar en n8n un flujo que cada mañana revisa tus contratos en Google Sheets, detecta los que vencen en los próximos 30 días y redacta con IA un aviso de renovación personalizado 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:00.
  2. Lectura de contratos: el nodo Google Sheets lee tu hoja «Contratos».
  3. Filtro por fecha: un nodo Code se queda con los contratos que vencen en 30 o 7 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 qué incluye el servicio y cuándo vence.
  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 «Contratos» con estas columnas: cliente, email, servicio, precio, vence_el (formato AAAA-MM-DD), notas y aviso_enviado (vacía).

Paso 1: prepara la hoja de contratos

Lo importante es que vence_el tenga siempre el mismo formato de fecha. En notas puedes apuntar detalles útiles para personalizar el mensaje, como «cliente desde 2021» o «prefiere que le llamen por la tarde». La columna aviso_enviado guardará 30 o 7 según el aviso que ya se haya preparado.

Paso 2: disparador y lectura

Añade un Schedule Trigger diario a las 9:00 (revisa que la zona horaria del flujo, en Settings, sea Europe/Madrid). Conéctalo a Google Sheets → Get Row(s) apuntando a tu hoja «Contratos».

Paso 3: filtra los contratos que vencen 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 <= 7 && dias >= 0) fase = '7';
  else if (dias <= 30 && dias > 7) fase = '30';
  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 un mes antes y otro la última semana. 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 servicio "{{ $json.servicio }}" vence el
{{ $json.vence_el }} (faltan {{ $json.dias }} días). Precio de renovación: {{ $json.precio }} €.
Notas sobre el cliente: {{ $json.notas }}
- Tono cercano y profesional, en español, máximo 6 frases.
- Explica en una frase qué pierde si no renueva, sin presionar.
- Termina ofreciendo responder a este correo para renovar o resolver dudas.
- No inventes descuentos, fechas ni condiciones.
Devuelve solo el cuerpo del correo.

Los datos (fecha y precio) salen siempre de tu hoja; la IA solo pone el tono y personaliza con las notas.

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.servicio }} vence pronto y el texto de la IA en el cuerpo. Usar borradores te deja revisar antes de enviar, igual que en responder emails con borradores de IA.

Después, un nodo Google Sheets → Update Row que busque por email y escriba la fase en aviso_enviado. Cuando el cliente renueve, actualiza vence_el a la nueva fecha y vacía aviso_enviado.

Cuando tengas confianza en los textos, puedes cambiar Create Draft por Send para que los avisos salgan solos.

Cómo probarlo

  1. Crea una fila de prueba con tu propio correo y un vence_el dentro de 20 días.
  2. Ejecuta el flujo a mano y comprueba que aparece el borrador y que aviso_enviado pasa a 30.
  3. Ejecútalo otra vez: no debe crearse ningún borrador nuevo.
  4. Cambia la fecha a dentro de 5 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. Con cien contratos al año, el gasto es despreciable.
  • Respeta la privacidad: avisa solo a clientes con contrato en vigor y deja siempre una forma sencilla de responder.
  • Avisa de errores: activa un flujo de errores para enterarte si Gmail o la hoja fallan, como explicamos en gestión de errores en n8n.
  • Combínalo con el seguimiento de presupuestos para no perder ni clientes nuevos ni renovaciones.

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 renovación.