Ejecutar pruebas A/B desde la CLI

La CLI de Adapty ejecuta pruebas A/B de paywalls o flows directamente desde el terminal, bajo el tema adapty ab-tests. Puedes crear una prueba como borrador, iniciarla en un placement para una audiencia, detenerla con un ganador, reemplazar una prueba activa con una modificada y archivar las pruebas antiguas.

Úsalo para que un agente de IA ejecute tus pruebas, para crear un script de prueba en varias aplicaciones, o para iniciar o detener una prueba sin abrir el dashboard.

Una prueba regular divide los usuarios de una audiencia en un placement entre dos o más paywalls, o entre dos o más flows. Para ejecutar una prueba en varios placements, usa una prueba crossplacement en el dashboard. Los comandos ab-tests no devuelven resultados de la prueba. Para ver los resultados, como la probabilidad de ser el mejor, usa el dashboard: Resultados y métricas de pruebas A/B. Para leer el análisis de los usuarios de una prueba, filtra los comandos de análisis por la dimensión A/B tests de adapty analytics catalog.

Antes de empezar

El tema ab-tests utiliza la misma instalación e inicio de sesión que el resto de la CLI. Si aún no lo has configurado, sigue los pasos 1 y 2 de la guía de inicio rápido. El tema requiere la versión 0.14.0 o posterior de la CLI. Para ver tu versión, ejecuta adapty --version.

Cada comando requiere el UUID de la app en --app. Para encontrarlo, ejecuta:

adapty apps list

Una prueba usa contenido que ya existe:

  • Flows: Un flow se une a una prueba solo cuando está publicado. Un flow en borrador, o con cambios sin publicar, no es aceptado. Para publicar un flow, ejecuta adapty flows publish.
  • Paywalls: Para crear un paywall con productos que ya están en Adapty, ejecuta adapty paywalls create. Para darle un nuevo diseño a un paywall, usa el Paywall Builder.
  • Placements: Una prueba de paywall se ejecuta en un placement de paywall, y una prueba de flow en un placement de flow. Para crear un placement, ejecuta adapty placements create. Tu app no mostrará nada de un nuevo placement hasta que su código obtenga ese placement.
  • Segments: Para ejecutar una prueba solo para algunos usuarios, crea primero un segmento con adapty segments create.

For these commands, see the command reference.

Listar y consultar pruebas

list muestra pruebas A/B de flows a menos que pases --type paywall. Para ver todas las pruebas de una app, ejecútalo una vez por cada tipo:

adapty ab-tests list --app <app-id> --type flow --page-size 100
adapty ab-tests list --app <app-id> --type paywall --page-size 100

Una prueba puede estar en uno de estos estados: draft, live, completed, inactive o archived.

Para consultar una prueba concreta con sus variantes, ejecuta:

adapty ab-tests get --app <app-id> <test-id>

En get --json, segment_ids es la audiencia de la prueba: [] corresponde a Todos los usuarios y null significa que aún no se ha planificado ninguna audiencia. Cada variante tiene su weight y el ID del paywall o flow. Para identificar una variante, usa paywall_title o flow_name. El title de la variante está vacío a menos que lo hayas establecido.

Crear una prueba

Una prueba nueva es un borrador. Ningún usuario ve un borrador, así que puedes crear uno y modificarlo en cualquier momento.

  1. Encuentra los IDs del contenido que quieres probar, con adapty paywalls list o adapty flows list.

  2. Crea el borrador con dos o más variantes. Cada variante es un paywall o flow con un peso. El peso es el porcentaje de usuarios que ven esa variante, y los pesos deben sumar 100:

    adapty ab-tests create --app <app-id> --title "Annual vs monthly" \
      --goal "More revenue per user" --placement <placement-id> \
      --paywalls '[{"paywall_id":"<paywall-a>","weight":50},{"paywall_id":"<paywall-b>","weight":50}]'

    --placement es obligatorio. Una prueba de paywall necesita un placement de paywall, y una prueba de flow necesita un placement de flow. Para una prueba de flow, usa --flows con flow_id en cada variante. Una variante también puede tener un title, como "title":"A".

  3. Revisa el borrador con ab-tests get.

La ubicación de un borrador es solo provisional. create también puede aceptar una audiencia provisional, con --segment o --all-users. Estos valores provisionales no tienen ningún efecto sobre los usuarios. Cuando inicies la prueba, vuelve a pasar el placement y la audiencia a start.

Iniciar una prueba

Warning

No puedes deshacer un inicio. Desde el momento en que la prueba comienza, los usuarios de la audiencia que indiques dejan de ver su paywall o flow actual.

Para iniciar un borrador, indica el placement y una audiencia: --all-users, o --segment con un ID de segmento:

adapty ab-tests start --app <app-id> <test-id> --placement <placement-id> --segment <segment-id>

