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

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:

  1. 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.
  2. 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.
  3. End the experiment by calling CampaignExperimentService.EndCampaignExperiment. This is a synchronous operation.