BitelioBitelio
Guides

Experimentos en flujos

Reparte la audiencia de un flujo entre varias ramas y mide qué recorrido vale más por contacto

Un paso de reparto divide a los contactos que llegan a él entre dos o más ramas de tu flujo. A partir de ahí cada grupo vive un recorrido distinto: otros correos, otras esperas, otro número de mensajes.

Un experimento de ramas mide cuál de esos recorridos vale más. Es la pregunta que no responden ni un experimento ni un grupo de control: no qué asunto gana, ni si el correo funciona en general, sino si tu secuencia de bienvenida de cinco correos supera a la de tres.

El reparto sirve por sí solo

Un reparto sin experimento sigue repartiendo. Es una división aleatoria del tráfico, que ya es algo perfectamente útil: puedes mandar a la mitad de tus nuevos suscriptores por un camino y a la otra mitad por otro, y mirar qué pasa.

Qué rama le toca a cada contacto lo decide un hash de su id y del id del paso, así que no cambia nunca. Si un paso se reintenta tras una interrupción, la misma persona va por el mismo sitio en lugar de contarse en las dos. Y como el id del paso forma parte del hash, no son siempre los mismos contactos las cobayas de todos los repartos de tu cuenta.

Una rama sin conexión de salida termina ahí el recorrido. Es un tratamiento legítimo: «no mandar nada» es el grupo de control de este nivel.

Qué mide un experimento

Hay dos cosas que pueden decidirlo:

Un evento de conversión. ¿Ocurrió un evento concreto —order.placed, o uno tuyo— para ese contacto dentro de su ventana? Binario, y disponible para cualquiera.

Ingresos por contacto. Todo lo que gastó ese contacto dentro de su ventana, atribuido o no. Necesita una tienda conectada.

Todo se mide por contacto, y ahí está la clave

Si la rama A manda cinco correos y la B manda tres, A acumula más clics, más aperturas y más quejas por construcción — no porque funcione mejor, sino porque hay más. Cualquier métrica contada por correo mediría el número de correos.

Así que Bitelio cuenta personas. Un contacto que compró cinco veces es una persona convertida. Un contacto que se quejó de tres mensajes de una secuencia es una persona que se queja. Con eso las dos ramas son comparables por muchos mensajes que tenga cada una — incluidos los guardarraíles, que es lo que impide que una secuencia larga parezca más limpia que una corta sólo por tener un denominador más grande.

Repartos desiguales

Por defecto las ramas se llevan partes iguales. Puedes poner un porcentaje por rama — un 90/10, por ejemplo, para exponer sólo a una décima parte de tu audiencia a una secuencia de la que aún no te fías.

Cuesta tiempo, y el editor te dice cuánto. El suelo de exposición se aplica por rama, así que la rama más pequeña es la que decide cuándo puede concluir el experimento: con un 90/10 y un suelo de 500, la rama pequeña necesita 5.000 contactos por el reparto, donde uno a partes iguales necesita 1.000. Además, el reparto par es el que más información extrae por contacto expuesto, así que cualquier otro es un intercambio deliberado: menos gente expuesta a una rama arriesgada, a cambio de un test mucho más largo.

Los porcentajes son todo o nada y tienen que sumar 100. Cambiarlos con un experimento en marcha cuenta como editar el flujo, porque reasigna a contactos que ya estaban enrutados.

La ventana, y por qué el resultado tarda semanas

Cada contacto lleva su propia ventana, que se abre en el momento en que llega al reparto. Un contacto no cuenta hasta que su ventana se cierra. Quien entró ayer ha tenido un día para comprar; quien entró hace un mes ha tenido el periodo entero. Mezclarlos hundiría a la rama que hubiera recibido más recién llegados.

El panel enseña las dos cifras mientras corre: cuántos contactos se han asignado a cada rama y cuántos cuentan ya. La distancia entre ambas es justo por lo que un resultado tarda semanas, y el panel dice la fecha más temprana en la que puede existir: una ventana completa después de arrancar.

Leerlo mientras corre

A diferencia de los experimentos de campaña y de los grupos de control, un experimento de ramas te enseña todo mientras corre: las cuentas, la métrica, la probabilidad de ganar de cada rama, los contadores de guardarraíl y cualquier descalificación.

Es deliberado, y aquí es seguro. La objeción a mirar un test en marcha —que asomarse infla los falsos positivos— se aplica a los p-valores frecuentistas, donde la regla de parada forma parte de la matemática. Bitelio decide por pérdida esperada sobre un posterior bayesiano, un marco diseñado para monitorización continua: el posterior en cualquier instante es la creencia correcta dada la evidencia de ese instante. Lo que protegían las funciones anteriores era la tentación de actuar antes de tiempo, no un cálculo roto. Estás mirando un sistema que lleva semanas mandando correos a tu gente con tu dinero, y los datos son tuyos.

