Campaign experiments are an interface to manage experimental campaigns related to a base campaign. Experiment campaigns are full-fledged campaigns that can serve ads and accrue clicks, cost, and other metrics.
Creating a campaign experiment
Creating a campaign experiment is an asynchronous operation, and does not
use the standard mutate mechanism for normal operations on resources. You
should create a new CampaignExperiment
referencing the campaign_draft
for the campaign draft you want to turn into
an experiment. Additionally you must specify a
name
,
traffic_split_percent
,
and traffic_split_type
.
Traffic split percent indicates what percentage of traffic should be directed to the experiment campaign. The remaining percentage will still be directed towards the base campaign. For a given impression, only the base campaign or the experiment campaign will be considered for auctions, not both.
The traffic split type indicates how the traffic will be segregated between
the experiment campaign and the base campaign. If you choose
RANDOM_QUERY
,
then the campaign will be chosen randomly at the time of the impression. If you
choose COOKIE
,
then the choice made for a given user will be persisted in a
cookie so that specific user is always in the same arm of the experiment.
Once the CampaignExperiment
is set up, you should make a
CampaignExperimentService.CreateCampaignExperiment
request to create the experiment. This is asynchronous, and will return a
longrunning operation you can use to check on the status of the creation.
Modifying an existing experiment
You can change fields on the experiment campaign like you would any normal campaign, with a few exceptions that are dictated by the campaign experiment:
status
name
start_date
end_date
campaign_budget
Promote, Graduate, or Terminate
When your experiment has collected sufficient data, you can choose its fate:
- Promote the experiment, copying any changes from the experiment campaign
to the base campaign and removing the experiment campaign. This is an
asynchronous operation. You can perform this operation by calling
CampaignExperimentService.PromoteCampaignExperiment
. - Graduate the experiment, allowing it to continue completely independent
of the base campaign as its own full-fledged campaign. This is a synchronous
operation and executes immediately. You can perform this operation by
calling
CampaignExperimentService.GraduateCampaignExperiment
. You must pass in a newcampaign_budget
to this request, since the newly graduated campaign will not be able to share the budget of the existing base campaign. - End the experiment by calling
CampaignExperimentService.EndCampaignExperiment
. This is a synchronous operation.