Módulo 2: Funnels And Conversion
La tasa de conversión por paso
Descripción
La tasa de conversión de un paso (conversionRate) es la proporción de usuarios que, habiendo llegado al paso anterior, también llegaron a este: usuarios del paso N dividido entre usuarios del paso N-1. Es la primera pregunta real que se le puede hacer a un funnel bien definido (lección 2): no "¿cuántos llegaron aquí?" sino "¿qué fracción de los que pudieron llegar, llegaron?".
Conexión con el módulo. Esta lección responde el Ejercicio 1 que quedó pendiente en la presentación del módulo: viste que visit → view_product pierde 4,000 personas en números absolutos, la caída más grande del funnel, y te pedimos una hipótesis sobre cuál paso convierte peor. Aquí vas a calcular la respuesta real, y vas a confirmar (o desmentir) tu intuición. Esta es también la aplicación más directa de una idea que ya viste en el módulo 1: una tasa dice más que un total — aquí, la tasa de un paso dice más que la cantidad de gente que se perdió en él.
Una analogía cotidiana: el peaje, no el kilómetro
Imagina una carretera con cuatro peajes seguidos. En cada peaje, algunos autos se salen de la ruta (van a otro destino, se arrepienten, dan la vuelta). Si un peaje ve pasar 10,000 autos y un colega tuyo ve pasar 900 en el último, podrías pensar que "se perdieron 9,100 autos en el camino" — pero esa cifra mezcla cuatro decisiones distintas, tomadas en cuatro lugares distintos, por gente que llegó a cada peaje en condiciones distintas. Lo que de verdad quieres saber, peaje por peaje, es: de los autos que llegaron a este peaje, ¿qué porcentaje siguió hacia el próximo? Esa pregunta, respondida peaje por peaje, es la tasa de conversión por paso — y es la única forma de comparar peajes entre sí de manera justa, sin que el peaje con más tráfico arriba parezca automáticamente "el peor" solo por tener más autos para empezar.
Ejemplo trabajado: stepConversionRates() sobre el funnel de Mercado
// L3: la tasa de conversion de paso a paso -- usuarios_paso_N / usuarios_paso_N-1
function stepConversionRates(steps) {
return steps.map((step, i) => {
if (i === 0) return { ...step, conversionRate: null };
const rate = step.users / steps[i - 1].users;
return { ...step, conversionRate: rate };
});
}
const funnel = [
{ name: 'visit', users: 10000 },
{ name: 'view_product', users: 6000 },
{ name: 'add_to_cart', users: 2400 },
{ name: 'checkout', users: 1200 },
{ name: 'purchase', users: 900 },
];
console.log('=== Tasa de conversion por paso ===\n');
stepConversionRates(funnel).forEach((row) => {
const pct = row.conversionRate === null ? '—' : (row.conversionRate * 100).toFixed(1) + '%';
console.log(' ' + row.name.padEnd(14) + String(row.users).padStart(6) + ' conversionRate: ' + pct);
});
Qué esperar. Al correr el archivo con Node, la salida es exactamente esta:
=== Tasa de conversion por paso ===
visit 10000 conversionRate: —
view_product 6000 conversionRate: 60.0%
add_to_cart 2400 conversionRate: 40.0%
checkout 1200 conversionRate: 50.0%
purchase 900 conversionRate: 75.0%
Ahora tienes la respuesta al Ejercicio 1 de la presentación del módulo. La caída absoluta más grande (visit → view_product, 4,000 personas) resulta tener la segunda tasa más alta del funnel: 60% de conversión. En cambio, el paso con la tasa más baja —el que de verdad convierte peor, proporcionalmente— es view_product → add_to_cart, con apenas 40%. En números absolutos pierde menos gente que el primer paso (3,600 contra 4,000), pero de cada 10 personas que ven un producto, 6 se van sin agregarlo al carrito — la peor proporción de las cuatro. Si tu hipótesis en la lección 1 apuntaba al primer paso por su caída absoluta, este es exactamente el tipo de error de intuición que la tasa corrige.
Fíjate también en visit: su conversionRate es null, no 100% ni 0%. Esto es deliberado, no un descuido — el primer paso de un funnel no tiene un paso anterior contra el cual medirse, así que no tiene tasa de conversión propia. Asignarle 100% sería técnicamente "correcto" en un sentido trivial (todos los que visitaron, visitaron), pero engañoso: sugiere que ese número participa en los cálculos de conversión igual que los demás, cuando en realidad es el punto de partida, no una tasa. null es la forma honesta de decir "esta pregunta no aplica aquí".
Por qué el orden importa: steps[i - 1], no un número fijo
Mira de nuevo la línea clave del código: const rate = step.users / steps[i - 1].users;. El divisor no es funnel[0].users (el primer paso, visit) — es steps[i - 1], el paso inmediatamente anterior en el arreglo. Esto significa que cada tasa de conversión es local: mide la eficiencia de ese peaje específico, no la eficiencia acumulada desde el principio del funnel. Si quisieras saber "qué porcentaje de las visitas totales llegó al checkout" (una pregunta distinta, sobre un tramo más amplio del funnel, no sobre un solo paso), estarías pidiendo una macro-conversión — el tema exacto de la lección 6. Por ahora, cada conversionRate en esta lección responde una pregunta muy específica y muy local: de los que llegaron al paso anterior, ¿cuántos llegaron a este?
Errores comunes
Calcular una tasa de conversión sin dejar explícito contra qué paso se está midiendo. Qué pasa: en una reunión, alguien dice "la conversión de checkout es 75%" sin aclarar si es checkout → purchase (75%, correcto) o visit → checkout (12%, un número completamente distinto que también involucra la palabra "checkout"). Por qué pasa: en el lenguaje hablado es natural nombrar solo el paso de llegada ("la conversión de checkout") y omitir el paso de partida, porque en la cabeza de quien habla el contexto está claro — pero ese contexto no viaja con la frase cuando otra persona la repite en otra reunión. Cómo detectarlo: si dos personas del equipo citan "la conversión de X" con números distintos y ambas tienen razón, es porque están midiendo tramos distintos del mismo funnel. Cómo corregirlo: nombra siempre la tasa con sus dos extremos explícitos —checkout → purchase: 75%— nunca con un solo nombre de paso suelto; es la misma disciplina de denominador explícito que exigió la lección 2 al definir un paso.
Comparar la tasa de conversión de dos pasos que miden cosas de tamaño distinto en el negocio. Qué pasa: un equipo concluye que checkout → purchase (75%) "va mejor" que view_product → add_to_cart (40%) y por lo tanto reduce el foco de optimización en el primero, sin considerar que ambos pasos, aunque tengan tasas distintas, representan decisiones de compra de peso muy distinto para el usuario (agregar algo al carrito es una decisión barata; pagar ya es una decisión tomada). Por qué pasa: comparar dos porcentajes uno al lado del otro es visualmente tentador, y el número más alto se lee como "el que va mejor", sin preguntar si las dos tasas son comparables en primer lugar. Cómo detectarlo: pregúntate si ambos pasos representan una fricción del mismo tipo (técnica, de decisión, de confianza) — si no, comparar sus tasas directamente puede llevar a conclusiones que suenan rigurosas pero no lo son. Cómo corregirlo: usa las tasas de conversión para comparar el mismo paso a través del tiempo (¿mejoró add_to_cart este mes respecto al anterior?) o el mismo paso entre segmentos (lección 7) — no para rankear pasos distintos entre sí como si "más alto" siempre significara "mejor".
Ejercicios
Ejercicio 1 — Calcula a mano antes de correr Node. Un funnel de registro tiene estos datos: signup_start: 2000, email_verified: 1400, profile_completed: 980. Calcula, a mano, la tasa de conversión de email_verified y de profile_completed.
Ver solución
email_verified: 1400 / 2000 = 0.70 → 70%. profile_completed: 980 / 1400 = 0.70 → 70%. Las dos tasas son idénticas (70%), aunque los números absolutos de caída son distintos (600 en el primer paso, 420 en el segundo) — otra confirmación de por qué comparar caídas absolutas engaña: en proporción, ambos pasos del registro se comportan exactamente igual de bien (o de mal).
Ejercicio 2 — Encuentra el dato faltante. Un funnel tiene add_to_cart: 3000 y sabes que la tasa de conversión de checkout (el siguiente paso) fue de 45%. ¿Cuántos usuarios llegaron a checkout?
Ver solución
checkout.users = add_to_cart.users × conversionRate = 3000 × 0.45 = 1350 usuarios. La fórmula de stepConversionRates() se puede despejar en cualquier dirección: si tienes dos de las tres cantidades (usuarios del paso anterior, usuarios del paso actual, tasa), puedes calcular la tercera. Esto es útil, por ejemplo, para proyectar cuántos usuarios necesitas arriba del funnel si quieres llegar a una meta de usuarios abajo, dada la tasa de conversión histórica.
Ejercicio 3 — Predice el resultado con datos nuevos. Sin ejecutar Node, para este funnel — [{name:'open', users: 5000}, {name:'scroll', users: 4500}, {name:'click_cta', users: 900}] — di cuál sería el conversionRate de scroll y de click_cta, y cuál de los dos pasos tiene la tasa más baja.
Ver solución
scroll: 4500 / 5000 = 0.90 → 90%. click_cta: 900 / 4500 = 0.20 → 20%. El paso con la tasa más baja es click_cta, y por mucho: solo 1 de cada 5 personas que hicieron scroll terminó haciendo clic en el llamado a la acción. Nota que, en números absolutos, scroll → click_cta pierde 3,600 personas y open → scroll pierde solo 500 — la caída absoluta más grande está, de nuevo, en el paso con la mejor tasa (90%), exactamente el mismo patrón engañoso que viste con el funnel de Mercado.
Resumen y siguiente paso
stepConversionRates() te dio la primera respuesta rigurosa a "¿dónde se pierde la gente?": no mirando cuántas personas se van en números absolutos, sino calculando, paso por paso, qué proporción de quienes llegaron siguió adelante. Con el funnel de Mercado, confirmaste que el paso con la tasa más baja no es el que tiene la caída absoluta más grande (visit → view_product, 60%) sino view_product → add_to_cart, con apenas 40%.
Antes de avanzar deberías poder: calcular a mano la tasa de conversión de un paso dados los usuarios del paso y de su predecesor; y explicar por qué la tasa de conversión más baja no siempre coincide con la caída absoluta más grande.
La lección 4 da el siguiente paso lógico: si cada paso tiene su propia tasa, ¿cómo combinas las cuatro tasas del funnel de Mercado en un solo número que responda "de cada 100 visitas, cuántas terminan en compra"? La respuesta involucra una operación muy específica — y un error clásico que vas a ver desmentido con números reales.
Recursos
- Amplitude, "Interpret your funnel analysis" — amplitude.com/docs/analytics/charts/funnel-analysis/funnel-analysis-interpret. Guía sobre cómo leer las tasas de conversión paso a paso en una herramienta real de analítica. En inglés.
- Mixpanel, "Funnels: Measure conversions through a series of events" — docs.mixpanel.com/docs/reports/funnels. Documentación sobre el cálculo de tasas de conversión por paso en un funnel. En inglés.
- Alistair Croll y Benjamin Yoskovitz, Lean Analytics — leananalyticsbook.com. El capítulo sobre métricas de e-commerce trata en detalle las tasas de conversión por etapa del funnel de compra. En inglés.