Digitaliza tu empresa por cero euros - Capítulo 6
Automatización con n8n sin servidores propios
En el capítulo anterior configuramos un CRM y aprendimos a gestionar tickets con Google Sheets. Ahora viene lo que todos queremos: que las tareas se hagan solas. Nos olvidamos de escribir el mismo email de bienvenida veinte veces. Nos olvidamos de revisar manualmente una lista de morosos. Nos olvidamos de compartir manualmente el mismo contenido en LinkedIn, X y una newsletter. Esto es lo que hace n8n: automatizar workflows sin escribir código y sin pagar 30 € al mes por usuario en Zapier.
El problema de Zapier cuando creces
Hace dos años, Zapier funcionaba. Pagabas 20-30 € al mes y tenías 100 tareas mensuales automáticas (en inglés, "zaps"). Pero cuando llevas un negocio que gestiona 50 leads al mes, envía 3 recordatorios de pago a morosos, y publica en 4 canales simultáneamente, los zaps se agotan rápido. Subes de plan: 50 €, 100 €. De repente gastas 1.200 € anuales en herramienta de orquestación, sin sumar Gmail, Google Sheets, el CRM del capítulo 2.
n8n entra aquí. Automatización sin límite de tareas mensuales (en n8n cloud el límite es la capacidad de ejecución, no un contador), sin cobro por usuario adicional, con libertad para self-hosted cuando prefieras.
Hay otro camino: Make (antes Integromat). Also works. Pero n8n tiene una documentación más clara para beginners, una comunidad más activa en español y, sobre todo, la opción self-hosted sin coste que Zapier no te da.
¿Qué es n8n? Flujos sin código, control total
n8n es una plataforma de automatización que funciona con nodos. Cada nodo es una acción: leer un email, crear un registro en una hoja, enviar un mensaje, esperar una condición, todo conectado en un "workflow".
Ejemplo visual (sin código):
[Formulario web] → [Buscar en CRM] → [Si no existe] → [Crear contacto]
→ [Si existe] → [Notificar al equipo]
Cada flecha es un nodo. Cada nodo tiene configuración visual. No escribes JavaScript ni SQL. Dibujas.
n8n Cloud vs Self-hosted
n8n Cloud
- Coste: Desde 25 € / mes (plan Starter).
- Infraestructura: alojada en servidores de n8n.
- Setup: 5 minutos, solo registrarse.
- Límites: ejecuta hasta 10.000 workflows/mes en Starter, más en planes superiores.
- Ventaja: no tienes que mantener servidores, SSL automático, backups.
n8n Self-hosted
- Coste: 0 € (herramienta open source).
- Infraestructura: tu servidor (VPS, servidor local, Docker).
- Setup: 20-30 minutos (Docker o Node.js).
- Límites: los que tu servidor aguante.
- Ventaja: control total, sin factura mensual, datos en tu infraestructura.
- Desventaja: mantener el servidor, SSL manual, backups tuyos.
Para esta serie (cero euros), voy a usar n8n cloud en plan Starter (25 €/mes) porque es más rápido y el primer caso de uso lo justifica. Si después necesitas más, puedes migrar a self-hosted.
Caso 1: Alta de leads desde un formulario web al CRM (con deduplicación)
Escenario: un formulario en tu web. Cada envío crea un registro en tu CRM (Google Sheets con Looker Studio), copia el email a un contacto de Gmail, y avisa al equipo comercial.
Paso 1: Crear el formulario web
Usa Google Forms o un formulario HTML simple con un webhook. Vamos con Google Forms, que es más fácil. Creas un formulario con estos campos:
- Nombre completo
- Empresa (opcional)
- Mensaje
Paso 2: Conectar formulario a n8n
- Accede a
n8n.ioy haz clic en "Get Started" (plan cloud gratuito o Starter). - Regístrate con email.
- Crea un nuevo workflow.
- Añade un nodo "Webhook" (trigger).
- Genera una URL única, algo como
https://n8n.yourinstance.com/webhook/formulario
- Genera una URL única, algo como
- En Google Forms:
- Abre un apéndice de Apps Script (ícono de engranaje arriba a la derecha → "Script editor").
- Pega este código:
function onFormSubmit(e) { var response = e.response; var itemResponses = response.getItemResponses(); var payload = {}; itemResponses.forEach(function(item) { payload[item.getItem().getTitle()] = item.getResponse(); }); var options = { method: "post", payload: JSON.stringify(payload), contentType: "application/json" }; UrlFetchApp.fetch("TU_WEBHOOK_URL_AQUI", options); }- Sustituye "TU_WEBHOOK_URL_AQUI" por la URL del webhook de n8n.
- Guarda y autoriza.
Paso 3: Deduplicación en n8n
Ahora dentro del workflow de n8n:
Después del nodo Webhook, añade un nodo "Google Sheets" (acción: "Read rows").
- Conecta tu Google Sheets del CRM.
- Busca por columna "Email".
- Carga todas las filas existentes.
Añade un nodo "Code" (nodo de lógica) para comparar:
const newEmail = $input.first().json.Email; const existingEmails = $input.last().json.map(row => row.Email); if (existingEmails.includes(newEmail)) { return { duplicate: true }; } else { return { duplicate: false }; }Usa un nodo "If" (condición):
- Si
duplicate == false→ continúa a crear registro. - Si
duplicate == true→ salta a enviar email de "ya estás en lista".
- Si
Paso 4: Crear el registro en el CRM
Nodo "Google Sheets" (acción: "Append").
- Hoja: tu CRM.
- Columnas: Nombre, Email, Empresa, Fecha.
- Los datos vienen del webhook original.
Paso 5: Notificar al equipo
Nodo "Gmail" (acción: "Send").
- Para: soporte@tunegocio.com (o el comercial).
- Asunto:
Nuevo lead: {{ $input.json.Nombre }} - Cuerpo: incluye nombre, email, empresa, mensaje.
El workflow completo tarda 2-3 minutos en configurar. Una vez activo, cada nuevo formulario crea automáticamente:
- Fila en el CRM.
- Email interno de notificación.
- Sin duplicados.
Caso 2: Recordatorios automáticos de morosos (3 escalones)
Escenario: tienes clientes que deben pagar en 30 días. A los 7 días sin pago, primer email de recordatorio. A los 14, segundo. A los 30, tercero, más formal. Todo automático.
Datos de entrada
Una hoja de Google Sheets con:
- Nombre del cliente
- Fecha de factura (o fecha en que debería pagar)
- Estado pago (pendiente, pagado, atrasado)
Workflow paso a paso
Trigger: ejecutar cada día (nodo "Cron", para que se dispare cada madrugada).
Nodo "Google Sheets": lee todos los registros de la hoja.
Nodo "Code": calcula el desfase.
const today = new Date();
const invoiceDate = new Date($input.json.invoiceDate);
const daysDifference = Math.floor((today - invoiceDate) / (1000 * 60 * 60 * 24));
return {
daysOverdue: daysDifference,
email: $input.json.email,
name: $input.json.name
};
Nodo "If" ramificado:
- Si
daysOverdue == 7→ envía primer reminder. - Si
daysOverdue == 14→ envía segundo reminder. - Si
daysOverdue == 30→ envía tercer reminder (tono formal).
- Si
Nodo "Gmail" (uno por cada rama):
- Primer email (7 días): tono cortés.
Hola {{ $input.json.name }}, Recordatorio: tu factura del {{ invoiceDate }} venció hace 7 días. Pendiente: [importe]. Clic aquí para pagar: [enlace]. Gracias, Equipo de facturación.- Segundo email (14 días): más directo.
- Tercer email (30 días): incluye datos de cuenta bancaria y aviso de acciones legales.
Nodo "Google Sheets" (al final): registra que se envió el email.
- Crea una columna "Último recordatorio" con la fecha/hora.
- O marca estado como "Recordatorio enviado".
Errores típicos aquí
- No verificar que el estado sea "pendiente" antes de enviar (risotadas email a clientes que ya pagaron).
- No guardar logs (¿cuándo se envió el último reminder?).
- Timestamps incorrectos (confundir zona horaria).
Caso 3: Publicar un post simultáneamente en LinkedIn, X y newsletter
Escenario: tienes una hoja de Google Sheets con posts. Cada fila es un post pendiente de publicar. Una vez marcado como "listo", n8n publica automáticamente en LinkedIn, X (antes Twitter) y envía a tu lista de newsletter.
Estructura de la hoja
| Título | Contenido | Imagen | Canal | Estado | Publicado | Fecha |
|---|---|---|---|---|---|---|
| "Mi tip" | "Hoy descubrí..." | [URL] | LinkedIn,X,Newsletter | Listo | NO | 2026-09-17 |
Workflow
Trigger: cambio en Google Sheets.
- Usa el nodo "Google Sheets" con "Watch rows" (modo de vigilancia).
- Se dispara cuando una fila cambia de estado a "Listo".
Nodo "Code": prepara el contenido por canal.
const content = $input.json.Contenido; const channels = $input.json.Canal.split(",").map(c => c.trim()); const posts = { linkedin: content + " #negocio #automatización", x: content.substring(0, 280) + " #n8n", newsletter: content + "\n\nLee más en: [enlace]" }; return { posts, channels };Nodo "If" para cada canal:
- Si "LinkedIn" en
channels→ envía a LinkedIn. - Si "X" en
channels→ envía a X. - Si "Newsletter" en
channels→ envía a Mailchimp o tu proveedor.
- Si "LinkedIn" en
Nodos de publicación:
LinkedIn: usa n8n con el nodo "LinkedIn" (requiere autenticación OAuth).
- Sube imagen.
- Publica el contenido.
X: nodo "Twitter" (ahora requiere API v2 de X).
- Adjunta la imagen.
- Tweet.
Newsletter: nodo "Mailchimp" o "SendGrid".
- Crea una campaña o envía email a tu audiencia.
Nodo "Google Sheets": marca como publicado.
- Columna "Publicado" = "SÍ".
- Columna "Fecha" = fecha actual.
Validaciones importantes
- Que la imagen exista (nodo "Code" verifica URL válida).
- Que el contenido no esté vacío.
- Manejo de errores: si LinkedIn falla, registra el error sin detener X.
Coste real y escalabilidad
n8n Cloud pricing
- Starter: 25 € / mes. Incluye 10.000 ejecuciones/mes, 5 workflows activos.
- Pro: 50 € / mes. 100.000 ejecuciones/mes, workflows ilimitados.
- Team: 100 € / mes. 1.000.000 ejecuciones/mes, usuarios colaboradores.
Una ejecución = una vez que el workflow se dispara de principio a fin.
Si tienes 50 leads/mes (caso 1) + 30 recordatorios de morosos (caso 2) + 4 publicaciones/mes en 3 canales (caso 3), estás en:
- Caso 1: 50 ejecuciones.
- Caso 2: 30 ejecuciones.
- Caso 3: 4 * 3 = 12 ejecuciones.
- Total: ~100 ejecuciones/mes. Plan Starter sobra.
Comparativa: Zapier, 30 €/mes, limita la cantidad de zaps (workflows). A partir del cuarto zap empiezas a pagar planes más altos. n8n, 25 €/mes, workflows ilimitados.
Self-hosted: coste 0 (pero mantenimiento)
Si instalas n8n en tu propio servidor (DigitalOcean droplet, 6 €/mes, o en casa con RPi):
- Coste inicial: setup (30 minutos, no dinero).
- Coste mensual: servidor, si es la nube (DigitalOcean, Linode, etc.).
- Ventaja: sin límite de ejecuciones, datos privados, sin depender de n8n SaaS.
- Desventaja: configurar SSL tú mismo, backups manuales, resolver problemas de conexión.
Para la serie "cero euros", n8n cloud plan Starter (25 €) es un coste razonable si evita 1.200 € de Zapier.
Errores que todos cometen
1. Workflows sin manejo de errores
Un workflow perfecto que falla en uno de veinte pasos. Si el nodo Gmail falla (credenciales vencidas), todo se detiene. No publicas en X, no registras en Sheets.
Solución: añade un nodo "Catch" al final.
// Si algo falla, envía email de error al admin
UrlFetchApp.fetch("tu_email_admin", {
payload: JSON.stringify({ error: error.message, workflow: "Publicación cross-canal" })
});
2. Sin logs
Un workflow lleva tres meses corriendo. De repente, los recordatorios de morosos no llegan. ¿Qué pasó? Sin logs, no sabes.
Solución: al final de cada rama, crea una fila en una hoja "Logs de n8n" con:
- Timestamp.
- Nombre del workflow.
- Acción realizada (email enviado, registro creado).
- Resultado (éxito / error).
3. Sin validación de duplicados
El caso 1 sin deduplicación: cada vez que alguien reenvía el formulario (porque le parece que no se envió), creas un registro duplicado. A los dos meses tienes 200 leads duplicados.
Solución: siempre una búsqueda previa por email (o identificador único).
4. Credenciales vencidas
Conectas Google Sheets, Gmail, LinkedIn. Las credenciales expiran. El workflow sigue intentando ejecutarse, falla silenciosamente.
Solución: en n8n, configura "Retry on failure" (reintentos). Monitorea logs. Refresca credenciales cada 3 meses manualmente.
5. Timezone
Calculas "30 días desde la factura" pero el servidor de n8n está en UTC y tu negocio en Madrid. El email se envía 2 horas antes de lo que crees.
Solución: normaliza todo a zona horaria explícita. En n8n, usa nodo "Code" con librería moment-timezone.
¿Cuándo usar n8n Cloud, cuándo Self-hosted, cuándo algo más?
| Situación | Recomendación | Por qué |
|---|---|---|
| Empiezas, <100 ejecuciones/mes | n8n Cloud Starter (25 €) | Setup rápido, soporte, sin maintenance. |
| Tienes experiencia, >1.000 ejecuciones/mes | n8n Cloud Pro (50 €) | Más ejecuciones, workflows ilimitados. |
| Datos sensibles, quieres control | n8n Self-hosted | Privacidad, sin coste mensual recurrente. |
| Necesitas UI muy visual y simple | Zapier (30 € +) | Interfaz más pulida, pero caro. |
| Workflows complejos, código custom | Make (antes Integromat) | Similar a n8n, más formas de conectar. |
| Quieres algo extremadamente simple | Formulario + Gmail | Cero coste, pero manual. |
Conexiones que necesitas: setup de credenciales
Cada nodo de n8n que conecta a un servicio externo necesita autenticación.
Google Sheets
- Ve a tu cuenta de Google Cloud Console (console.cloud.google.com).
- Crea un proyecto nuevo.
- Activa la API de Google Sheets.
- Crea una "Service Account" (cuenta de servicio).
- En n8n, abre el nodo "Google Sheets" → "Credentials" → "Create new".
- Copia la clave JSON de la Service Account y pégala en n8n.
- Comparte tu Sheet con el email de la Service Account (algo como
nombre@proyecto.iam.gserviceaccount.com).
Gmail
Similar a Sheets, pero activa la API de Gmail.
Necesitas una aplicación registrada en LinkedIn Developer.
- Accede a
linkedin.com/developers/apps. - Crea una app nueva.
- Pide acceso a "Sign In with LinkedIn" (requiere aprobación).
- Copia Client ID y Client Secret.
- En n8n, pégalos en el nodo LinkedIn.
X (Twitter)
Accede a developer.twitter.com/en/portal.
- Crea un proyecto.
- Genera "API Key" y "API Secret".
- Genera "Access Token" y "Access Token Secret".
- En n8n, pégalos en el nodo Twitter.
Cada plataforma tiene sus propias reglas. El tiempo de setup total: 30-45 minutos si es la primera vez.
Siguientes pasos
Con n8n en marcha, tienes:
- Leads automatizados.
- Recordatorios de pago sin intervención.
- Contenido publicado en 3 canales simultáneamente.
El siguiente paso de verdad (capítulo 7) es facturación electrónica y Verifactu. Porque automatizar todo mola, pero al final alguien tiene que facturar. Y desde 2025 en España, Verifactu obliga a enviar facturas en tiempo real a Hacienda. n8n puede estar en medio de ese proceso.
Hasta entonces, instala n8n, experimenta con un caso pequeño (el formulario de leads funciona en 10 minutos), y luego escala. Los workflows se pueden editar sin parar nada, así que no hay riesgo.
Resumen de checklist
- Crear cuenta en n8n.io (plan Starter).
- Configurar credenciales de Google Workspace.
- Construir primer workflow (formulario web → CRM).
- Añadir deduplicación por email.
- Configurar notificación interna por email.
- Probar con 5 leads ficticios.
- Segundo workflow (recordatorios de morosos).
- Tercer workflow (publicación cross-canal).
- Monitoreo: revisar logs una vez a la semana.
- Documentar cada workflow con comentarios.
Recursos
- Documentación oficial de n8n
- n8n Community Forum
- Comparativa n8n vs Zapier vs Make (sí, Zapier tiene la suya).
- Guía rápida: webhooks en n8n
Próximo artículo
Capítulo 7: Verifactu y facturación electrónica sin contable (próximamente).
¿Quieres acelerar tu digitalización? Reserva una cita para revisar tus procesos actuales y crear un plan de automatización personalizado.

