Campaign Experiments

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

Key Term: The campaign experiment is a resource you use to create new
experiments from a campaign draft and to determine associations between
campaign drafts and experiment campaigns. The experiment campaign is an
actual campaign that runs alongside the base campaign and accrues stats and
spend.

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 wish 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 new campaign_budget to this request, since the newly
graduated campaign will not be able to share the budget of the existing base
campaign.