Los números se refrescan cada cinco minutos.

Cómo termina

Evidencia suficiente. La pérdida esperada de una rama baja del umbral y todas las ramas han pasado el suelo de exposición. El suelo no es negociable: es lo que impide declarar ganadora con cuarenta personas por rama porque el posterior, con tan poco dato, dijo algo bonito.

El plazo. Si llega la fecha límite sin nada decisivo, se mantiene la rama de control y el resultado queda marcado como no concluyente. No se inventa una ganadora para parecer decisivo.

Un guardarraíl. Una rama cuya tasa de quejas o de bajas cruza tu umbral queda descalificada: no puede ganar por bien que convierta. Un solo evento nunca descalifica — uno no es una tasa, y entre las primeras decenas de personas de una rama cualquier queja aislada se dispara por encima de cualquier umbral razonable. Dos sí es un patrón.

Editar el flujo detiene el experimento

Una campaña se congela al enviarse. Un flujo no: sus pasos, sus conexiones y las plantillas que usan son editables en cualquier momento, y un experimento cuyas ramas cambian por debajo está midiendo dos cosas distintas como si fueran una.

Así que Bitelio lo vigila. Cuando cambia algo dentro de una rama, el experimento concluye usando sólo los contactos cuya ventana se cerró antes de esa edición — esos nunca vieron la versión nueva, así que sus datos siguen valiendo. Un experimento de tres semanas que alguien tocó el último día conserva su resultado. Uno editado antes de que terminaran suficientes contactos lo dice, y no te da nada.

Editar una plantilla cuenta como editar el flujo. Un paso de correo apunta a una plantilla, y cambiar el cuerpo de esa plantilla cambia lo que hace la rama sin tocar el flujo para nada.

«No se ha detectado ninguna diferencia» no es «las ramas son idénticas»

Significa que el efecto, si lo hubo, fue menor de lo que esta audiencia podía distinguir del ruido en este periodo. Bitelio lo dice así en lugar de informar de una diferencia de cero, porque cero es una afirmación mucho más fuerte de lo que sostienen los datos.

Promocionar a la ganadora

Si activas mandar a todo el mundo por la rama ganadora, en cuanto el experimento concluya con una ganadora, todos los contactos que lleguen al reparto a partir de ese momento irán por ahí. Los que ya están dentro conservan el recorrido que empezaron: sacar a alguien a mitad de una secuencia se lo rompería.

La promoción no reescribe tu flujo. El grafo del editor es siempre el que dibujaste; el reparto simplemente deja de repartir. Cancela el experimento y vuelve a repartir al instante.

Sólo promociona un resultado decisivo. Un experimento que termina sin conclusión — venció el plazo, se editó el flujo, o nunca hubo evidencia suficiente — deja el reparto repartiendo, aunque tengas la promoción activada. La rama de control queda registrada como el resultado que se mantiene, pero no se manda a nadie al 100% por ella con un resultado que el propio Bitelio califica de no concluyente.

Cancelar no registra ningún resultado. Un periodo interrumpido no ha medido nada.

Qué necesitas para hacer uno

  • Un paso de reparto con al menos dos ramas, exactamente una de ellas marcada como control. El control gana los empates, es el resultado que queda registrado cuando vence el plazo sin decisión, y ancla la comparación de ingresos.
  • Una tienda conectada, si mides ingresos. Medir un evento de conversión no necesita nada más.
  • Sólo un experimento por flujo a la vez. Dos repartos midiendo a la vez cruzan sus efectos, y después ninguno de los dos resultados significaría nada. Puedes dibujar todos los repartos que quieras; sólo uno puede estar midiendo.

Iniciar y cancelar requieren el permiso workflows:publish, no workflows:edit: con la promoción activada esto cambia lo que reciben contactos vivos. Leer el resultado requiere workflows:view.

Referencia de la API

  • POST /workflow-experiments — inicia uno. Cuerpo: { workflowId, stepId, metric, conversionEventName?, windowDays, decideBy, lossThreshold, minExposurePerArm?, autoPromote?, unsubscribeRatePct?, complaintRatePct? }. Requiere workflows:publish.
  • GET /workflow-experiments/:workflowId — el experimento en marcha si lo hay, y si no el más reciente, con su foto por rama. Requiere workflows:view.
  • POST /workflow-experiments/:id/cancel — detiene un experimento en marcha y libera el reparto. Requiere workflows:publish. No registra ningún resultado.