Campaign Mix experiments

Campaign Mix experiments are used for complex testing scenarios that involve comparing multiple variables across one or more campaigns (supporting up to 5 experiment arms). This workflow supports a mix of campaign types within the same experiment.

This workflow is supported for the following ExperimentType value:

  • COMPARE_CAMPAIGNS

Overview

The COMPARE_CAMPAIGNS experiment type maps to Custom mixed campaign types in the Google Ads UI (which also encompasses Custom Performance Max experiments). Its flexible design supports experiments that don't fit with the system-managed or intra-campaign workflows.

Campaign Mix experiments let you compare multiple variables across one or more campaigns by selecting existing campaigns and assigning them to different experiment arms (up to 5 total). This lets you test different campaign types (Search, Performance Max, Shopping, Demand Gen, Video, and App) within a single experiment to optimize budget allocation, evaluate account structures, test campaign consolidation, and compare various campaign settings.

Before you begin

  • Campaign Mix experiments let you create up to 5 experiment arms.
  • You can add any number of campaigns per arm.
  • It is available for all campaign types except Hotel campaigns.
  • It supports custom and even traffic splits across arms. The minimum traffic split is 1%, traffic split percentages cannot have decimals, and the sum of traffic_split across all arms must equal 100 (100%).
  • The same campaign can be added to multiple experiment arms, and the traffic is split according to the percentage chosen. No two experiment arms can have the exact same set of campaigns.
  • We recommend having a plan or intent of what you want to experiment with before starting. For example, you should aim to have the same budget amounts per experiment arm, unless budget is what you are specifically testing.

Setup

Campaign Mix experiments and their experiment arms must be created together in a single GoogleAdsService.Mutate request using temporary resource names:

  1. Create an Experiment with a temporary resource name (for example, customers/CUSTOMER_ID/experiments/-1), type set to COMPARE_CAMPAIGNS, and status set to ENABLED.
  2. Create ExperimentArm resources referencing the temporary experiment resource name (one control arm with control = true and up to four treatment arms with control = false), setting traffic_split on each arm so that the total equals 100.
  3. Assign existing campaign resource names (customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID) to the campaigns field on each ExperimentArm. Unlike standard system-managed experiments where treatment campaigns are automatically generated in in_design_campaigns, Campaign Mix experiments require you to assign existing campaigns directly to each arm.
  4. Send the Experiment and ExperimentArm create operations in a single GoogleAdsService.Mutate request. Because the experiment is created directly with status = ENABLED, you do not need to call ExperimentService.ScheduleExperiment.

Report on the experiment

Once the experiment is running, you can query for metrics to compare performance. See the Reporting guide for details.

Graduate or end

After evaluating the results, you can either end or graduate the experiment using ExperimentService.

  • End: If you are not satisfied with the results from any of the treatment arms, use EndExperiment. This is a synchronous operation.
  • Graduate: If you prefer the performance of a specific treatment arm, use GraduateExperiment to graduate that arm. As part of this process, the campaigns associated with other arms (including the control arm) are paused, and the campaigns associated with the graduated treatment arm are converted to independent, non-experimental campaigns. This is a synchronous operation.