Experimentos de otimização de recursos

Os experimentos de otimização de recursos testam diferentes combinações de recursos em campanhas Performance Max, o que permite comparar a performance de diferentes conjuntos de recursos com um conjunto de base.

Esse fluxo de trabalho é compatível com o ExperimentType.OPTIMIZE_ASSETS.

Configuração

Para configurar um experimento de otimização de recursos:

  • Crie um recurso e um experimento com grupos de controle e de tratamento.
  • Vincule o novo recurso ao grupo de recursos do grupo de tratamento em uma única solicitação de mutação.

Pré-requisitos

Antes de criar um experimento de otimização de recursos, você precisa ter uma campanha Performance Max e um recurso base AssetGroup (customers/{customer_id}/assetGroups/{asset_group_id}) que sirva como referência para os dois grupos experimentais.

Solicitar ordem de operação

Como essas entidades são interdependentes, é necessário usar nomes de recursos temporários para se referir aos recursos criados em operações anteriores na mesma solicitação.

As operações na solicitação precisam estar na seguinte ordem:

  1. Crie um ou mais recursos Asset com nomes temporários (como customers/CUSTOMER_ID/assets/-1). Esses são seus recursos de teste.
  2. Crie um Experiment com um nome de recurso temporário (por exemplo, customers/CUSTOMER_ID/experiments/-2), type definido como OPTIMIZE_ASSETS, status definido como ENABLED e optimize_assets_experiment.optimize_assets_experiment_subtype definido como o OptimizeAssetsExperimentSubtype selecionado (por exemplo, COMPARE_ASSETS).
  3. Crie dois recursos ExperimentArm vinculados ao nome do recurso do experimento temporário da etapa 2, definindo campaigns (como o nome do recurso da campanha Performance Max), traffic_split (somando até 100) e asset_groups (ExperimentArm.AssetGroupInfo) em cada grupo:

    • Um grupo de controle (control = true) em que asset_groups contém um AssetGroupInfo com asset_group definido como o nome do recurso do AssetGroup de base (customers/CUSTOMER_ID/assetGroups/ASSET_GROUP_ID). Ao testar recursos recém-adicionados em relação ao grupo de recursos de referência (ou ao usar os subtipos ADD_ASSETS_TO_ASSETLESS_RETAIL ou ADD_VIDEO_ASSETS_TO_VIDEOLESS), deixe asset_group_assets sem definição no grupo de controle. Ao comparar dois conjuntos de recursos distintos em COMPARE_ASSETS, liste as entradas AssetGroupAssetInfo do grupo de controle (asset e field_type).
    • Um grupo de tratamento (control = false) em que asset_groups contém um AssetGroupInfo com asset_group definido como o mesmo nome de recurso AssetGroup base (customers/CUSTOMER_ID/assetGroups/ASSET_GROUP_ID) e asset_group_assets (repeated AssetGroupAssetInfo) listando os recursos Asset e field_types para o grupo de tratamento, incluindo o teste Asset recém-criado (customers/CUSTOMER_ID/assets/-1) da etapa 1.
  4. Crie recursos AssetGroupAsset vinculando os recursos de teste da etapa 1 (customers/CUSTOMER_ID/assets/-1) ao AssetGroup base usado nos grupos experimentais.

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

# 1. Create Assets with temporary resource names.
# We create a text asset and an image asset to showcase different types.
asset_operation_1 = create_text_asset_operation(
    client,
    customer_id,
    ASSET_1_TEMP_ID,
    "Fly to Mars!",
)
asset_operation_2 = create_image_asset_operation(
    client,
    customer_id,
    ASSET_2_TEMP_ID,
    "https://gaagl.page.link/Eit5",
    "Mars Landscape View",
)

# 2. Create an Experiment with a temporary resource name.
experiment_operation = client.get_type("MutateOperation")
experiment = experiment_operation.experiment_operation.create
experiment.resource_name = googleads_service.experiment_path(
    customer_id, EXPERIMENT_TEMP_ID
)
experiment.name = f"Interstellar Asset Experiment #{uuid4()}"
experiment.type_ = client.enums.ExperimentTypeEnum.OPTIMIZE_ASSETS
# Set the optimize assets experiment subtype to COMPARE_ASSETS.
experiment.optimize_assets_experiment.optimize_assets_experiment_subtype = (
    client.enums.OptimizeAssetsExperimentSubtypeEnum.COMPARE_ASSETS
)

