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_splitacross 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:
- Create an
Experimentwith a temporary resource name (for example,customers/CUSTOMER_ID/experiments/-1),typeset toCOMPARE_CAMPAIGNS, andstatusset toENABLED. - Create
ExperimentArmresources referencing the temporary experiment resource name (one control arm withcontrol = trueand up to four treatment arms withcontrol = false), settingtraffic_spliton each arm so that the total equals100. - Assign existing campaign resource names
(
customers/CUSTOMER_ID/campaigns/CAMPAIGN_ID) to thecampaignsfield on eachExperimentArm. Unlike standard system-managed experiments where treatment campaigns are automatically generated inin_design_campaigns, Campaign Mix experiments require you to assign existing campaigns directly to each arm. - Send the
ExperimentandExperimentArmcreate operations in a singleGoogleAdsService.Mutaterequest. Because the experiment is created directly withstatus = ENABLED, you do not need to callExperimentService.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
GraduateExperimentto 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.