Experimentos en la misma campaña

Los experimentos dentro de la campaña se usan para probar una función específica dentro de una sola campaña. A diferencia de los experimentos administrados por el sistema, en los que el tráfico se divide entre el control y la campaña de tratamiento, los experimentos dentro de la campaña dividen el tráfico dentro de la campaña, según si la función está habilitada o no.

Este flujo de trabajo es compatible con los siguientes ExperimentType valores:

  • ADOPT_AI_MAX
  • ADOPT_BROAD_MATCH_KEYWORDS

Configuración

  1. Define el Experiment, proporcionando un tipo de experimento, un control ExperimentArm, y un tratamiento ExperimentArm. Cada grupo debe hacer referencia a la misma campaña.
  2. Habilita la función de prueba para el experimento con una máscara de campo. Esto no es necesario para ADOPT_BROAD_MATCH_KEYWORDS. En su lugar, la configuración de la campaña de concordancia amplia se habilitará automáticamente cuando se cree el experimento.
  3. Envía una GoogleAdsService.Mutate solicitud que incluya operaciones de mutación para crear el experimento y los grupos de experimentos y (si corresponde) habilitar la función de prueba.

Una vez configurado, el tráfico se divide dentro de la campaña de modo que el 50% del tráfico se expone a la función habilitada (el grupo de tratamiento) y el 50% no (el grupo de control).

Java

This example is not yet available in Java; you can take a look at the other languages.
    

C#

This example is not yet available in C#; you can take a look at the other languages.
    

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

# Create the experiment resource name using a temporary ID.
experiment_resource_name = googleads_service.experiment_path(
    customer_id, "-1"
)

# Create the experiment.
experiment_operation = client.get_type("MutateOperation")
experiment = experiment_operation.experiment_operation.create
experiment.resource_name = experiment_resource_name
experiment.name = f"ADOPT_AI_MAX Experiment #{uuid4()}"
experiment.type_ = client.enums.ExperimentTypeEnum.ADOPT_AI_MAX
experiment.status = client.enums.ExperimentStatusEnum.SETUP

# Create the control arm. Both arms in an intra-campaign experiment
# reference the same base campaign.
control_arm_operation = client.get_type("MutateOperation")
control_arm = control_arm_operation.experiment_arm_operation.create
control_arm.experiment = experiment_resource_name
control_arm.name = "Control Arm"
control_arm.control = True
control_arm.traffic_split = 50
control_arm.campaigns.append(
    googleads_service.campaign_path(customer_id, campaign_id)
)

# Create the treatment arm.
treatment_arm_operation = client.get_type("MutateOperation")
treatment_arm = treatment_arm_operation.experiment_arm_operation.create
treatment_arm.experiment = experiment_resource_name
treatment_arm.name = "Treatment Arm"
treatment_arm.control = False
treatment_arm.traffic_split = 50
treatment_arm.campaigns.append(
    googleads_service.campaign_path(customer_id, campaign_id)
)

# Create a campaign operation with an update mask to enable AI Max and
# configure asset automation settings.
campaign_operation = client.get_type("MutateOperation")
campaign = campaign_operation.campaign_operation.update
campaign.resource_name = googleads_service.campaign_path(
    customer_id, campaign_id
)
campaign.ai_max_setting.enable_ai_max = True

for asset_automation_type_enum in [
    client.enums.AssetAutomationTypeEnum.TEXT_ASSET_AUTOMATION,
    client.enums.AssetAutomationTypeEnum.FINAL_URL_EXPANSION_TEXT_ASSET_AUTOMATION,
]:
    asset_automation_setting = client.get_type(
        "Campaign"
    ).AssetAutomationSetting()
    asset_automation_setting.asset_automation_type = (
        asset_automation_type_enum
    )
    asset_automation_setting.asset_automation_status = (
        client.enums.AssetAutomationStatusEnum.OPTED_IN
    )
    campaign.asset_automation_settings.append(asset_automation_setting)

client.copy_from(
    campaign_operation.campaign_operation.update_mask,
    protobuf_helpers.field_mask(None, campaign._pb),
)

# Send all mutate operations in a single Mutate request.
mutate_operations = [
    experiment_operation,
    control_arm_operation,
    treatment_arm_operation,
    campaign_operation,
]

response = googleads_service.mutate(
    customer_id=customer_id,
    mutate_operations=mutate_operations,
)
      

Ruby

This example is not yet available in Ruby; you can take a look at the other languages.
    

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

Informes sobre el experimento

Dado que el tráfico de control y de tratamiento se mezcla dentro de una sola campaña, debes usar informes directos del experimento para comparar las métricas entre los grupos de control y de tratamiento. Los informes estándar a nivel de la campaña solo muestran métricas agregadas para toda la campaña y no pueden distinguir entre los dos grupos.

Se puede usar la siguiente consulta de GAQL para recuperar las estadísticas de clics de un experimento dentro de la campaña ADOPT_AI_MAX.

SELECT
  experiment.resource_name,
  experiment.name,
  metrics.clicks,
  metrics.control_clicks,
  metrics.clicks_point_estimate,
  metrics.clicks_p_value
FROM experiment
WHERE experiment.type = 'ADOPT_AI_MAX'

Promociona o finaliza el experimento

Después de evaluar los resultados, puedes finalizar o promocionar el experimento con ExperimentService.

  • Finalizar: Si no estás satisfecho con los resultados, usa EndExperiment. Se inhabilitará la función y la campaña volverá a publicar todo el tráfico sin la función experimental. Esta es una operación síncrona.
  • Promocionar: Si estás satisfecho con los resultados, usa PromoteExperiment. Esto aplica el cambio experimental como el nuevo estado permanente de la campaña. Esta es una operación asíncrona. Consulta Errores asíncronos para obtener más detalles.

La operación graduate no es compatible con los experimentos dentro de la campaña porque no hay una campaña de tratamiento independiente para cambiar.