# 3. Create two ExperimentArm resources.
treatment_assets = [
    (ASSET_1_TEMP_ID, client.enums.AssetFieldTypeEnum.HEADLINE),
    (ASSET_2_TEMP_ID, client.enums.AssetFieldTypeEnum.MARKETING_IMAGE),
]
arm_operations = create_arms_operations(
    client,
    customer_id,
    EXPERIMENT_TEMP_ID,
    campaign_resource_name,
    asset_group_id,
    treatment_assets,
)

# 4. Create AssetGroupAssets linking the assets to the asset group.
asset_group_asset_operation_1 = create_asset_group_asset_operation(
    client,
    customer_id,
    asset_group_id,
    ASSET_1_TEMP_ID,
    client.enums.AssetFieldTypeEnum.HEADLINE,
)
asset_group_asset_operation_2 = create_asset_group_asset_operation(
    client,
    customer_id,
    asset_group_id,
    ASSET_2_TEMP_ID,
    client.enums.AssetFieldTypeEnum.MARKETING_IMAGE,
)

# Send all operations in a single Mutate request.
# The operations must be in this specific order.
mutate_operations = [
    asset_operation_1,
    asset_operation_2,
    experiment_operation,
    *arm_operations,
    asset_group_asset_operation_1,
    asset_group_asset_operation_2,
]

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

Ruby

# 1. Create Assets with temporary resource names.
# We create a text asset and an image asset to showcase different types.
asset_operation_1 = create_text_asset_operation(
  client,
  customer_id,
  asset_1_temp_id,
  "Fly to Mars!",
)
asset_operation_2 = create_image_asset_operation(
  client,
  customer_id,
  asset_2_temp_id,
  "https://gaagl.page.link/Eit5",
  "Mars Landscape View",
)

# 2. Create an Experiment with a temporary resource name.
experiment_operation = client.operation.mutate do |m|
  m.experiment_operation = client.operation.create_resource.experiment do |e|
    e.resource_name = client.path.experiment(customer_id, experiment_temp_id)
    e.name = "Interstellar Asset Experiment #{(Time.new.to_f * 1000).to_i}"
    e.type = :OPTIMIZE_ASSETS
    # Set the optimize assets experiment subtype to COMPARE_ASSETS.
    e.optimize_assets_experiment = client.resource.optimize_assets_experiment_info do |oae|
      oae.optimize_assets_experiment_subtype = :COMPARE_ASSETS
    end
  end
end

# 3. Create two ExperimentArm resources.
treatment_assets = [
  [asset_1_temp_id, :HEADLINE],
  [asset_2_temp_id, :MARKETING_IMAGE],
]
arm_operations = create_arms_operations(
  client,
  customer_id,
  experiment_temp_id,
  campaign_resource_name,
  asset_group_id,
  treatment_assets,
)

# 4. Create AssetGroupAssets linking the assets to the asset group.
asset_group_asset_operation_1 = create_asset_group_asset_operation(
  client,
  customer_id,
  asset_group_id,
  asset_1_temp_id,
  :HEADLINE,
)
asset_group_asset_operation_2 = create_asset_group_asset_operation(
  client,
  customer_id,
  asset_group_id,
  asset_2_temp_id,
  :MARKETING_IMAGE,
)

# Send all operations in a single Mutate request.
# The operations must be in this specific order.
mutate_operations = [
  asset_operation_1,
  asset_operation_2,
  experiment_operation,
  *arm_operations,
  asset_group_asset_operation_1,
  asset_group_asset_operation_2,
]

response = client.service.google_ads.mutate(
  customer_id: customer_id,
  mutate_operations: mutate_operations,
)
      

Perl

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

curl

Gerar relatórios sobre o experimento

Consulte o guia de relatórios para consultar o recurso experiment e comparar as métricas entre os grupos de recursos de controle e de tratamento.

Atualizar ou encerrar

Depois de avaliar os resultados, você pode encerrar ou concluir o experimento usando ExperimentService.

  • Encerrar: se você não estiver satisfeito com os resultados do grupo de tratamento, use EndExperiment. Essa é uma operação síncrona.
  • Graduar: se você preferir a performance do grupo de recursos do grupo de tratamento, use GraduateExperiment. Como parte desse processo, a campanha de base original associada ao grupo de controle é pausada, e o grupo de tratamento é convertido em uma nova campanha independente. Essa é uma operação síncrona.