Después de construir más de 50 automatizaciones, esto es cuándo recurro a cada herramienta — y cuándo no.
Cada semana alguien me pregunta: "¿Debería usar n8n, Make.com o simplemente escribir código?" La respuesta honesta es que cada uno gana en situaciones específicas, y elegir mal le cuesta tiempo, dinero o ambos. He cometido los tres errores. Esta guía es lo que me hubiera gustado tener antes de empezar.
Explicaré escenarios reales, estructuras de costos y el marco mental exacto que uso para elegir la herramienta correcta en menos de cinco minutos.
Veredicto rápido
Si tiene prisa:
- Make.com — pensadores visuales, equipos de marketing, 1-100 escenarios con complejidad moderada, presupuesto menor a $50/mes
- n8n — fundadores técnicos, lógica compleja, preocupaciones de privacidad de datos, alto volumen, eficiencia de costos a largo plazo
- Código personalizado — lógica única que ninguna plataforma soporta, requisitos de máximo rendimiento, o cuando la automatización es central a su producto
Ahora profundicemos.
Comparación de funcionalidades
| Funcionalidad | n8n | Make.com | Código personalizado |
|---|---|---|---|
| Constructor visual | Sí | Sí (mejor) | No |
| JS/Python personalizado | Soporte completo | Limitado | Nativo |
| Manejo de errores | Avanzado | Básico | Control total |
| Programación | Integrada | Integrada | Su infraestructura |
| Nodos IA/LLM | Integrados | Vía HTTP | Usted lo construye |
| Autoalojamiento | Sí (open source) | No | Sí |
| Debugging | Bueno | Excelente | Sus herramientas |
| Control de versiones | Exportación JSON | Exportación JSON | Git |
| Colaboración en equipo | Planes de pago | Planes de pago | Nativo con Git |
| Integraciones de comunidad | 400+ nodos | 1,000+ apps | Cualquier API |
Make.com tiene más conectores pre-construidos. n8n tiene mejor flexibilidad de código. El código personalizado no tiene ninguna de las limitaciones y toda la complejidad.
Comparación de precios
Los modelos de precios de estas tres opciones son fundamentalmente diferentes, lo que hace la comparación directa complicada.
Precios de n8n
| Plan | Costo | Ejecuciones |
|---|---|---|
| Autoalojado | $5-10/mes (solo servidor) | Ilimitadas |
| Cloud Starter | $0/mes | 5K ejecuciones |
| Cloud Pro | $20/mes | Ilimitadas |
| Cloud Enterprise | Personalizado | Personalizado |
Autoalojar n8n en un droplet de DigitalOcean de $5 le da ejecuciones ilimitadas con control total de datos. Esa es la verdadera propuesta de valor.
Precios de Make.com
| Plan | Costo | Operaciones/mes |
|---|---|---|
| Free | $0 | 1,000 |
| Core | $10.59/mes | 10,000 |
| Pro | $18.82/mes | 10,000 + más funcionalidades |
| Teams | $34.12/mes | 10,000 (por puesto) |
| Enterprise | Personalizado | Personalizado |
Make.com cobra por operación, no por ejecución de escenario. Un solo escenario con 10 módulos cuesta 10 operaciones cada vez que se ejecuta. Esto se acumula rápido a volumen.
Precios de código personalizado
El código personalizado no tiene costo de plataforma — pero tiene costos reales:
- Tiempo de desarrollo (su tiempo o un contratista)
- Infraestructura de hosting ($5-50/mes dependiendo de la carga)
- Mantenimiento y actualizaciones (continuo)
- Monitoreo y alertas (herramientas como Sentry, Datadog)
Para una automatización simple que se ejecuta una vez al día, el código personalizado podría costar $0/mes en ejecución pero 8 horas para construir. Para algo complejo que se ejecuta miles de veces al día, podría ser la opción más económica por ejecución.
Costo a escala
| Volumen mensual | n8n autoalojado | Make.com | Código personalizado (hosting) |
|---|---|---|---|
| 1K ejecuciones | $5 | $10.59 | $5-15 |
| 10K ejecuciones | $5 | $18.82 | $5-15 |
| 100K ejecuciones | $10 | $55+ | $10-30 |
| 1M ejecuciones | $20 | $200+ | $20-80 |
Por encima de 10K ejecuciones mensuales, n8n autoalojado gana consistentemente en costo puro.
Costo a escala
Comparación de costo mensual a 100K ejecuciones de automatización
Ejecuciones ilimitadas en autoalojado
El costo escala con la cantidad de operaciones
Más económico por ejecución a alto volumen
Cuándo usar n8n
n8n es mi opción predeterminada para clientes técnicos que necesitan automatización seria sin el impuesto de Zapier. Aquí es cuándo se gana esa posición.
Tiene lógica compleja
El nodo Code de n8n le da JavaScript y Python completo dentro de sus workflows. Cuando un cliente necesitó parsear payloads de webhooks, ejecutar lógica de negocio personalizada y hacer llamadas API condicionales basadas en búsquedas en base de datos — todo en un flujo — n8n lo manejó limpiamente. Make.com habría requerido soluciones alternativas o múltiples escenarios desconectados.
Le importa la privacidad de datos
Un cliente de salud necesitaba automatizar recordatorios de citas sin que los datos de pacientes salieran de su infraestructura. n8n autoalojado corriendo dentro de su VPC lo resolvió. No existe un equivalente de Make.com para ese requisito.
Su volumen es alto
A 50,000+ ejecuciones de automatización por mes, los precios de Make.com se vuelven dolorosos rápidamente. n8n autoalojado a ese volumen cuesta lo mismo que 1,000 ejecuciones: lo que cueste su servidor.
Quiere IA profundamente integrada
n8n tiene nodos LLM nativos. Puede construir agentes de IA multi-paso — llamar un LLM, evaluar la salida con otro nodo, ramificar según el resultado, llamar una herramienta y hacer loop — sin gimnasia HTTP. Aquí es donde viven cada vez más las automatizaciones complejas.
Ejemplos reales de n8n de trabajo con clientes
Ejemplo 1: Pipeline de scoring de leads. Una empresa SaaS B2B tenía 300+ leads entrantes por semana. Construí un workflow en n8n: webhook recibe el envío del formulario, el nodo Code ejecuta lógica de enriquecimiento contra la API de Clearbit, el nodo de OpenAI califica al lead 0-100 basándose en criterios de ICP, el nodo Switch enruta a Slack para leads calientes y a HubSpot para todos los leads. Redujo el tiempo de calificación manual de 4 horas/día a cero.
Ejemplo 2: Sincronización de pedidos de e-commerce. Una tienda Shopify necesitaba sincronización en tiempo real entre tres almacenes con lógica de prioridad personalizada. Las reglas de negocio eran demasiado complejas para el enrutamiento de Make.com. Los nodos Code de n8n manejaron el algoritmo de asignación de inventario y todo corría en un VPS de $10.
Ejemplo 3: Reutilización de contenido con IA. Publicación de blog en WordPress, webhook de n8n se dispara, agente LangChain extrae puntos clave, genera cinco publicaciones de Twitter y una versión de LinkedIn, programa en Buffer vía API, y envía una notificación a Slack con vista previa. Tomó tres horas construirlo y ahorra seis horas por semana.
Cuándo usar Make.com
Make.com merece más crédito del que recibe de los desarrolladores. El constructor visual de escenarios es genuinamente excelente, y para equipos no técnicos, es la decisión correcta más seguido de lo que no.
Su equipo no es técnico
La interfaz de Make.com es la mejor en su clase para construcción visual de workflows. Puede entregársela a un gerente de marketing, líder de operaciones o fundador que no sabe nada de código y lo descubrirá. n8n es más opinionado y requiere más paciencia.
Necesita configuración rápida con aplicaciones comunes
Make.com tiene 1,000+ conectores de aplicaciones pre-construidos con interfaces pulidas para autenticación. Conectar HubSpot, Slack, Airtable, Gmail y Typeform es genuinamente hacer clic y listo. n8n también tiene soporte OAuth, pero los conectores de Make.com tienden a exponer más de la superficie API de cada aplicación a través de la interfaz visual.
Su complejidad es moderada
Ramificación, filtrado, agregación, iteración — Make.com maneja todo esto bien visualmente. Los problemas empiezan cuando necesita lógica personalizada que no mapea a un módulo pre-construido. En ese punto está escribiendo solicitudes HTTP de todos modos y n8n se convierte en la mejor opción.
Ejemplos reales de Make.com de trabajo con clientes
Ejemplo 1: Dashboard de reportes de marketing. Una agencia de 10 personas necesitaba reportes semanales extrayendo datos de Google Ads, Facebook Ads y HubSpot a una Google Sheet. Un coordinador de marketing construyó todo el escenario de Make.com en un día usando sus conectores pre-construidos. Sin tiempo de desarrollador necesario.
Ejemplo 2: Secuencia de onboarding de clientes. Una firma consultora disparaba un onboarding multi-paso: nuevo cliente firma en Docusign, Make.com inicia una secuencia — crea workspace de Notion, envía email de bienvenida, agrega a HubSpot, crea canal de Slack, programa kickoff en Calendly. Una persona de operaciones no técnica lo construyó y lo mantiene.
Ejemplo 3: Monitoreo de redes sociales. Monitoreo de marca a través de Twitter, Reddit y Google Alerts, filtrando por keywords específicas, deduplicando menciones, enrutando a Slack o Notion basándose en sentimiento. El escenario es visualmente complejo pero usa solo módulos pre-construidos, la fortaleza de Make.com.
Cuándo elegir código personalizado
El código personalizado frecuentemente es la respuesta incorrecta — pero cuando es correcta, es claramente correcta.
Su lógica es propietaria
Si la lógica de automatización en sí es parte de su ventaja competitiva — un algoritmo de precios, un motor de matching, un sistema de detección de fraude — no debería construirlo dentro de una plataforma de terceros que no controla. Escriba el código. Sea dueño de él.
Necesita rendimiento máximo
Las plataformas de automatización añaden latencia. Un webhook llegando a n8n podría tomar 200-500ms en ejecutarse. Una función Node.js personalizada en su propia infraestructura puede responder en menos de 20ms. Para sistemas en tiempo real, interacciones orientadas al cliente, o cualquier cosa sensible al tiempo, esa diferencia importa.
La automatización es parte de su producto
Si está construyendo una funcionalidad que automatiza algo para sus usuarios — no solo automatización de procesos internos — casi con certeza necesita código personalizado. Los usuarios no deberían saber que una herramienta de terceros está ejecutando su experiencia.
Tiene necesidades de integración inusuales
A veces la API que necesita llamar no tiene un nodo de n8n o módulo de Make.com. A veces requiere flujos OAuth, respuestas en streaming, manejo de archivos binarios o esquemas de autenticación personalizados que las plataformas no pueden soportar limpiamente. El código personalizado elimina esas restricciones por completo.
Ejemplos reales de código personalizado de trabajo con clientes
Ejemplo 1: Motor de matching inmobiliario. Construí un servicio Node.js que corre cada 15 minutos, extrae nuevos listados de múltiples APIs, los califica contra perfiles de preferencias de compradores usando un algoritmo personalizado, y envía alertas personalizadas. La lógica de matching era demasiado específica del negocio para una plataforma no-code, y el cliente quería ser dueño de la propiedad intelectual.
Ejemplo 2: Sistema de dunning de pagos. Una empresa SaaS necesitaba lógica de reintentos personalizada para pagos fallidos: reintentar a los 3 días, 7 días, 14 días con diferente copy de email cada vez, pausar reintentos si el cliente contacta a soporte, reiniciar si actualizan la información de pago. Las condiciones de ramificación alrededor del estado del cliente eran demasiado complejas para mantener visualmente. Un worker Node.js personalizado con una máquina de estados en Postgres lo manejó limpiamente.
Ejemplo 3: Procesador de webhooks en tiempo real. Un cliente fintech recibía 50,000 webhooks bancarios por día, cada uno requiriendo procesamiento en menos de 100ms para actualizar saldos de cuentas de clientes. Las plataformas de automatización ni se consideraron. Un servidor Fastify con una cola de trabajos Bull lo manejó.
Código lado a lado: La misma automatización en cada herramienta
Para hacerlo concreto, aquí está la misma automatización implementada de tres formas: recibir un envío de formulario, enriquecer con datos de la empresa, calificar al lead, y guardar en un CRM.
Workflow de n8n (extracto JSON)
Así es como luce un nodo de workflow de n8n en el formato JSON exportado:
{
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "lead-capture",
"responseMode": "lastNode"
},
"position": [240, 300]
},
{
"name": "Enrich Lead",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "GET",
"url": "https://company.clearbit.com/v2/companies/find",
"queryParameters": {
"parameters": [
{ "name": "domain", "value": "={{ $json.email.split('@')[1] }}" }
]
},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"position": [460, 300]
},
{
"name": "Score Lead",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const lead = $input.first().json;\nconst company = $('Enrich Lead').first().json;\n\nlet score = 0;\nif (company.metrics?.employees > 50) score += 30;\nif (company.metrics?.estimatedAnnualRevenue > 1000000) score += 25;\nif (lead.timeline === 'immediate') score += 25;\nif (lead.budget > 5000) score += 20;\n\nreturn [{ json: { ...lead, company, score, tier: score > 70 ? 'hot' : score > 40 ? 'warm' : 'cold' } }];"
},
"position": [680, 300]
},
{
"name": "Save to HubSpot",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"resource": "contact",
"operation": "upsert",
"email": "={{ $json.email }}",
"additionalFields": {
"leadScore": "={{ $json.score }}",
"lifecyclestage": "={{ $json.tier === 'hot' ? 'opportunity' : 'lead' }}"
}
},
"position": [900, 300]
}
]
}n8n le da sintaxis de expresiones (={{ }}), nodos nativos de HubSpot, y un nodo Code donde escribe JavaScript real. El workflow se versiona como JSON.
Escenario de Make.com (configuración de módulos)
Make.com no exporta como JSON legible de la misma manera, pero así es como luce la configuración de módulos conceptualmente:
{
"scenario": {
"name": "Lead Capture and Score",
"modules": [
{
"id": 1,
"type": "webhook",
"name": "Receive Form Submission",
"config": { "method": "POST" }
},
{
"id": 2,
"type": "http.makeRequest",
"name": "Clearbit Enrichment",
"config": {
"url": "https://company.clearbit.com/v2/companies/find",
"method": "GET",
"qs": [{ "key": "domain", "value": "{{split(1.email, '@')[1]}}" }],
"headers": [{ "key": "Authorization", "value": "Bearer {{connection.apiKey}}" }]
}
},
{
"id": 3,
"type": "builtin.basicRouter",
"name": "Route by Company Size",
"routes": [
{
"label": "Large Company",
"filter": { "condition": "{{2.metrics.employees}}", "operator": "greater", "value": "50" }
},
{
"label": "Small Company",
"filter": { "condition": "{{2.metrics.employees}}", "operator": "less", "value": "50" }
}
]
},
{
"id": 4,
"type": "hubspot.createUpdateContact",
"name": "Save to HubSpot",
"config": {
"email": "{{1.email}}",
"properties": [
{ "name": "lead_score", "value": "75" }
]
}
}
]
}
}Note lo que falta: la lógica de scoring real. Make.com requeriría un campo de fórmula separado o un router con múltiples ramas para aproximar lo que el nodo Code de n8n hace en diez líneas. Para scoring simple esto funciona, pero la lógica se vuelve difícil de manejar a medida que las condiciones crecen.
Implementación personalizada en Node.js
import Fastify from "fastify";
import { clearbit } from "./lib/clearbit";
import { hubspot } from "./lib/hubspot";
import { slack } from "./lib/slack";
const app = Fastify();
interface LeadPayload {
email: string;
name: string;
company: string;
timeline: "immediate" | "quarter" | "year";
budget: number;
message: string;
}
function scoreLead(lead: LeadPayload, company: ClearbitCompany): number {
let score = 0;
// Company signals
if ((company.metrics?.employees ?? 0) > 50) score += 30;
if ((company.metrics?.estimatedAnnualRevenue ?? 0) > 1_000_000) score += 25;
if (company.category?.sector === "Technology") score += 10;
// Lead signals
if (lead.timeline === "immediate") score += 25;
if (lead.budget > 10_000) score += 20;
else if (lead.budget > 5_000) score += 10;
return Math.min(score, 100);
}
app.post<{ Body: LeadPayload }>("/webhooks/lead", async (request, reply) => {
const lead = request.body;
// Enrich with company data
const domain = lead.email.split("@")[1];
const company = await clearbit.company.find({ domain });
// Score the lead
const score = scoreLead(lead, company);
const tier = score >= 70 ? "hot" : score >= 40 ? "warm" : "cold";
// Save to CRM
await hubspot.contacts.upsert({
email: lead.email,
properties: {
firstname: lead.name.split(" ")[0],
lastname: lead.name.split(" ").slice(1).join(" "),
lead_score: score,
lead_tier: tier,
lifecyclestage: tier === "hot" ? "opportunity" : "lead",
},
});
// Alert for hot leads
if (tier === "hot") {
await slack.postMessage({
channel: "#hot-leads",
text: `Hot lead: ${lead.name} at ${lead.company} (score: ${score})`,
});
}
return reply.code(200).send({ received: true, score, tier });
});
app.listen({ port: 3000 });Esto es más limpio de leer, más fácil de probar y trivialmente extensible. El compromiso es que usted lo escribió, usted lo aloja y usted lo mantiene. No hay drag-and-drop.
Ejemplos de proyectos reales
Proyecto 1: Reportes de clientes de agencia (Make.com)
Cliente: Agencia de marketing digital de 15 personas Problema: Extraer manualmente reportes semanales de 6 plataformas publicitarias a Google Sheets tomaba 5 horas cada lunes Herramienta elegida: Make.com Por qué: El equipo de marketing es dueño de la automatización, no el desarrollador. Conectores pre-construidos para Google Ads, Meta Ads, LinkedIn Ads y Google Sheets. Sin código necesario. Resultado: 5 horas ahorradas semanalmente. La gerente de marketing lo construyó y mantiene independientemente. Costo: $18.82/mes en Make.com Pro
Proyecto 2: Calificación de leads SaaS (n8n)
Cliente: Startup SaaS B2B, 300+ leads entrantes/semana Problema: Equipo de ventas gastando 4 horas/día calificando leads manualmente, leads calientes enfriándose Herramienta elegida: n8n autoalojado Por qué: Necesitaba algoritmo de scoring personalizado, integración con OpenAI para análisis de mensajes, lógica de enrutamiento compleja. Desarrollador en el equipo para mantenerlo. Resultado: 0 horas de calificación manual. Tiempo de respuesta menor a 2 minutos. Aumento de 3x en conversión de leads calientes. Costo: $12/mes (servidor + OpenAI)
Proyecto 3: Sincronización de inventario en tiempo real (Node.js personalizado)
Cliente: Marca de retail con múltiples ubicaciones Problema: Niveles de inventario entre 12 ubicaciones y 3 almacenes desincronizados. Sobreventas ocurriendo diariamente. Herramienta elegida: Servicio Node.js personalizado Por qué: Requería tiempo de respuesta menor a 200ms al hacer un pedido, lógica de asignación compleja basada en zonas de envío, integración directa con sistema propietario de gestión de almacenes Resultado: Cero sobreventas desde el lanzamiento. Precisión de asignación de pedidos 99.8%. Costo: $25/mes (VM dedicada)
Marco de decisión
Cuando recibo una nueva solicitud de automatización, trabajo estas preguntas en orden:
Diagrama de flujo de decisión de herramientas de automatización
Trabaje cada pregunta en orden
1. ¿Esta automatización es central a su producto o experiencia de usuario?
2. ¿Requiere tiempo de respuesta menor a 100ms o más de 1M de ejecuciones mensuales?
3. ¿Involucra lógica propietaria o datos que deben permanecer en su infraestructura?
4. ¿Una persona no desarrolladora necesitará construir o mantener esto?
5. ¿Necesita código personalizado, agentes de IA o lógica condicional compleja?
Desempate por volumen
Si el costo es una preocupación y las ejecuciones mensuales superan 10K, n8n autoalojado supera a Make.com siempre, independientemente de otros factores.
La versión corta
- Persona no técnica necesita ser dueña: Make.com
- Lógica compleja, integración IA, alto volumen o privacidad de datos: n8n
- Funcionalidad central del producto, algoritmo único o rendimiento menor a 100ms necesario: Código personalizado
Errores comunes que veo
Error 1: Usar código personalizado para automatizaciones estándar
Un desarrollador ve un flujo simple de webhook a CRM e inmediatamente levanta un servicio Node.js. Ese servicio ahora necesita hosting, monitoreo, pipelines de despliegue y mantenimiento. n8n lo habría manejado en 20 minutos. Reserve el código personalizado para cuando realmente importa.
Error 2: Usar Make.com para workflows de alto volumen
Una startup elige Make.com porque se ve amigable. Seis meses después tienen 500K operaciones mensuales y una factura de $300/mes por lo que costaría $20 en n8n autoalojado. La migración es dolorosa porque sus escenarios son complejos. Planifique para el volumen desde temprano.
Error 3: Construir lógica compleja en routers de Make.com
Un router de Make.com con 8 ramas y 40 condiciones de filtro es una pesadilla de mantenimiento. Si se encuentra construyendo lógica de enrutamiento profundamente anidada en Make.com, lo ha superado. Migre a n8n donde los nodos Code mantienen esa lógica legible.
Error 4: Tratar n8n como reemplazo directo de Zapier
n8n requiere más configuración y pensamiento que Zapier o Make.com. Si lo configura e inmediatamente intenta usarlo como Zapier — esperando que todo funcione sin configuración — se frustrará. Invierta unas horas entendiendo nodos, expresiones y credenciales. Da frutos.
Error 5: No planificar para fallos
Las tres herramientas pueden y fallan. Los webhooks se pierden. Los límites de tasa de API se alcanzan. Los servicios de terceros se caen. Make.com tiene un manejo de errores integrado decente. n8n tiene lógica de reintentos y workflows de error. El código personalizado tiene lo que usted construya. Cualquier herramienta que elija, diseñe para el fallo desde el día uno.
Mi opinión honesta después de 50+ proyectos
Make.com frecuentemente es subestimado por los desarrolladores. Para un equipo no técnico que necesita ser dueño de sus automatizaciones, es la decisión correcta — incluso si el modelo de precios por operación duele a escala. He entregado escenarios de Make.com a gerentes de marketing y coordinadores de operaciones que los mantuvieron independientemente durante meses sin llamarme.
n8n es mi herramienta diaria para trabajo con clientes. La combinación de construcción visual, nodos Code, autoalojamiento y soporte nativo de IA cubre el 80% de lo que necesito. La curva de aprendizaje es real pero manejable. Los números económicos a escala son difíciles de discutir.
El código personalizado lo reservo para situaciones donde las otras herramientas genuinamente no pueden entregar. Esto ocurre menos de lo que podría esperar. Cuando ocurre, generalmente es un requisito de rendimiento, un algoritmo propietario o una funcionalidad a nivel de producto — y en esos casos, no hay debate.
El peor resultado es no hacer coincidir la herramienta con el problema. Lógica compleja en Make.com se vuelve inmantenible. Workflows estándar en código personalizado se vuelven costosos de mantener. Propiedad no técnica de n8n se convierte en una carga de soporte.
Elija la herramienta que coincida con su equipo, su volumen y la naturaleza de la lógica. Ese es todo el marco.
¿Trabajando en una automatización y no está seguro de qué dirección tomar? Ofrezco llamadas gratuitas de 30 minutos para repasar su caso de uso específico y recomendar el enfoque correcto. Contácteme y lo resolveremos juntos.