El CLI muestra lo que hará el inicio y pregunta Apply? [y/N] antes de enviar nada. El lugar donde se ejecuta la prueba depende de las audiencias del placement:

  • El placement tiene una audiencia para este segmento (o para todos los usuarios): La prueba se ejecuta en esa audiencia. Una prueba que esté activa en ese momento se detiene y pasa al estado completed.
  • El placement no tiene audiencia para este segmento: start añade una nueva audiencia con la máxima prioridad en el placement. Los usuarios de este segmento que actualmente coincidan con otra audiencia pasan a la prueba.

Para dar a la prueba una prioridad menor que otra audiencia, primero añade el segmento como audiencia con esa prioridad. Asígnale el paywall o flow que esos usuarios ven ahora y luego inicia la prueba en esa audiencia. Consulta Cambiar la prioridad de la audiencia.

Un cambio en una audiencia de segmento puede tardar hasta 20 minutos en llegar a todos los usuarios.

Solo se inicia una prueba en borrador. Para ejecutar una prueba de nuevo, crea una nueva: lee la prueba antigua con get y luego crea una prueba con los mismos grupos usando create.

Cambiar una prueba

update envía la prueba completa de nuevo. Incluye todos los parámetros cada vez, incluyendo el obligatorio --placement. Si omites un parámetro, Adapty borra su valor: por ejemplo, el objetivo o la audiencia planificada.

adapty ab-tests update --app <app-id> <test-id> --title "Annual vs monthly, Q4" \
  --goal "More revenue per user" --placement <placement-id> \
  --paywalls '[{"paywall_id":"<paywall-a>","weight":70},{"paywall_id":"<paywall-b>","weight":30}]'

En una prueba en vivo, update solo cambia el título y el objetivo. Pasa los brazos, el placement y la audiencia exactamente como los devuelve get; se rechazarán otros brazos u otro placement. La prueba mantiene su hora de inicio y los usuarios conservan sus brazos. No puedes modificar una prueba completada o archivada.

Para cambiar los brazos o los pesos de una prueba en vivo, reemplázala. replace es la acción Modify del dashboard:

adapty ab-tests replace --app <app-id> <test-id> --title "Annual vs monthly v2" \
  --placement <placement-id> \
  --paywalls '[{"paywall_id":"<paywall-a>","weight":80},{"paywall_id":"<paywall-b>","weight":20}]'

La prueba activa se detiene y pasa al estado completed, y sus resultados se conservan con su ID. Una nueva prueba con un nuevo ID comienza en la misma audiencia, y Adapty asigna de nuevo a cada usuario de la audiencia a un grupo. Si indicas un placement diferente en --placement, Adapty mueve la audiencia a ese placement. No puedes mover una prueba de todos los usuarios.

Detener una prueba

stop finaliza la prueba. Tú decides qué ven los usuarios de su audiencia a partir de ese momento. Indica exactamente uno de estos flags:

FlagDespués de detener
--winner <id>Toda la audiencia ve uno de los grupos de la prueba. Indica el ID del paywall o el ID del flow de ese grupo.
--other <id>Toda la audiencia ve un paywall o flow que no formaba parte de la prueba, del mismo tipo que la prueba.
--no-contentLa audiencia abandona el placement y sus usuarios pasan a la siguiente audiencia que les corresponda. No está disponible para pruebas con audiencia de todos los usuarios.
adapty ab-tests stop --app <app-id> <test-id> --winner <paywall-b>

La prueba pasa al estado completed. Para volver a probar los mismos grupos, crea una nueva prueba como se describe en Iniciar una prueba. Para elegir al ganador, consulta Resultados y métricas de la prueba A/B.

Archivar una prueba

Puedes archivar cualquier prueba que no esté activa. Para archivar una prueba activa, primero detenla. No puedes restaurar una prueba archivada.

adapty ab-tests archive --app <app-id> <test-id>

Confirmación en scripts y agentes

start, stop, replace, y archive no se pueden deshacer, por lo que cada uno muestra su efecto antes de enviar nada. La forma en que solicita confirmación depende de cómo se ejecute el comando:

Cómo se ejecuta el comandoQué ocurre
En un terminalLa CLI imprime el efecto y pregunta Apply? [y/N]. Si respondes y o yes, la CLI envía la solicitud. Para cualquier otra respuesta, la CLI termina con código 1 y no envía nada.
Con --yesLa CLI envía la solicitud sin preguntar.
Con --json, en una tubería o sin terminalLa CLI no envía nada y termina con código 6. El mensaje de error describe el efecto.

De este modo, un script o un agente puede leer el efecto de un comando antes de ejecutarlo: lanzarlo sin --yes, leer el mensaje y volver a ejecutarlo con --yes solo después de que alguien haya aprobado dicho efecto.

Errores

