# Cargar librerías
library(dplyr)
library(ggplot2)
library(ggthemes)
library(tidyr)
library(knitr)
# Simular datos de una encuesta (N=1000)
set.seed(42)
n_respondents <- 1000
brands <- c("Mahou Cinco Estrellas", "Alhambra 1925", "Cruzcampo")
funnel_data <- expand.grid(id = 1:n_respondents, brand = brands)
funnel_data <- funnel_data %>%
group_by(brand) %>%
mutate(
notoriedad_prob = case_when(brand == "Mahou Cinco Estrellas"~0.95, brand == "Alhambra 1925"~0.75, brand == "Cruzcampo"~0.92),
cons_prob = case_when(brand == "Mahou Cinco Estrellas"~0.7, brand == "Alhambra 1925"~0.85, brand == "Cruzcampo"~0.5),
prueba_prob = case_when(brand == "Mahou Cinco Estrellas"~0.8, brand == "Alhambra 1925"~0.9, brand == "Cruzcampo"~0.85),
uso_prob = case_when(brand == "Mahou Cinco Estrellas"~0.85, brand == "Alhambra 1925"~0.9, brand == "Cruzcampo"~0.5)
) %>%
mutate(
Notoriedad = rbinom(n(), 1, notoriedad_prob),
Consideración = ifelse(Notoriedad == 1, rbinom(n(), 1, cons_prob), 0),
Prueba = ifelse(Consideración == 1, rbinom(n(), 1, prueba_prob), 0),
Uso_Actual = ifelse(Prueba == 1, rbinom(n(), 1, uso_prob), 0)
) %>%
select(id, brand, Notoriedad, Consideración, Prueba, Uso_Actual)Introducción
En la gestión estratégica de una marca, es crucial entender no solo cuántos clientes tenemos, sino cómo llegan a serlo. Los consumidores no pasan de desconocer una marca a ser clientes leales de la noche a la mañana. Siguen un viaje a través de diferentes etapas mentales y de comportamiento. El Funnel de Marca (o Embudo de Marca) es el modelo que nos permite visualizar y cuantificar este viaje.
Más que un simple gráfico, el_funnel_es un KPI de diagnóstico fundamental. Nos muestra dónde flaquea nuestra marca, dónde pierde consumidores potenciales y, lo más importante, dónde debemos enfocar nuestros esfuerzos de marketing para “reparar las fugas”. Este post explora su conceptualización, las métricas clave que lo componen y cómo construirlo y analizarlo en R.
El funnel de marca es un modelo jerárquico que ilustra el proceso por el cual los consumidores se mueven desde el conocimiento inicial de una marca hasta su uso leal. Su nombre “funnel” (embudo) se debe a que, en cada etapa sucesiva, el número de personas disminuye. El objetivo de cualquier estratega de marca es hacer que este embudo sea lo más ancho posible en todas sus fases.
Este concepto se basa en una larga tradición de modelos de jerarquía de efectos, que postulan que los consumidores pasan por una secuencia de etapas cognitivas (pensar), afectivas (sentir) y conductuales (actuar) antes de realizar una compra (Lemon & Verhoef, 2016).
Las etapas clave del funnel, que deben medirse de forma consistente a lo largo del tiempo, son:
- Notoriedad (Awareness): La base del embudo. ¿Saben los consumidores que nuestra marca existe?
- Consideración (Consideration): ¿Incluirían la marca en su conjunto de opciones a la hora de comprar? (Nedungadi, 1990).
- Prueba (Trial / Ever Used): ¿Han comprado o usado alguna vez la marca?
- Uso Actual / Consumo (Current Usage): ¿Han consumido la marca en un período reciente?
- Lealtad / Marca Principal (Loyalty / Main Brand): ¿Es nuestra marca la que usan con más frecuencia? (Keller, 1993).
El funnel como KPI estratégico
A diferencia de un KPI único como el NPS, el Funnel es un sistema de KPIs. Su poder no reside en un solo número, sino en las tasas de conversión entre etapas. Analizar el_funnel_permite responder preguntas críticas: “¿Somos una marca famosa que nadie prueba?” o “¿Tenemos un gran producto que muy poca gente conoce?”.
Ejemplo con R: cervezas en España
Imaginemos que hemos realizado una encuesta para tres marcas de cerveza españolas con distintos perfiles:
- Mahou Cinco Estrellas: El líder del mercado, con gran notoriedad y presencia nacional.
- Alhambra 1925: Una cerveza premium, menos masiva pero con una base de consumidores muy leales.
- Cruzcampo: Una marca con una notoriedad altísima pero que a veces genera opiniones polarizadas.
Vamos a crear un funnel sin depender de ningún paquete externo más allá del tidyverse. Usaremos geom_rect() de ggplot2, que nos permite dibujar rectángulos especificando sus cuatro esquinas, dándonos un control absoluto para simular un embudo.
Imaginemos el mismo escenario con Mahou, Alhambra y Cruzcampo.
Paso 1: Carga
Solo necesitamos los paquetes estándar que seguramente ya tienes.
Paso 2: Proceso
Este es el paso clave. Calculamos el conteo de cada etapa y, a partir de ahí, las coordenadas xmin, xmax, ymin, ymax que usará geom_rect() para dibujar cada barra centrada del embudo.
funnel_summary <- funnel_data %>%
group_by(brand) %>%
summarise(
Notoriedad = sum(Notoriedad),
Consideración = sum(Consideración),
Prueba = sum(Prueba),
Uso_Actual = sum(Uso_Actual),
.groups = 'drop'
)
# Convertir a formato largo y calcular coordenadas y conversiones
funnel_manual_data <- funnel_summary %>%
pivot_longer(cols = -brand, names_to = "etapa", values_to = "conteo") %>%
mutate(etapa = factor(etapa, levels = c("Notoriedad", "Consideración", "Prueba", "Uso_Actual"))) %>%
arrange(brand, etapa) %>%
group_by(brand) %>%
mutate(
# Coordenadas para el gráfico (sin cambios)
max_conteo = first(conteo),
xmin = (max_conteo - conteo) / 2,
xmax = xmin + conteo,
ymin = as.numeric(rev(etapa)) - 0.45,
ymax = as.numeric(rev(etapa)) + 0.45,
# LÓGICA DE CONVERSIÓN MEJORADA
prev_conteo = lag(conteo, default = first(conteo)),
conversion_rate = if_else(
etapa == "Notoriedad",
round((conteo / n_respondents) * 100), # % sobre el total de la muestra
round((conteo / prev_conteo) * 100) # % sobre el paso anterior
)
) %>%
ungroup()
kable(funnel_manual_data, caption="Datos procesados con la lógica de conversión corregida.")| brand | etapa | conteo | max_conteo | xmin | xmax | ymin | ymax | prev_conteo | conversion_rate |
|---|---|---|---|---|---|---|---|---|---|
| Mahou Cinco Estrellas | Notoriedad | 957 | 957 | 0.0 | 957.0 | 3.55 | 4.45 | 957 | 96 |
| Mahou Cinco Estrellas | Consideración | 649 | 957 | 154.0 | 803.0 | 2.55 | 3.45 | 957 | 68 |
| Mahou Cinco Estrellas | Prueba | 530 | 957 | 213.5 | 743.5 | 1.55 | 2.45 | 649 | 82 |
| Mahou Cinco Estrellas | Uso_Actual | 452 | 957 | 252.5 | 704.5 | 0.55 | 1.45 | 530 | 85 |
| Alhambra 1925 | Notoriedad | 744 | 744 | 0.0 | 744.0 | 3.55 | 4.45 | 744 | 74 |
| Alhambra 1925 | Consideración | 632 | 744 | 56.0 | 688.0 | 2.55 | 3.45 | 744 | 85 |
| Alhambra 1925 | Prueba | 570 | 744 | 87.0 | 657.0 | 1.55 | 2.45 | 632 | 90 |
| Alhambra 1925 | Uso_Actual | 510 | 744 | 117.0 | 627.0 | 0.55 | 1.45 | 570 | 89 |
| Cruzcampo | Notoriedad | 913 | 913 | 0.0 | 913.0 | 3.55 | 4.45 | 913 | 91 |
| Cruzcampo | Consideración | 455 | 913 | 229.0 | 684.0 | 2.55 | 3.45 | 913 | 50 |
| Cruzcampo | Prueba | 396 | 913 | 258.5 | 654.5 | 1.55 | 2.45 | 455 | 87 |
| Cruzcampo | Uso_Actual | 199 | 913 | 357.0 | 556.0 | 0.55 | 1.45 | 396 | 50 |
Paso 3: Resultados
Ahora, en lugar de un geom especial, simplemente le decimos a ggplot que dibuje los rectángulos que hemos definido.
ggplot(funnel_manual_data, aes(fill = etapa)) +
# Dibujamos cada barra del funnel como un rectángulo
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax)) +
# Añadimos las etiquetas de texto en el centro de cada barra
geom_text(
aes(
x = xmin + (conteo / 2), # Centramos el texto horizontalmente
y = ymin + 0.45, # Centramos el texto verticalmente
label = paste0(conteo, " (", conversion_rate, "%)")
),
color = "white",
fontface = "bold",
) +
# Usamos facet_wrap para separar por marca
facet_wrap(~ brand) +
# Personalización estética
scale_y_continuous(
breaks = 1:4,
labels = rev(c("Notoriedad", "Consideración", "Prueba", "Uso_Actual"))
) +
#scale_fill_viridis_d(option = "C", guide = "none") +
scale_fill_economist() +
coord_cartesian(xlim = c(0, 1000)) +
labs(
title = "Funnel de Marcas Valoradas",
caption = "Notoriedad (% s/total muestra N=1000).\nResto de etapas (% conversión s/etapa anterior).",
x = "Número de Consumidores",
y = NULL
) +
theme_minimal(base_size = 14) +
theme_economist()+
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.x = element_blank(), # Oculta los números/etiquetas del eje X
axis.title.x = element_blank(), # Oculta los números/etiquetas del eje X
axis.ticks.x = element_blank(), # Oculta las marcas de graduación del eje X
strip.text = element_text(face = "bold", size = 12)
)
Interpretación
- Mahou Cinco Estrellas: Muestra un funnel ancho y muy bien proporcionado. Las tasas de conversión entre etapas son altas y estables (70%, 80%, 85%), lo que indica que no hay “fugas” graves en ningún punto del viaje del consumidor. Es el perfil textbook de un líder de mercado saludable.
- Alhambra 1925: Su_funnel_es notablemente eficiente y de pendiente suave. Aunque parte de una notoriedad más baja, sus tasas de conversión son espectaculares (86%, 90%, 90%). Esto significa que quien entra en el funnel, se queda. Su reto no es de producto ni de imagen, sino de alcance. Acción estratégica: Aumentar la notoriedad para meter a más gente en la “boca” de un embudo que funciona casi a la perfección.
- Cruzcampo: El_funnel_revela visualmente una fuga masiva en dos puntos críticos. A pesar de su enorme notoriedad (920), solo convierte al 50% a la etapa de Consideración. Pero la fuga más alarmante es la del final: solo el 50% de los que la prueban se convierten en usuarios actuales. El embudo se “estrecha” bruscamente. Acción estratégica: Es vital entender por qué la mitad de los consumidores la abandonan tras probarla. Se requiere una investigación profunda sobre la experiencia del producto y la percepción de la marca.
Conclusión
El funnel de marca, visualizado de forma correcta, es una de las herramientas más poderosas para un director de marketing. Transforma números abstractos en una historia visual y permite identificar con precisión quirúrgica dónde se está perdiendo la batalla por el consumidor. Al monitorizarlo regularmente, una empresa puede tomar decisiones más inteligentes, optimizar su inversión y construir un camino más sólido desde la notoriedad hasta la lealtad.
Referencias
Keller, K. L. (1993). Conceptualizing, Measuring, and Managing Customer-Based Brand Equity. Journal of Marketing, 57(1), 1–22. https://doi.org/10.1177/002224299305700101
Lemon, K. N., & Verhoef, P. C. (2016). Understanding Customer Experience Throughout the Customer Journey. Journal of Marketing, 80(6), 69–96. https://doi.org/10.1509/jm.15.0420
Nedungadi, P. (1990). Recall and Consumer Consideration Sets: Influencing Choice without Altering Brand Evaluations. Journal of Consumer Research, 17(3), 263–276. https://doi.org/10.1086/208556