Tests d'optimisation des composants

Les tests d'optimisation des composants testent différentes combinaisons de composants dans les campagnes Performance Max. Vous pouvez ainsi comparer les performances de différents ensembles de composants par rapport à un ensemble de base.

Ce workflow est compatible avec ExperimentType.OPTIMIZE_ASSETS.

Configuration

Pour configurer un test d'optimisation des composants :

  • Créez un composant et un test avec des groupes de contrôle et de traitement.
  • Associez le nouveau composant au groupe de composants du groupe de traitement dans une seule requête de modification.

Prérequis

Avant de créer une expérience d'optimisation des composants, vous devez disposer d'une campagne Performance Max existante et d'une ressource AssetGroup de base (customers/{customer_id}/assetGroups/{asset_group_id}) qui sert de référence pour les deux groupes de test.

Ordre des opérations de requête

Étant donné que ces entités sont interdépendantes, vous devez utiliser des noms de ressources temporaires pour faire référence aux ressources créées lors d'opérations précédentes dans la même requête.

Les opérations de votre requête doivent être effectuées dans l'ordre suivant :

  1. Créez une ou plusieurs ressources Asset avec des noms de ressources temporaires (tels que customers/CUSTOMER_ID/assets/-1). Il s'agit de vos éléments de test.
  2. Créez un Experiment avec un nom de ressource temporaire (par exemple, customers/CUSTOMER_ID/experiments/-2), type défini sur OPTIMIZE_ASSETS, status défini sur ENABLED et optimize_assets_experiment.optimize_assets_experiment_subtype défini sur le OptimizeAssetsExperimentSubtype sélectionné (par exemple, COMPARE_ASSETS).
  3. Créez deux ressources ExperimentArm associées au nom de ressource du test temporaire de l'étape 2, en définissant campaigns (sur le nom de ressource de la campagne Performance Max), traffic_split (somme de 100) et asset_groups (ExperimentArm.AssetGroupInfo) sur chaque bras :

    • Un groupe de contrôle (control = true) où asset_groups contient un AssetGroupInfo avec asset_group défini sur le nom de ressource du AssetGroup de base (customers/CUSTOMER_ID/assetGroups/ASSET_GROUP_ID). Lorsque vous testez des composants d'annonce récemment ajoutés par rapport au groupe de composants de référence (ou lorsque vous utilisez les sous-types ADD_ASSETS_TO_ASSETLESS_RETAIL ou ADD_VIDEO_ASSETS_TO_VIDEOLESS), laissez asset_group_assets non défini sur le groupe de contrôle. Lorsque vous comparez deux ensembles de composants distincts sous COMPARE_ASSETS, listez les entrées AssetGroupAssetInfo du groupe de contrôle (asset et field_type).
    • Un groupe de traitement (control = false) où asset_groups contient un AssetGroupInfo avec asset_group défini sur le même nom de ressource AssetGroup de base (customers/CUSTOMER_ID/assetGroups/ASSET_GROUP_ID) et asset_group_assets (repeated AssetGroupAssetInfo) listant les ressources Asset et les field_type du groupe de traitement, y compris le Asset de test nouvellement créé (customers/CUSTOMER_ID/assets/-1) à l'étape 1.
  4. Créez des ressources AssetGroupAsset associant les composants de test de l'étape 1 (customers/CUSTOMER_ID/assets/-1) à la ressource AssetGroup de base utilisée dans les groupes de test.

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

Rapport sur le test

Consultez le guide sur les rapports pour interroger la ressource experiment et comparer les métriques entre les groupes de composants de contrôle et de traitement.

Changer de compte ou arrêter

Après avoir évalué les résultats, vous pouvez mettre fin au test ou le valider à l'aide de ExperimentService.

  • Terminer : si vous n'êtes pas satisfait des résultats du groupe de traitement, utilisez EndExperiment. Il s'agit d'une opération synchrone.
  • Promouvoir : si vous préférez les performances du groupe de composants du groupe de traitement, utilisez GraduateExperiment. Dans ce cas, la campagne de base d'origine associée au groupe de contrôle est mise en veille, et le groupe de traitement est converti en une nouvelle campagne indépendante. Il s'agit d'une opération synchrone.