Código de salidaCausaQué hacer
1Respondiste algo distinto a y en el prompt. No se envió nada.Vuelve a ejecutar el comando si era tu intención.
2La CLI rechazó la entrada antes de enviarla: un UUID inválido, arms que no son un array JSON, un arm sin ID o sin peso entero, --paywalls y --flows ambos o ninguno, o dos opciones de stop.Corrige el flag que indica el mensaje.
3No has iniciado sesión, o tu usuario de Adapty no tiene acceso a la app.Inicia sesión con adapty auth login y encuentra el ID de la app en adapty apps list.
4Adapty rechazó la solicitud. El mensaje indica el motivo.Consulta Mensajes de Adapty.
5La CLI no pudo conectar con Adapty.Asegúrate de tener conexión y vuelve a ejecutar el comando.
6Un comando que no se puede deshacer se ejecutó sin --yes y sin nadie que respondiera. No se envió nada.Lee el efecto en el mensaje y vuelve a ejecutar el comando con --yes.
130Pulsaste Ctrl+C en el prompt. No se envió nada.—

Mensajes de Adapty

MensajeQué hacer
The sum of the weights must equal 100, but has N.Cambia los pesos para que sumen 100.
Flow(<id>) must be published before adding to AB test.Publica el flow y vuelve a ejecutar el comando.
Paywalls cannot be changed in non-draft ab tests. o Placement cannot be changed in non-draft ab tests.Pasa los arms y el placement tal como los devuelve get, o usa replace.
AB Test from default audience can not be stopped.Una prueba A/B para todos los usuarios necesita un paywall o flow tras detenerla: usa --winner o --other.
AB Test to stop must be live.Solo se puede detener o reemplazar una prueba en curso.
Live Ab Test can not be deleted.Detén la prueba antes de archivarla.

Referencia de comandos

Todos los comandos requieren --app, el UUID de la app obtenido con adapty apps list. Todos los comandos excepto list necesitan el ID de la prueba como argumento.

ab-tests list

FlagRequiredDescription
--typeNoflow (predeterminado) o paywall.
--stateNolive, draft, completed, inactive o archived.
--placementNoSolo las pruebas de este placement (ID). Repite el flag para varios placements.
--segmentNoSolo las pruebas que se ejecutan para exactamente este segmento (ID). Repite el flag para varios segmentos.
--searchNoSolo las pruebas cuyo título contenga este texto.
--pageNoNúmero de página. Predeterminado: 1.
--page-sizeNoPruebas por página, hasta 100. Predeterminado: 20.

ab-tests get

Devuelve el test con sus ramas. No acepta otros flags.

ab-tests create

IndicadorObligatorioDescripción
--titleSíTítulo de la prueba.
--paywallsUno de los dosVariantes de una prueba A/B de paywall, en JSON: [{"paywall_id":"<id>","weight":50,"title":"A"}, …]. title es opcional.
--flowsUno de los dosVariantes de una prueba A/B de flow, en JSON, con flow_id en lugar de paywall_id.
--goalNoLo que la prueba pretende demostrar.
--placementSíPlacement para el que se planifica la prueba (ID). Una prueba de paywall necesita un placement de paywall, y una prueba de flow necesita un placement de flow.
--segmentNoPlanifica la prueba para un segmento (ID). No se puede usar junto con --all-users.
--all-usersNoPlanifica la prueba para todos los usuarios.

ab-tests update

Acepta los mismos flags que create, y --placement es obligatorio. Un flag que omitas se borrará. En una prueba en curso, solo se pueden cambiar --title y --goal. Pasa de nuevo el mismo placement y audiencia.

ab-tests start

FlagObligatorioDescripción
--placementSíPlacement donde ejecutar la prueba (ID).
--segmentUna de las dosEjecutar la prueba para un segmento (ID).
--all-usersUna de las dosEjecutar la prueba para todos los usuarios.
--yes, -yNoIniciar sin confirmación. Obligatorio con --json o en un pipe.

ab-tests stop

IndicadorRequeridoDescripción
--winnerUno de los tresMuestra el paywall o flow de este arm (ID) a toda la audiencia.
--otherUno de los tresMuestra un paywall o flow que no estaba en la prueba (ID).
--no-contentUno de los tresElimina la audiencia del placement. No está permitido para una prueba de todos los usuarios.
--yes, -yNoDetiene sin confirmar. Requerido con --json o en una tubería.

ab-tests replace

FlagRequeridoDescripción
--titleSíTítulo de la nueva prueba.
--placementSíPlacement de la nueva prueba (ID). Un placement diferente mueve la audiencia a ese placement.
--paywalls o --flowsSíVariantes de la nueva prueba, como en create.
--goalNoLo que la nueva prueba pretende demostrar.
--yes, -yNoReemplazar sin confirmación. Obligatorio con --json o en un pipe.

La nueva prueba toma la audiencia de la prueba que reemplaza, por lo que replace no admite ningún flag de audiencia.

ab-tests archive

FlagRequiredDescription
--yes, -yNoArchivar sin confirmación. Obligatorio con --json o en una tubería.

¿Qué viene después?