Test A/B de Mensajes In-App: Qué Probar y Cómo Medirlo
Test A/B de mensajes in-app: qué probar (tooltips, modales, avisos), la trampa de la métrica de vanidad y cómo dimensionar con poca audiencia.

📚 Este artículo es parte de la guía Growth Experimentation para SaaS: Playbook PLG.
Los mensajes in-app, tooltips, modales, banners, paneles deslizantes, checklists y anuncios mostrados a un usuario que ya está dentro del producto, son una de las superficies de mayor apalancamiento en un programa de growth experimentation para SaaS y una de las más fáciles de leer mal estadísticamente. La trampa no es el copy del mensaje, es decidir qué medir y cuánta paciencia necesita realmente el test: la mayoría de los mensajes in-app solo califican a una franja estrecha de usuarios que llegaron a un estado específico, lo que significa muestras más pequeñas, esperas más largas y un costo del peeking mucho mayor que en un test típico de landing page. Esta guía cubre qué cuenta como mensaje in-app, cuándo un test formal justifica su costo frente a simplemente lanzar el cambio, cómo elegir una métrica que resista el escrutinio y qué cambia en la estadística cuando la audiencia está tan al fondo del embudo.
Qué cuenta como mensaje in-app: una taxonomía de trabajo
Los mensajes in-app abarcan un espectro que va de lo pasivo a lo bloqueante, y el formato que elijas ya condiciona qué tan grande puede ser el efecto esperable y cuánta fricción agrega el mensaje al momento que interrumpe. Según una taxonomía de Appcues sobre formatos comunes de notificación in-app, el mismo objetivo de fondo (que el usuario note algo y actúe) se expresa a través de niveles de interrupción muy distintos:
Dos formatos que vale nombrar explícitamente porque aparecen todo el tiempo en los backlogs de growth y casi nunca en las taxonomías: los prompts de estado vacío (guía mostrada dentro de una pantalla que aún no tiene datos, funcionalmente un tooltip o embed anclado a un lienzo en blanco) y la ayuda en contexto (un tooltip o embed disponible de forma permanente, disparado por el usuario y no por el producto). Ambos cuentan como mensaje in-app a efectos de testeo, solo se disparan de manera distinta que un aviso proactivo.
Cuándo un test A/B formal justifica su costo frente a simplemente lanzarlo
No todo mensaje in-app necesita un test controlado. El factor decisivo es el costo de equivocarse, no el tamaño del equipo ni lo fácil que sea construir el cambio.
- Testea cuando el mensaje se va a desplegar a toda tu base activa, cuando toca un momento con ingresos asociados (un aviso de upgrade, un aviso de paywall), o cuando la elección intuitiva (más guía siempre es mejor) tiene un modo de falla plausible, como enterrar un comportamiento por defecto que funcionaba detrás de un prompt innecesario.
- Sáltate el test formal en un ajuste de copy pequeño y fácilmente reversible sobre una superficie interna de bajo tráfico, o en un anuncio puntual sobre una función que solo existirá unas semanas, donde observar una simple tendencia de antes y después es proporcional a lo que está en juego.
La línea entre ambos casos es la misma que cubre la guía completa de growth experimentation: impacto, confianza y esfuerzo. Un mensaje in-app con alto impacto e incertidumbre real sobre el resultado merece el rigor estadístico que recorre este artículo; uno de bajo impacto, no.
Evita la trampa de la métrica de vanidad: visto, clicado o comportamiento realmente cambiado
El error más común en los tests de mensajes in-app refleja el que cubre la guía sobre test A/B de onboarding en SaaS: optimizar por lo que es fácil de medir (el mensaje fue visto, el mensaje fue clicado) en lugar de por aquello que el mensaje fue construido para causar. La propia guía de Amplitude sobre mensajería in-app es explícita en esta brecha: sostiene que la verdadera medida de éxito es si los mensajes llevan a mayor adopción del producto, mejor retención y más conversiones, no la interacción superficial con el mensaje. La misma fuente señala que los mensajes in-app pueden alcanzar tasas de apertura muy altas simplemente porque el usuario ya está dentro del producto mirando la pantalla, lo que hace de “visto” una señal de éxito especialmente débil por sí sola.
Dos preguntas separan una métrica real de una de vanidad, para cualquier mensaje in-app: qué acción específica, fuera del propio mensaje, debería realizar el usuario por haberlo visto, y si esa acción, en alguna ventana posterior de medición, aparece como más retención, más uso o más ingresos frente a usuarios que nunca vieron el mensaje. Si ninguna de las dos preguntas tiene respuesta clara antes de lanzar el test, el mensaje todavía no está listo para testearse, está listo para una hipótesis primero, siguiendo la misma estructura de la guía para escribir una hipótesis de test A/B.
El detalle estadístico: audiencias de fondo de embudo y bajo volumen
Esta es la parte que casi todos los consejos sobre mensajería in-app saltan por completo. Como un mensaje suele calificar solo a usuarios que llegaron a un estado específico (abrieron un panel vacío, alcanzaron un límite de uso, entraron por primera vez a cierta pantalla), la audiencia semanal disponible para el test es una fracción pequeña del tráfico total del producto, exactamente el mismo problema estadístico que cubre la guía de growth experimentation para las etapas profundas de un embudo PLG en general. La matemática no cambia (es el mismo test z de dos proporciones detallado en la guía de significancia estadística), pero la consecuencia práctica es más aguda aquí que en casi cualquier otro punto de un programa de growth: una audiencia calificada pequeña hace el test más lento y vuelve mucho más tentador mirar un resultado temprano y ruidoso.
Ejemplo trabajado: un aviso de upgrade in-app
Supongamos que un producto SaaS muestra un aviso de upgrade in-app a los usuarios en trial en el momento exacto en que alcanzan cierto límite de uso. La tasa actual de clic a upgrade entre quienes ven ese aviso es del 9%, y el equipo quiere detectar una mejora relativa del 30% con una versión rediseñada del aviso (del 9% a cerca del 11,7%), la ganancia mínima que justifica reconstruirlo. Con 95% de confianza y 80% de poder, bilateral, el mismo motor de tamaño de muestra usado en todo este blog devuelve 1.997 usuarios por variación.
El segmento calificado (usuarios en trial que alcanzan ese límite de uso específico) recibe cerca de 140 usuarios por semana. A ese volumen, un test de dos variaciones necesita alrededor de 200 días, casi siete meses, para acumular la muestra que la matemática exige. Ese es el impuesto del fondo de embudo: el mismo rigor estadístico de cualquier test de landing page, aplicado a una audiencia que llega mucho más despacio.
Pega esos mismos números en la calculadora de abajo para confirmar el veredicto cuando el test termine:
Test z bilateral de dos proporciones. "Sin significancia" casi siempre significa que falta muestra, no que las versiones sean iguales.
Al final de esos aproximadamente 200 días, supongamos que el control registró 180 upgrades sobre 1.997 usuarios expuestos (9,01%) y el aviso rediseñado registró 234 sobre 1.997 (11,72%). Al pasar los números exactos por el mismo motor de significancia: un valor p bilateral de aproximadamente 0,0051, un puntaje z de aproximadamente 2,80, una mejora relativa del 30,0% y un intervalo de confianza del 95% para la diferencia de aproximadamente +0,8 a +4,6 puntos porcentuales. Como el intervalo completo queda por encima de cero, el resultado es significativo, con el aviso rediseñado como ganador, exactamente lo que debería confirmar la calculadora de arriba con esos mismos datos.
Por qué la tasa base, y no solo el tamaño de la audiencia, decide cuánto esperas
El mismo efecto relativo exige un tamaño de muestra muy distinto según la tasa base de conversión del segmento calificado. Manteniendo fija la mejora objetivo en 30% relativo, 95% de confianza, 80% de poder, bilateral:
| Tasa base del segmento calificado | Muestra requerida por variación |
|---|---|
| 3% | 6.455 |
| 5% | 3.780 |
| 7% | 2.634 |
| 9% (este ejemplo) | 1.997 |
| 12% | 1.440 |
| 15% | 1.106 |
| 20% | 772 |
El patrón: una tasa base más baja, común en audiencias estrechas de fondo de embudo como el segmento del aviso de upgrade anterior, necesita una muestra mucho mayor para detectar el mismo efecto relativo, porque la brecha absoluta entre ambas tasas se encoge junto con la tasa base. Un mensaje mostrado a un segmento que convierte al 3% necesita más de ocho veces la muestra de uno que convierte al 20%, para el mismo objetivo de 30% relativo.
Trampas de segmentación y targeting
La forma más común en que los equipos sabotean un test de mensajes in-app antes de empezar es elegir un segmento demasiado estrecho para alcanzar significancia en un tiempo razonable, y descubrir el problema recién después de semanas de test corriendo. Compara el mismo test con dos tamaños de segmento, manteniendo todo lo demás (tasa base, MDE, muestra necesaria) idéntico al ejemplo anterior:
Antes de fijar una regla de targeting para un test de mensajes in-app, estima el volumen semanal del segmento tal como quedará definido en el lanzamiento, no el volumen del grupo más amplio del que se derivó. Una regla que suena razonable en una reunión de planificación (“mostrémoslo solo a cuentas cerca de su límite de uso en el plan Pro”) puede recortar en silencio la audiencia calificada en un 70% o más frente a “cuentas cerca de su límite de uso”, convirtiendo un test de doscientos días en uno de dos años. Cuando la matemática honesta dice que un segmento no puede alcanzar significancia en un plazo útil, las opciones son las mismas de cualquier test de fondo de embudo con poco poder: ampliar el segmento, aceptar un MDE mayor (solo los efectos grandes se registrarán), o aceptar que ese mensaje específico no es un candidato viable para un test formal con el tráfico disponible hoy.
Frecuencia y efectos de fatiga de mensajes
Un problema de frecuencia de mensajes puede invalidar en silencio un test por lo demás bien diseñado. Según la guía de Braze sobre frecuency capping, el exceso sostenido de mensajes erosiona la buena voluntad que mantiene a los usuarios comprometidos. Por separado, los proveedores de mensajería in-app suelen citar un techo práctico de uno a dos mensajes in-app por usuario y sesión, junto con una ventana mínima de silencio antes de que se dispare el siguiente. En el contexto de un test aparecen dos modos de falla específicos:
- La fatiga confunde la comparación. Si el volumen general de mensajes cambia por razones ajenas al test (un lanzamiento agrega tres anuncios in-app nuevos a mitad de camino), las tasas de descarte y la atención pueden moverse en ambos brazos a la vez, y el cambio se atribuye por error a la variación testeada en lugar de al ruido extra a su alrededor.
- La fatiga distorsiona qué significa “visto”. Un usuario insensibilizado por mensajes frecuentes descarta todo más rápido, lo que puede empeorar las métricas de clic y apertura a lo largo de un test extenso incluso cuando la calidad del mensaje no cambió, otra razón por la que la métrica que decide el test debe ser la acción posterior y no la interacción con el mensaje.
La solución es de procedimiento, no estadística: mantén el volumen total de mensajes in-app aproximadamente constante en ambos brazos durante toda la duración del test, y trata un pico de otros mensajes a mitad del test como motivo para extenderlo o descartar la ventana afectada, la misma disciplina que aplica a cualquier factor de confusión que aparece después de la aleatorización.
Cuándo usar un bandit en su lugar
Una división fija 50/50 no siempre es el mecanismo correcto para un mensaje in-app. La comparación completa entre multi-armed bandits y test A/B cubre el trade-off en profundidad, pero la versión corta para mensajería in-app es esta: un bandit justifica su complejidad cuando el mensaje es efímero (un banner estacional, un anuncio puntual que se retirará en pocas semanas) y el costo de seguir mostrando una variación más débil durante toda la duración de la división fija supera el valor de un veredicto limpio de significancia. Un mensaje pensado para quedarse en el producto a largo plazo, como un aviso de upgrade recurrente o un prompt permanente de estado vacío, suele beneficiarse más de un test de división fija que termina con una respuesta real y reutilizable sobre qué versión funciona y por qué.
Checklist: tipos de mensaje que conviene testear primero
No todo mensaje in-app merece la misma prioridad en un backlog de growth. Un punto de partida neutral, en orden aproximadamente descendente de relación impacto sobre esfuerzo para un producto SaaS de autoservicio:
| Tipo de mensaje | Dónde se dispara normalmente | Qué métrica “real” observar |
|---|---|---|
| Avisos de upgrade | Cerca de un límite de uso, una función bloqueada o el borde de un plan | Conversión de trial a pago o de upgrade de plan, no la tasa de clic del aviso |
| Prompts de descubrimiento de funciones | Después de que el usuario completa una tarea adyacente que predice la adopción de la función promovida | Adopción de la función promovida a 7 o 14 días, no las impresiones del prompt |
| Prompts de estado vacío | La primera vez que el usuario llega a una pantalla sin datos | Completar la primera acción que llena esa pantalla, no el tiempo mirándola |
| Ayuda en contexto (tooltips, embeds) | Disparada por el usuario a demanda, cerca de un control específico | Tasa de finalización de la tarea a la que la ayuda estaba asociada, no la tasa de apertura de la ayuda |
Hazlo automático en Donnu
La parte más difícil de un test de mensajes in-app rara vez es el mensaje en sí, es correr estadística honesta sobre una audiencia que es naturalmente pequeña porque el embudo ya la filtró antes de que el mensaje se dispare. Ahí es exactamente donde la tentación de mirar el panel y declarar un ganador temprano es más fuerte, y donde la fatiga de mensajes y un segmento demasiado estrecho pueden arruinar el resultado en silencio sin que nadie lo note hasta comparar los números lado a lado. Donnu A/B es una herramienta de test A/B bayesiana y client-side para páginas web e interfaces de producto: dimensiona el test correctamente antes de empezar, muestra con honestidad cuánto más necesita un resultado de bajo volumen, y solo declara un ganador cuando la estadística realmente lo respalda, el mismo motor usado en todo este artículo.
Empieza una prueba gratuita de 14 días y lleva esa misma disciplina al próximo aviso de upgrade, prompt de estado vacío o anuncio de función que estabas por lanzar por corazonada. Para el fundamento estadístico detrás de cada número de este artículo, mira la guía de significancia estadística y la calculadora de tamaño de muestra.
Referencias
- Appcues. In-App Notifications: 8 Types, Best Practices, and Examples. appcues.com/blog/in-app-notifications.
- Braze. Frequency Capping: What It Is, How It Works and Best Practices. braze.com/resources/articles/whats-frequency-capping.
- Amplitude. In-App Messaging: What It Is and How to Do It. amplitude.com/explore/product/in-app-messaging.
- Miller, E. How Not To Run an A/B Test (el problema del peeking), 2010. evanmiller.org.
Lee también
Sigue con los fundamentos sobre los que se apoya esta pieza: la guía completa de growth experimentation para SaaS, el test A/B de onboarding en SaaS y el test A/B de conversión de trial a pago. Para el riesgo de peeking que este artículo menciona una y otra vez, mira el problema del peeking en tests A/B.
Preguntas frecuentes
- ¿Qué cuenta como "mensaje in-app" y en qué se diferencia del onboarding?
- Un mensaje in-app es cualquier superficie que el propio producto usa para comunicarse con un usuario que ya está dentro: tooltips, modales y diálogos, banners, paneles deslizantes, checklists y tours de producto, y anuncios puntuales dentro del producto. El onboarding es una secuencia de esas superficies orientada a un objetivo específico (llegar a la activación de un usuario nuevo). El mensaje in-app es más amplio: también cubre avisos de upgrade, prompts de descubrimiento de funciones y guías de estado vacío mostradas a usuarios que ya superaron el onboarding hace tiempo.
- ¿Cuándo conviene hacer un test A/B de un mensaje in-app en lugar de simplemente lanzarlo?
- Conviene testear cuando el mensaje apunta a una decisión real con costo si sale mal: un aviso de upgrade que podría molestar a usuarios cercanos al pago, un estado vacío rediseñado que podría enterrar un patrón que ya funcionaba, o cualquier mensaje que planees desplegar a toda tu base activa. Sáltate el test formal en ajustes de copy pequeños y fácilmente reversibles sobre una superficie interna de bajo tráfico, donde el costo de lanzar y observar es menor que el costo de correr un test como corresponde.
- ¿Por qué "mensaje visto" o "mensaje clicado" es la métrica equivocada en un test de mensajes in-app?
- Las impresiones y los clics miden si el mensaje se notó, no si cambió un comportamiento que importa. Un tooltip puede recibir clics constantemente y aun así no mover la adopción de la función, y un aviso de upgrade puede ser descartado por la mayoría de los usuarios y aun así elevar la tasa de trial a pago entre el grupo más pequeño que sí actúa. La métrica que decide el test tiene que ser la acción posterior que el mensaje buscaba provocar (una función realmente usada, un upgrade realmente completado, una tarea realmente terminada), nunca la interacción con el mensaje en sí.
- ¿Por qué los tests de mensajes in-app exigen más paciencia que un test de landing page?
- Porque la mayoría de los mensajes in-app solo califican a una audiencia estrecha y ya filtrada: usuarios que alcanzaron un estado específico (un panel vacío, un límite de uso, una función concreta) en lugar de todo el tráfico del sitio. Una audiencia semanal más pequeña significa más días de calendario para llegar al tamaño de muestra que un efecto real necesita, y la tentación de mirar el panel y detener el test temprano crece justo cuando la espera se hace más larga, que es también cuando el peeking más daña la tasa de falsos positivos.
- ¿Conviene usar un bandit en lugar de un test A/B de división fija para un mensaje in-app?
- Un bandit puede tener sentido cuando el mensaje es efímero (un banner estacional, un anuncio de una semana) y el costo de mostrar una variación de bajo rendimiento durante toda la duración del test supera el valor de una respuesta limpia y estadísticamente cierta. Para un mensaje que piensas mantener e iterar a largo plazo, como un aviso de upgrade recurrente o un prompt permanente de estado vacío, un test de división fija que termina con un veredicto real de significancia suele valer la paciencia extra, porque la respuesta se convierte en evidencia reutilizable y no solo en una optimización puntual del tráfico.
- ¿Cuánto mensaje in-app es demasiado, y la fatiga distorsiona el resultado del test?
- Un techo práctico citado con frecuencia por los proveedores de mensajería in-app es de uno a dos mensajes por usuario y sesión, con una ventana mínima de silencio antes de que se dispare el siguiente. Si un test coincide con un aumento no relacionado del volumen general de mensajes (un lanzamiento, una promoción), las tasas de descarte y de interacción pueden moverse por razones ajenas a la variación testeada. Mantén el volumen total de mensajes estable y comparable en ambos brazos del test, y trata un pico repentino de descartes por fatiga como señal para revisar la higiene del test, no como veredicto sobre el mensaje.