Proyecto 4 de Tripleten: Análisis de embudo y retención para MercadoLibre
Análisis de embudo y retención para MercadoLibre
El siguiente proyecto se centra en el análisis de embudo y
retención de usuarios para MercadoLibre, con el propósito de entender en qué
etapa del proceso de compra se pierden más usuarios y cómo mejorar su
permanencia a lo largo del tiempo. Como analista de producto dentro del equipo
de Crecimiento y Retención, la misión consiste en utilizar SQL para mapear el
embudo de conversión completo, identificar los principales puntos de fuga entre
etapas clave —desde la primera visita hasta la compra— y evaluar la retención
de usuarios por cohortes en distintos horizontes temporales. A partir de las
tablas de eventos de embudo y de retención, se busca calcular tasas de
conversión, segmentar resultados por país, dispositivo y fuente de tráfico, y
finalmente proponer mejoras accionables que permitan optimizar tanto la
conversión como la retención, apoyando decisiones de producto basadas en datos.
PARTE 1 – Explorar el esquema y comprender el flujo
1.
Listar
columnas y tipos de datos
Objetivo: conocer la estructura de la tabla
mercadolibre_funnel
Instrucciones:
Imprime los primeros 5 renglones de la tabla.
Identifica qué columnas te serán útiles para el análisis.
CODIGO
select*
FROM
mercadolibre_funnel
LIMIT
5;
2.
Listar
columnas y tipos de datos
Objetivo: conocer la estructura de la tabla
mercadolibre_retention.
Instrucciones:
Imprime los primeros 5 renglones de la tabla.
Identifica qué columnas te serán útiles para el análisis.
CODIGO
SELECT*
FROM
mercadolibre_retention
LIMIT
5;
3.
Explorar
tipos de eventos
Objetivo: confirmar la secuencia del embudo de la tabla
mercadolibre_funnel
Instrucciones:
Lista los eventos (sin duplicados)
Ordena por el nombre del evento
Si no recuerdas el nombre de la columna de los eventos,
puedes imprimir la tabla nuevamente y después completar el ejercicio.
CODIGO
SELECT
DISTINCT event_name
FROM
mercadolibre_funnel
ORDER
BY event_name;
PARTE 2 – Construir el embudo de conversión
1.
Crear
CTEs por etapa
Objetivo: Construir bloques de usuarios únicos por evento
(CTEs) en el rango 2025-01-01 → 2025-08-31, unirlos y contar usuarios por etapa
del embudo. Al unirlos, nos aseguramos de que todos los usuarios pasaron por
cada etapa del embudo.
Instrucciones: Crea una CTE por evento tomando como
referencia los usuarios y mantén el rango de fechas deseado, entre '2025-01-01'
y '2025-08-31'.
Recuerda evitar duplicados.
Usa nombres consistentes para las CTEs: first_visit,
select_item, add_to_cart, begin_checkout, add_shipping_info, add_payment_info,
purchase.
Une las CTEs partiendo de first_visit y encadenando LEFT JOIN
por usuario.
Cuenta con COUNT(<alias>.user_id) en cada etapa en el
SELECT final.
Usa los nombres: usuarios_first_visit, usuarios_select_item,
usuarios_add_to_cart, usuarios_begin_checkout, usuarios_add_shipping_info,
usuarios_add_payment_info y usuarios_purchase.
Instrucciones paso a paso (si las necesitas)
Intenta realizando los ejercicios únicamente con las
instrucciones de arriba, si necesitas más ayuda, lee las siguientes:
En cada CTE:
Selecciona DISTINCT user_id desde mercadolibre_funnel para
evitar duplicados.
Filtra por el evento correspondiente en event_name y por
rango de fechas: de '2025-01-01' a '2025-08-31'.
En el query final:
Comienza con FROM first_visit fv.
Encadena LEFT JOIN con cada CTE por user_id.
En el SELECT, usa COUNT(<alias>.user_id) para cada
alias.
CODIGO
WITH first_visit AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'first_visit'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
select_item AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name IN ('select_item', 'select_promotion')
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_to_cart AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_to_cart'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
begin_checkout AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'begin_checkout'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_shipping_info AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_shipping_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_payment_info AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_payment_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
purchase AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'purchase'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
)
SELECT
COUNT(fv.user_id) AS usuarios_first_visit,
COUNT(si.user_id) AS usuarios_select_item,
COUNT(a.user_id) AS usuarios_add_to_cart,
COUNT(bc.user_id) AS usuarios_begin_checkout,
COUNT(asi.user_id) AS usuarios_add_shipping_info,
COUNT(api.user_id) AS usuarios_add_payment_info,
COUNT(p.user_id) AS usuarios_purchase
FROM first_visit fv
LEFT JOIN select_item si ON fv.user_id = si.user_id
LEFT JOIN add_to_cart a ON fv.user_id = a.user_id
LEFT JOIN begin_checkout bc ON fv.user_id = bc.user_id
LEFT JOIN add_shipping_info asi
ON fv.user_id = asi.user_id
LEFT JOIN add_payment_info
api ON fv.user_id = api.user_id
LEFT JOIN purchase p ON fv.user_id = p.user_id;
2.
Calcular
conversiones entre etapas
Objetivo: A partir de los conteos por etapa del embudo,
calcular el porcentaje de conversión desde la etapa inicial (first_visit) hacia
cada etapa.
Instrucciones: Reutiliza el CTE funnel_counts (o la vista
creada previamente) que ya tiene usuarios_first_visit, usuarios_select_item,
usuarios_add_to_cart, etc.
En el SELECT final, crea 6 columnas de conversión, una por
cada etapa posterior a first_visit, la etapa inicial.
Usa la fórmula etapa actual * 100.0 / etapa inicial.
Asigna los alias: conversion_select_item,
conversion_add_to_cart, conversion_begin_checkout,
conversion_add_shipping_info, conversion_add_payment_info y
conversion_purchase.
Redondea a 2 decimales.
Usa NULLIF(usuarios_first_visit, 0) si temes división por
cero.
Instrucciones paso a paso (si las necesitas):
Intenta realizando los ejercicios únicamente con las
instrucciones de arriba, si necesitas más ayuda, lee las siguientes:
En el SELECT final, crea 6 columnas de conversión:
conversion_select_item = usuarios_select_item * 100.0/
usuarios_first_visit
conversion_add_to_cart = usuarios_add_to_cart * 100.0/
usuarios_first_visit
y así sucesivamente.
Redondea con ROUND(..., 2) para dejar 2 decimales.
CODIGO
WITH first_visit AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'first_visit'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
select_item AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name IN ('select_item', 'select_promotion')
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_to_cart AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_to_cart'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
begin_checkout AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'begin_checkout'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_shipping_info AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_shipping_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_payment_info AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'add_payment_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
purchase AS (
SELECT DISTINCT user_id
FROM mercadolibre_funnel
WHERE event_name = 'purchase'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
funnel_counts AS(
SELECT
COUNT(fv.user_id) AS usuarios_first_visit,
COUNT(si.user_id) AS usuarios_select_item,
COUNT(a.user_id) AS usuarios_add_to_cart,
COUNT(bc.user_id) AS usuarios_begin_checkout,
COUNT(asi.user_id) AS usuarios_add_shipping_info,
COUNT(api.user_id) AS usuarios_add_payment_info,
COUNT(p.user_id) AS usuarios_purchase
FROM first_visit fv
LEFT JOIN select_item si ON fv.user_id = si.user_id
LEFT JOIN add_to_cart a ON fv.user_id = a.user_id
LEFT JOIN begin_checkout bc ON fv.user_id = bc.user_id
LEFT JOIN add_shipping_info asi
ON fv.user_id = asi.user_id
LEFT JOIN add_payment_info
api ON fv.user_id = api.user_id
LEFT JOIN purchase p ON fv.user_id = p.user_id
)
SELECT
ROUND(usuarios_select_item *
100.0/ usuarios_first_visit,2) AS conversion_select_item,
ROUND(usuarios_add_to_cart *
100.0/ usuarios_first_visit,2) AS conversion_add_to_cart,
ROUND(usuarios_begin_checkout *
100.0/ usuarios_first_visit,2) AS conversion_begin_checkout,
ROUND(usuarios_add_shipping_info
* 100.0/ usuarios_first_visit,2) AS conversion_add_shipping_info,
ROUND(usuarios_add_payment_info
* 100.0/ usuarios_first_visit,2) AS conversion_add_payment_info,
ROUND(usuarios_purchase * 100.0/
usuarios_first_visit,2) AS conversion_purchase
FROM funnel_counts;
3.
Segmentar
el Embudo General por país
Objetivo: agrupa las conversiones del embudo por país
(country) y detecta en que etapa del funnel se pierde más a los usuarios.
Instrucciones: Propaga el país en cada CTE del embudo:
Adicionalmente al usuario, selecciona el país (country) para
poder acceder a la información. Mantén el rango de fechas.
En funnel_counts:
ajusta los LEFT JOINs para unir por usuario y país.
Cuenta usuarios únicos por etapa anclando siempre en
first_visits
Recuerda agrupar por la columna que nos interesa.
Calcula las conversiones por país como % sobre los usuarios
de first_visits:
conversion_x = usuarios_x * 100.0/ usuarios_first_visits
Usa los aliases pedidos en el precodigo.
Devuelve una tabla con el país y sus columnas de conversión.
Ordena por conversion_purchase de mayor a menor.
Instrucciones paso a paso (si las necesitas):
Intenta realizando los ejercicios únicamente con las
instrucciones de arriba, si necesitas más ayuda, lee las siguientes:
En cada CTE (first_visits, select_item, add_to_cart,
begin_checkout, add_shipping_info, add_payment_info, purchase):
Selecciona user_id y country, evita los duplicados con
DISTINCT.
Mantén el mismo event_name y el filtrado de fechas.
En el CTE funnel_counts:
Selecciona fv.country y cuenta COUNT(DISTINCT
<alias>.user_id) para cada etapa.
Actualiza cada LEFT JOIN para agregar el match de país:
... ON fv.user_id = <alias>.user_id AND fv.country =
<alias>.country.
Agrupa con GROUP BY fv.country.
En la consulta final:
Selecciona country y calcula:
conversion_select_item, conversion_add_to_cart,
conversion_begin_checkout, conversion_add_shipping_info,
conversion_add_payment_info y conversion_purchase.
Usa usuarios_etapa * 100.0 / NULLIF(usuarios_first_visits ,
0) para evitar ÷ 0.
Ordena por conversion_purchase DESC.
CODIGO
WITH first_visits AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'first_visit'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
select_item AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name IN ('select_item', 'select_promotion')
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_to_cart AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'add_to_cart'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
begin_checkout AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'begin_checkout'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_shipping_info AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'add_shipping_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
add_payment_info AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'add_payment_info'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
purchase AS (
SELECT DISTINCT
user_id,
country
FROM mercadolibre_funnel
WHERE event_name = 'purchase'
AND event_date BETWEEN '2025-01-01' AND
'2025-08-31'
),
funnel_counts AS(
SELECT
fv.country,
COUNT(fv.user_id) AS usuarios_first_visit,
COUNT(si.user_id) AS usuarios_select_item,
COUNT(a.user_id) AS usuarios_add_to_cart,
COUNT(bc.user_id) AS usuarios_begin_checkout,
COUNT(asi.user_id) AS usuarios_add_shipping_info,
COUNT(api.user_id) AS usuarios_add_payment_info,
COUNT(p.user_id) AS usuarios_purchase
FROM first_visits fv
LEFT JOIN select_item si ON fv.user_id = si.user_id AND
fv.country = si.country
LEFT JOIN add_to_cart a ON fv.user_id = a.user_id AND
fv.country = a.country
LEFT JOIN begin_checkout bc ON fv.user_id = bc.user_id AND fv.country
= bc.country
LEFT JOIN add_shipping_info asi
ON fv.user_id = asi.user_id AND fv.country = asi.country
LEFT JOIN add_payment_info
api ON fv.user_id = api.user_id AND
fv.country = api.country
LEFT JOIN purchase p ON fv.user_id = p.user_id AND
fv.country = p.country
GROUP BY fv.country
)
SELECT
country,
usuarios_select_item * 100.0 /
NULLIF(usuarios_first_visit, 0) AS conversion_select_item,
usuarios_add_to_cart * 100.0 /
NULLIF(usuarios_first_visit, 0) AS conversion_add_to_cart,
usuarios_begin_checkout * 100.0
/ NULLIF(usuarios_first_visit, 0) AS conversion_begin_checkout,
usuarios_add_shipping_info *
100.0 / NULLIF(usuarios_first_visit, 0) AS conversion_add_shipping_info,
usuarios_add_payment_info *
100.0 / NULLIF(usuarios_first_visit, 0) AS conversion_add_payment_info,
usuarios_purchase * 100.0 /
NULLIF(usuarios_first_visit, 0) AS conversion_purchase
FROM funnel_counts
ORDER BY conversion_purchase
DESC;
PARTE 3 – Analizar retención y cohortes
1.
Contar
usuarios activos acumulados por país (D7, D14, D21, D28)
Objetivo: Para cada país, contar usuarios activos acumulados
desde su registro, en el rango 2025-01-01 → 2025-08-31, al día 7, día 14, día
21 y día 28.
Instrucciones: Cuenta usuarios activos acumulados con CASE.
Usa los Alias users_d7, users_d14, users_d21, users_d28. Debes contar los
usuarios que cumplan con estas dos condiciones:
usuarios que están activos (active = 1) .
usuarios donde day_after_signup es mayor o igual al día de
interés.
Evita duplicados.
Filtra la tabla por activity_date entre '2025-01-01' y
'2025-08-31'.
Agrupa y ordena por país country.
Instrucciones paso a paso (si las necesitas)
Intenta realizando los ejercicios únicamente con las
instrucciones de arriba, si necesitas más ayuda, lee las siguientes:
Para cada hito (D7, D14, D21, D28) agrega una columna y usa
COUNT con DISTINCT CASE WHEN para contar cuando:
day_after_signup sea mayor o igual a los días de interés.
(e.j. day_after_signup ≥ 7)
el usuario sea activo, es decir active = 1
Aplica WHERE activity_date BETWEEN '2025-01-01' AND
'2025-08-31'.
Recuerda el orden SELECT, FROM, WHERE, GROUP BY y ORDER BY.
CODIGO
SELECT
country,
COUNT (DISTINCT CASE WHEN
day_after_signup >= 7 AND active = 1 THEN user_id END) AS users_d7,
COUNT (DISTINCT CASE WHEN
day_after_signup >= 14 AND active = 1 THEN user_id END) AS users_d14,
COUNT (DISTINCT CASE WHEN
day_after_signup >= 21 AND active = 1 THEN user_id END) AS users_d21,
COUNT (DISTINCT CASE WHEN
day_after_signup >= 28 AND active = 1 THEN user_id END) AS users_d28
FROM mercadolibre_retention
WHERE activity_date BETWEEN
'2025-01-01' AND '2025-08-31'
GROUP BY country
ORDER BY country;
2.
Convertir
conteos a % de retención por país
Objetivo: Convertir los conteos del Task 1 en porcentajes de
retención por país al día 7, día 14, día 21 y día 28.
Instrucciones: Parte del query del Task 1.
Calcular el porcentaje de retención para D7, D14, D21, y D28.
Por cada hito debes:
Contar los usuarios, multiplicar por 100.0 y dividir entre el
total de usuarios únicos.
Redondea a 1 decimal.
Evita división por cero.
Modifica los alias a: retention_d7_pct, retention_d14_pct,
retention_d21_pct y retention_d28_pct.
Instrucciones paso a paso (si las necesitas)
Intenta realizando los ejercicios únicamente con las
instrucciones de arriba, si necesitas más ayuda, lee las siguientes:
Conserva las mismas columnas, pero modifica el código de cada
conteo y su alias.
Para cada hito (7/14/21/28), usa el mismo CASE WHEN del Task
1 pero
Añade la división: (conteo X) * 100.0 / (conteo user_id), 0)
Usa DISTINCT en el denominador de la división para tomar en
cuenta usuarios únicos.
Evita división por cero usando NULLIF() en el denominador de
la división.
Redondea para mejorar la legibilidad: ROUND(... ,1).
CODIGO
SELECT
country,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 7 AND active = 1
THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 1) AS retention_d7_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 14 AND active = 1 THEN user_id END) /
NULLIF(COUNT(DISTINCT user_id), 0), 1) AS retention_d14_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN day_after_signup >= 21 AND
active = 1 THEN user_id END) / NULLIF(COUNT(DISTINCT user_id), 0), 1) AS
retention_d21_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 28 AND active = 1 THEN user_id END) / NULLIF(COUNT(DISTINCT
user_id), 0), 1) AS retention_d28_pct
FROM mercadolibre_retention
WHERE activity_date BETWEEN
'2025-01-01' AND '2025-08-31'
GROUP BY country
ORDER BY country;
3.
Definir
la cohorte de registro
Objetivo: Ahora vamos
a analizar la retención por cohort. El primer paso es crear una consulta SQL
que asigne el cohort en formato YYYY-MM a cada usuario (usando su primera fecha
de registro).
Pasos
Selecciona los campos base: user_id
Toma la fecha de registro del usuario ( signup_date) del
usuario. Utiliza MIN() para capturar la primera fecha de registro, en caso de
que hayan multiples signup_dates por usuario.
Construye el cohort mensual: primero toma el mes de la fecha
de registro usando DATE_TRUNC y luego formatea el resultado como ‘YYYY-MM’
encapsulando en TO_CHAR . Asignale alias cohort.
Agrupa por usuario.
Muestra solo las primeras 5 filas para validar.
Instrucciones paso a paso (si las necesitas):
Desde mercadolibre_retention, selecciona user_id.
Calcula la primera fecha de registro por usuario con
MIN(signup_date) y muéstrala como signup_date
A partir de esa fecha mínima, calcula cohort con:
TO_CHAR(DATE_TRUNC('month', MIN(signup_date)), 'YYYY-MM') AS
cohort.
Agrupa solo por user_id.
Limita el resultado a LIMIT 5 para validar.
CODIGO
SELECT
user_id,
MIN(signup_date) AS signup_date,
TO_CHAR (DATE_TRUNC('month',
MIN(signup_date)), 'YYYY-MM') AS cohort
FROM
mercadolibre_retention
GROUP BY user_id
LIMIT 5;
4.
Calcular
retención por cohorte y periodo D7, D14, D21, D28
Objetivo: Ahora, para cada cohorte mensual (YYYY-MM), vas a
calcular el % de usuarios activos al día 7, 14, 21, y 28 desde su registro.
Pasos
Convierta la consulta anterior en un CTE: Ya se hizo por ti
en el código ✅
Se añadió WITH cohort AS(
Anexa un CTE llamado actividad que:
Tome las columnas claves: user_id, cohort, day_after_signup y
active de la tabla mercadolibre_retention
Ademas, añade el cohort del CTE cohort haciendo un LEFT JOIN
Filtra por activity_date en el rango dado del '2025-01-01' al
'2025-08-31'.
Consulta final: Escribe una consulta utilizando los
resultados del CTE actividad que:
Selecciona cohort
Mide retención para cada periodo: cuenta usuarios activos
acumulados al D7, D14, D21, D28 y los divide por el tamaño de la cohorte. Misma
lógica del ejercicio donde calculaste retención por país. Utiliza los
siguientes alias: retention_d7_pct, retention_d14_pct, retention_d21_pct,
retention_d28_pct
Agrupa y ordena por cohort.
CODIGO
WITH cohort AS (
SELECT
user_id,
TO_CHAR(DATE_TRUNC('month',
MIN(signup_date)), 'YYYY-MM') AS cohort
FROM mercadolibre_retention
GROUP BY user_id
),
activity AS (
SELECT DISTINCT
r.user_id,
c.cohort,
r.day_after_signup,
r.active
FROM mercadolibre_retention r
LEFT JOIN cohort c ON r.user_id = c.user_id
WHERE r.activity_date BETWEEN '2025-01-01'
AND '2025-08-31'
)
SELECT
cohort,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 7 AND active = 1 THEN user_id END) / NULLIF(COUNT
(DISTINCT user_id),0),1) AS retention_d7_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 14 AND active = 1 THEN user_id END) /
NULLIF(COUNT(DISTINCT user_id),0),1) AS retention_d14_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 21 AND active = 1 THEN user_id END) /
NULLIF(COUNT(DISTINCT user_id),0),1) AS retention_d21_pct,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN
day_after_signup >= 28 AND active = 1 THEN user_id END) /
NULLIF(COUNT(DISTINCT user_id),0),1) AS retention_d28_pct
FROM activity
GROUP BY cohort
ORDER BY cohort;
PARTE 4 – Resumen ejecutivo
Informe ejecutivo (C → F → I)
Prepare un Informe ejecutivo con formato C → F → I
contestando a cada una de las preguntas del Negocio:
Contexto: Qué proceso analizaste y qué periodo abarca.
Hallazgos: Señalar las cohortes con las mejores y peores
retenciones.
Implicaciones: Acciones concretas (p. ej. optimizar
onboarding, notificaciones o recompensas).
Reflexión personal:
¿Qué etapa mejorarías primero?
¿Qué aprendiste sobre el comportamiento del usuario?
Context
Entre el [01/01/2025] y
el [08/31/2025], ¿cuál es la tasa de conversión entre cada etapa clave del
embudo.
Entre el 01/01/2025 y el 31/08/2025, muestra cómo progresan los
usuarios en las distintas etapas clave del embudo de conversión, y señala
cohortes sobresalientes y áreas de mejora para la optimización del proceso.
Se analizó el proceso de conversión de usuarios a lo largo del embudo general:
desde la selección de ítems hasta la compra final, abarcando el periodo del 1
de enero al 31 de agosto de 2025. Las etapas incluyen: selección de ítem,
agregar al carrito, inicio de checkout, agregar información de envío, agregar
información de pago, y compra completada.
¿En
qué paso se observa la mayor caída porcentual de usuarios?
Entre el 01/01/2025 y el 31/08/2025, el proceso analizado fue el embudo
de conversión de usuarios en la plataforma, desde la selección de producto
hasta la compra final.
Se revisó el embudo general para determinar en qué etapa se pierde el mayor
porcentaje de usuarios, considerando cohortes mensuales y el comportamiento por
país.
¿Cómo
varía esta pérdida por país (country)?
Entre el 01/01/2025 y el 31/08/2025 se analizó el embudo de conversión por país
en el proceso de compra, poniendo especial atención a la pérdida porcentual
entre “selección de producto” y “agregar al carrito”.
El estudio cubre el embudo digital, evaluando la conversión por país desde la
selección de producto hasta compra final, y resaltando dónde se da la mayor
“fuga” de usuarios en el paso clave de agregar al carrito.
¿Qué tan bien retenemos a los usuarios a lo largo del tiempo?
La retención de usuarios a lo largo del tiempo muestra diferencias significativas según países y cohortes temporales.
Se analizó el proceso de retención de usuarios en la plataforma utilizando
datos que abarca conversiones por país y cohortes mensuales, durante el periodo
de enero a agosto de 2025. El análisis se enfocó en las tasas de retención
semanal (días 7, 14, 21 y 28) tanto por país como por cohorte de registro.
Para
los usuarios que se registraron entre el [01/01/2025] y el [06/01/2025], ¿cuál
es la tasa de retención en D7, D14, D21, D28?
Para los usuarios registrados entre el 01/01/2025 y el 06/01/2025 (cohorte de
enero 2025), la tasa de retención por días clave es la siguiente: D7 = 86.2%,
D14 = 56.2%, D21 = 24.1%, D28 = 3%.
Se analizó el proceso de retención para la cohorte de usuarios que se
registraron entre el 1 y el 6 de enero de 2025. El análisis cubre las tasas de
retención a 7, 14, 21 y 28 días.
🔹
*¿Cómo se comporta la retención agrupados por país (`country`)?
El análisis de la retención de usuarios agrupados por país muestra diferencias relevantes a lo largo de las distintas ventanas de tiempo. Se analizó el proceso de retención agrupando usuarios por país utilizando registros de 2025. Las tasas de retención se evaluaron en los días 7, 14, 21 y 28 tras el alta del usuario, comparando mercados clave en LATAM.
Hallazgo
Entre el [01/01/2025] y
el [08/31/2025], ¿cuál es la tasa de conversión entre cada etapa clave del
embudo.
Las tasas de conversión globales por etapa en el embudo general para
todo el período fueron:
Selección de ítem: 76.90%
Agregar al carrito: 11.01%
Inicio de checkout: 4.00%
Información de envío: 2.42%
Información de pago: 2.08%
Compra: 1.25%
La retención por cohortes mensuales muestra una caída abrupta en agosto 2025
(cohorte 2025-08), donde la retención a 7, 14, 21 y 28 días desciende
notablemente respecto a meses anteriores:
Agosto 2025: 7d 70.8%, 14d 29.7%, 21d 7.5%, 28d 0.2%
Meses enero-julio 2025: promedio 7d alrededor del 86%, 14d entre 54% y 57%, 21d
cerca del 25%, 28d entre 2% y 3%
A nivel de país, México presenta una conversión final de compra del 2.48%,
consistentemente alta frente a otros países pares como Uruguay, Perú, Argentina
y Chile, mientras que Paraguay destaca por un embudo sin compras y una gran
caída en cada etapa posterior al carrito.
¿En
qué paso se observa la mayor caída porcentual de usuarios?
La mayor caída porcentual ocurre entre la etapa “seleccionar producto”
(76.90 %) y “agregar al carrito” (11.01 %), lo que representa una disminución
del 65.89 puntos porcentuales entre esas dos fases claves. Esto significa que,
aunque muchos usuarios exploran productos, una mínima parte los añade al
carrito. Por cohortes, la peor retención ocurrió en agosto 2025 (cohorte
2025-08), donde la caída es drástica en todos los pasos de retención mensual
respecto al promedio de meses anteriores.
¿Cómo
varía esta pérdida por país (country)?
La pérdida porcentual entre “selección de producto” y “agregar al carrito” varía
notablemente por país.
Las mayores pérdidas en la primera etapa las presentan Perú (74.55 pp), Bolivia
(70.97 pp) y México (66.53 pp). Uruguay y Chile retienen mejor en el paso “add
to cart”. Cohortes por país muestran que esta caída marca el principal cuello
de botella para conversiones posteriores.
¿Qué tan bien retenemos a los usuarios a lo largo del tiempo?
Los mejores resultados de retención por país se observan en Brasil (87.2% a 7
días), México (86.1% a 7 días), y Uruguay (86.1% a 7 días). Estos países
también muestran mejores resultados a 14 y 21 días, aunque con una caída
marcada después del día 21.
En contraste, los países con peores retenciones son Bolivia (80.8% a 7 días) y
Ecuador (79.1% a 7 días), mientras que Paraguay muestra una severa pérdida
después del día 7.
Por cohortes mensuales, los mejores valores de retención inicial (7 días) se
encuentran constantemente por encima del 85% entre enero y julio de 2025,
destacando marzo (87.7% a 7 días y 26.6% a 21 días). Sin embargo, en agosto hay
un descenso abrupto (70.8% a 7 días y solo 7.5% a 21 días), lo que sugiere una
problemática emergente o un cambio negativo en la experiencia del usuario.
En todos los casos, la retención cae significativamente tras la primera semana,
llegando a menos del 4% a los 28 días en la mayoría de los países y cohortes.
🔹
Para los usuarios que se registraron entre el [01/01/2025] y el [06/01/2025],
¿cuál es la tasa de retención en D7, D14, D21, D28?
La cohorte de enero 2025 tiene una excelente retención a 7 días (86.2%) y 14 días (56.2%), colocándose entre las mejores del año.
Sin embargo, como en la tendencia general, la retención comienza a caer significativamente después de los primeros catorce días, llegando a solo 3% al día 28.
Comparada con otras cohortes, enero mantiene valores sólidos, pero no muestra
mejoras frente a los meses siguientes en los que la retención se mantuvo
estable.
🔹
*¿Cómo se comporta la retención agrupados por país (`country`)?
Los países con mejor retención a 7 días son Brasil y México (87.2% y
86.1% respectivamente), seguidos de Uruguay. También mantienen valores elevados
a las 2 y 3 semanas, aunque todos sufren una fuerte disminución tras los
primeros 14 días.
En cambio, Ecuador y Bolivia registran las peores tasas a 7 días y las caídas
continúan a lo largo de cada ventana: Bolivia es el que más cae en D21 (19.2%)
y Ecuador muestra menor recuperación en D28 (2.5%).
Paraguay presenta retención baja y decreciente a lo largo de todo el periodo, siendo el país más crítico al mostrar 0% después de D21.
En todos los países, la retención en el día 28 es baja, con Perú y México sobresaliendo con los valores ligeramente más altos (3.2% y 3.1% respectivamente).
Implicación
Entre el [01/01/2025] y el [08/31/2025], ¿Cuál es la tasa de conversión entre cada etapa clave del embudo.
Se recomienda una
revisión inmediata del proceso de onboarding o comunicación en el mes de
agosto, para detectar la causa de la brusca caída en retención de usuarios.
Es crucial optimizar los recordatorios y notificaciones, ya que el paso de
carrito a checkout debe ser incentivado especialmente en países donde la caída
es mayor, como Paraguay y Brasil.
Se sugiere analizar los incentivos o recompensas para usuarios recurrentes que
avanzan más allá del primer intento, tomando los modelos exitosos de México y
Uruguay como referencia de mejores tasas de conversión y retención.
Adoptando estas acciones, el embudo puede retener y convertir más usuarios,
especialmente en los puntos críticos donde actualmente se presenta mayor
abandono.
¿En qué paso se observa
la mayor caída porcentual de usuarios?
Para revertir la fuga
en el paso de “agregar al carrito”, se recomienda:
Mejorar las estrategias de onboarding, haciendo el proceso más intuitivo y atractivo para convertir exploradores en compradores potenciales.
Implementar notificaciones y recordatorios personalizados en este punto
concreto del embudo.
Probar recompensas para quienes añadan productos al carrito, incentivando el
avance a la siguiente etapa y minimizando el abandono temprano.
Enfocarse en estas acciones permitirá retener más usuarios en el paso donde
actualmente existe la mayor pérdida y fortalecer el embudo completo hacia la
conversión final.
¿Cómo varía esta
pérdida por país (country)?
Se recomienda:
Priorizar pruebas de onboarding en Perú y Bolivia, donde la caída inicial es
más severa.
Implementar notificaciones de carrito abandonado y refuerzos motivacionales en
países con altas pérdidas.
Replicar tácticas de retención observadas en Uruguay y Chile (con menor fuga)
en mercados con baja conversión, ajustando mensajes e incentivos a cultura
local.
Con estas acciones se puede atacar el principal punto de fuga y fortalecer el
desempeño de los países más débiles en el embudo digital.
¿Qué tan bien retenemos
a los usuarios a lo largo del tiempo?
Es imprescindible
fortalecer la retención después de la primera semana. Se recomienda revisar y
optimizar los procesos de onboarding, así como implementar o mejorar
recordatorios/notificaciones y sistemas de recompensas.
Para cohortes como la de agosto 2025, se sugiere analizar posibles cambios ocurridos durante ese mes (actualizaciones de producto, campañas, problemas técnicos), ya que la caída es mucho más severa que los demás periodos.
Los países con menores tasas de retención deben ser priorizados para intervenciones específicas, como pruebas de ajustes en el flujo de registro y personalización de la comunicación post-onboarding.
En resumen, el foco debe estar en incrementar la retención más allá de la
primera semana, personalizar las estrategias para los segmentos menos
comprometidos y revisar incidentes recientes que puedan haber impactado
negativamente la experiencia del usuario.
🔹
Para los usuarios que se registraron entre el [01/01/2025] y el [06/01/2025],
¿cuál es la tasa de retención en D7, D14, D21, D28?
Estas cifras indican
que el proceso de onboarding inicial y la propuesta de valor capturan bien a
los usuarios durante la primera semana, pero la caída posterior sugiere una
oportunidad clara para fortalecer el engagement tras los primeros 14 días.
Se recomienda implementar notificaciones personalizadas, optimizar la
comunicación post-onboarding y explorar nuevas recompensas o dinámicas de
retención enfocadas en la segunda y tercera semana de uso, que es donde se
produce la mayor deserción.
El monitoreo continuo de nuevas cohortes permitirá identificar si las acciones
implementadas logran mitigar la caída observada después de los 14 días,
consolidando así tasas de retención más altas en el tiempo.
🔹
*¿Cómo se comporta la retención agrupados por país (`country`)?
Los resultados indican la necesidad de priorizar la retención en los países con peor desempeño, en particular Paraguay, Ecuador y Bolivia; se recomienda revisar los procesos de onboarding, personalizar la comunicación de bienvenida y fortalecer incentivos continuos para mantener la relación tras la segunda semana.
En mercados líderes como Brasil, Uruguay y México, se debe replicar y adaptar las mejores prácticas que han funcionado y probar programas piloto de recompensas por permanencia para sostener la retención más allá del día 14.
Progresivamente, se sugiere probar campañas dirigidas a “re-enganchar” usuarios inactivos después de D14 y segmentar los mensajes y recompensas de acuerdo con las particularidades y preferencias culturales de cada país.
Reflexión personal
¿Qué etapa mejorarías primero?
La etapa que debe priorizarse para mejorar es la de “agregar al
carrito”, ya que aquí se observa la mayor caída porcentual de usuarios tanto a
nivel general como en todos los países analizados. El análisis del embudo de
enero a agosto de 2025 revela que, aunque el 76.9% de los usuarios inicia
seleccionando un producto, solo un 11% finalmente lo agrega al carrito. En
promedio, se pierde cerca de 66 puntos porcentuales de usuarios en este paso,
con países como Perú y Bolivia mostrando pérdidas superiores al 70 % entre la
selección de producto y el agregado al carrito, limitando así las oportunidades
de venta y avance en el proceso. En las etapas posteriores (checkout, datos de
envío, pago), las caídas son menores, lo que subraya la importancia de enfocar
los esfuerzos en esta transición inicial.
Para maximizar la retención y aumentar las conversiones a lo largo del embudo
en todas las regiones, se recomienda destinar recursos a:
Facilitar la acción de agregar al carrito, optimizando la interfaz para que los botones sean visibles, intuitivos y fáciles de usar.
Implementar recordatorios, pop-ups o incentivos inmediatos para motivar a los
usuarios a agregar productos.
Testear y adaptar mensajes especialmente en los países donde existen mayores
pérdidas o dudas entre explorar y comprar.
Optimizar este punto (por ejemplo, simplificando el proceso o mostrando beneficios inmediatos) puede generar el mayor incremento en la retención y la conversión general, ya que el éxito del resto del embudo depende sustancialmente de contar con un mayor flujo inicial de usuarios comprometidos en la etapa de “addtocart”.
¿Qué aprendiste sobre el comportamiento del usuario?
Las implicaciones principales son claras: los usuarios se sienten
motivados a explorar, pero pierden el interés y se desenganchan si no
encuentran suficiente propuesta de valor o incentivos para avanzar. Por ello,
la clave para mejorar la conversión y permanencia está en reducir la fricción
inicial entre la exploración y la decisión de agregar al carrito. Implementar mensajes
persuasivos, un diseño intuitivo y propuestas de valor visibles en cada paso
ayudará a abordar las principales “fugas” del embudo. Además, se recomienda
personalizar la experiencia según segmento y país, fortalecer las estrategias
de engagement tras la primera semana, y mantener un monitoreo y experimentación
constante para adaptar los procesos a los comportamientos de cada cohorte y
mercado.



