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.








Entradas populares