n8n es una plataforma de automatización de flujos de trabajo open source y self-hosted que permite conectar cualquier aplicación, base de datos o API. Su nombre significa "nodemation" - automatización basada en nodos.
# Crear carpeta para datos mkdir ~/.n8n # Ejecutar n8n con Docker docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n # Para producción con PostgreSQL docker-compose up -d
docker-compose.yml:
version: '3.8' services: postgres: image: postgres:13 environment: POSTGRES_DB: n8n POSTGRES_USER: n8n POSTGRES_PASSWORD: n8n volumes: - postgres_data:/var/lib/postgresql/data n8n: image: n8nio/n8n ports: - 5678:5678 environment: DB_TYPE: postgresdb DB_POSTGRESDB_HOST: postgres DB_POSTGRESDB_DATABASE: n8n DB_POSTGRESDB_USER: n8n DB_POSTGRESDB_PASSWORD: n8n N8N_BASIC_AUTH_ACTIVE: true N8N_BASIC_AUTH_USER: admin N8N_BASIC_AUTH_PASSWORD: password volumes: - n8n_data:/home/node/.n8n depends_on: - postgres volumes: postgres_data: n8n_data:
# Instalar globalmente npm install n8n -g # Ejecutar n8n n8n start # O con variables de entorno export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_PASSWORD=password n8n start
Requisitos:
La forma más rápida de empezar sin instalación:
Un workflow es una secuencia de nodos conectados que ejecutan tareas específicas.
Los bloques de construcción de n8n. Cada nodo realiza una acción específica.
Las líneas que conectan nodos y definen el flujo de datos.
Los datos que fluyen a través del workflow.
Inician la ejecución del workflow
Ejecuta en horarios específicos
// Cada lunes a las 9 AM 0 9 * * 1 // Cada 30 minutos */30 * * * *
Recibe datos HTTP
POST https://tu-n8n.com/webhook/abc123 { "action": "new_order", "amount": 99.99 }
Se activa con emails entrantes
Realizan acciones en aplicaciones
Controlan el flujo del workflow
Manipulan y transforman datos
// Function Node - JavaScript // Limpiar y formatear datos const items = $input.all(); return items.map(item => { const phone = item.json.phone.replace(/\D/g, ''); const email = item.json.email.toLowerCase(); return { json: { ...item.json, phone_clean: phone, email_normalized: email, processed_at: new Date().toISOString() } }; });
Sistema poderoso para manipular datos dinámicamente
// Acceder a datos del nodo anterior {{ $node["HTTP Request"].json.user.name }} // Usar funciones {{ $now.format('YYYY-MM-DD') }} {{ $json.price * 1.16 }} // Agregar IVA {{ $json.email.toLowerCase() }} // Condicionales {{ $json.status === 'active' ? 'Activo' : 'Inactivo' }} // Trabajar con arrays {{ $json.items.map(item => item.price).reduce((a,b) => a+b, 0) }}
# Exportar workflows via CLI n8n export:workflow --all --output=backups/ # Importar workflows n8n import:workflow --input=backups/
// Configurar logs detallados export N8N_LOG_LEVEL=debug export N8N_LOG_OUTPUT=file export N8N_LOG_FILE_LOCATION=/var/log/n8n/
Recibe nuevo lead
Clearbit/Hunter.io
Función personalizada
HubSpot/Salesforce
Slack si score > 80
// Función de scoring const lead = $json; let score = 0; // Criterios de scoring if (lead.company_size > 100) score += 30; if (lead.budget > 10000) score += 40; if (lead.timeline === 'immediate') score += 20; if (lead.decision_maker === true) score += 10; // Categorizar let category; if (score >= 80) category = 'hot'; else if (score >= 50) category = 'warm'; else category = 'cold'; return { ...lead, score, category, scored_at: new Date().toISOString() };
Nuevo producto en Shopify
Guías completas y API reference
Forum activo con 15k+ miembros
Código fuente y contribuciones