Tests innerhalb von Kampagnen

Mit Kampagnentests wird eine bestimmte Funktion innerhalb einer einzelnen Kampagne getestet. Bei systemverwalteten Tests wird der Traffic zwischen Kontroll- und Testkampagnen aufgeteilt. Bei kampagneninternen Tests wird der Traffic innerhalb der Kampagne aufgeteilt, je nachdem, ob die Funktion aktiviert ist oder nicht.

Dieser Workflow wird für die folgenden ExperimentType-Werte unterstützt:

  • ADOPT_AI_MAX
  • ADOPT_BROAD_MATCH_KEYWORDS

Einrichtung

  1. Definieren Sie die Experiment mit einem Testtyp, einer Kontrollgruppe ExperimentArm und einer Testgruppe ExperimentArm. Jede Testgruppe sollte auf dieselbe Kampagne verweisen.
  2. Aktivieren Sie die Testfunktion für den Test mit einer Feldmaske. Das ist für ADOPT_BROAD_MATCH_KEYWORDS nicht erforderlich. Stattdessen wird die Kampagneneinstellung für weitgehend passende Keywords automatisch beim Erstellen des Tests aktiviert.
  3. Senden Sie eine GoogleAdsService.Mutate-Anfrage, die Mutate-Vorgänge zum Erstellen des Tests und der Testgruppen sowie (falls zutreffend) zum Aktivieren der Testfunktion enthält.

Nach der Einrichtung wird der Traffic innerhalb der Kampagne so aufgeteilt, dass 50% des Traffics der aktivierten Funktion ausgesetzt sind (Testgruppe) und 50% nicht (Kontrollgruppe).

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

Bericht zum Test

Da Kontroll- und Test-Traffic in einer einzelnen Kampagne kombiniert werden, müssen Sie Berichte zu direkten Tests verwenden, um Messwerte zwischen der Kontroll- und der Testgruppe zu vergleichen. In Standardberichten auf Kampagnenebene werden nur zusammengefasste Messwerte für die gesamte Kampagne angezeigt. Es kann nicht zwischen den beiden Gruppen unterschieden werden.

Mit der folgenden GAQL-Abfrage können Sie Klickstatistiken für einen ADOPT_AI_MAX-Kampagnentest abrufen.

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'

Test übernehmen oder beenden

Nachdem Sie die Ergebnisse ausgewertet haben, können Sie den Test mit ExperimentService beenden oder bewerben.

  • Beenden: Wenn Sie mit den Ergebnissen nicht zufrieden sind, verwenden Sie EndExperiment. Die Funktion wird deaktiviert und die Kampagne wird wieder für den gesamten Traffic ohne die Testfunktion ausgeliefert. Dies ist ein synchroner Vorgang.
  • Bewerben: Wenn Sie mit den Ergebnissen zufrieden sind, verwenden Sie PromoteExperiment. Dadurch wird die zu testende Änderung als neuer permanenter Status der Kampagne übernommen. Dies ist ein asynchroner Vorgang. Weitere Informationen finden Sie unter Asynchrone Fehler.

Der Vorgang graduate wird für kampagneninterne Tests nicht unterstützt, da es keine separate Testkampagne gibt, die übernommen werden kann.