Create experiments

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.

The first step in running an experiment using the Google Ads API is to create an Experiment . This resource defines some key information about the experiment you want to run, such as a name and experiment type. You do not specify any of the campaigns involved in the experiment at this step.

Here's an overview of some key fields for an Experiment :

  • name : Each experiment must have a unique name.
  • description : An optional field that you can use to reference later. Does not affect how the experiment runs.
  • suffix : The suffix will be appended to the end of the names of the treatment campaigns so you can distinguish them from the control campaign. These concepts will be explained further in the experiment arms page.
  • type : What type of experiment to run. There are many types here, but most of them are system experiments. For your custom experiments, you'll want to specify either SEARCH_CUSTOM or DISPLAY_CUSTOM .
  • status : When creating an experiment, set this field to SETUP . Later on, once you begin the experiment, this field will let you check what it's currently doing
  • start_date and end_date : Specify when the experiment should start and end.
  • sync_enabled : Disabled by default. If set to true , changes made to the original campaign while your experiment is running are automatically copied to the experiment campaign. Learn more .

Here's an example of creating an experiment:

Java

 private 
  
 String 
  
 createExperimentResource 
 ( 
 GoogleAdsClient 
  
 googleAdsClient 
 , 
  
 long 
  
 customerId 
 ) 
  
 { 
  
 ExperimentOperation 
  
 operation 
  
 = 
  
 ExperimentOperation 
 . 
 newBuilder 
 () 
  
 . 
 setCreate 
 ( 
  
 Experiment 
 . 
 newBuilder 
 () 
  
 // Name must be unique. 
  
 . 
 setName 
 ( 
 "Example Experiment #" 
  
 + 
  
 getPrintableDateTime 
 ()) 
  
 . 
 setType 
 ( 
 ExperimentType 
 . 
 SEARCH_CUSTOM 
 ) 
  
 . 
 setSuffix 
 ( 
 "[experiment]" 
 ) 
  
 . 
 setStatus 
 ( 
 ExperimentStatus 
 . 
 SETUP 
 ) 
  
 . 
 build 
 ()) 
  
 . 
 build 
 (); 
  
 try 
  
 ( 
 ExperimentServiceClient 
  
 experimentServiceClient 
  
 = 
  
 googleAdsClient 
 . 
 getLatestVersion 
 (). 
 createExperimentServiceClient 
 ()) 
  
 { 
  
 MutateExperimentsResponse 
  
 response 
  
 = 
  
 experimentServiceClient 
 . 
 mutateExperiments 
 ( 
  
 Long 
 . 
 toString 
 ( 
 customerId 
 ), 
  
 ImmutableList 
 . 
 of 
 ( 
 operation 
 )); 
  
 String 
  
 experiment 
  
 = 
  
 response 
 . 
 getResults 
 ( 
 0 
 ). 
 getResourceName 
 (); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Created experiment with resource name '%s'%n" 
 , 
  
 experiment 
 ); 
  
 return 
  
 experiment 
 ; 
  
 } 
 } 
  
  

C#

 /// <summary> 
 /// Creates the experiment. 
 /// </summary> 
 /// <param name="client">The Google Ads client.</param> 
 /// <param name="customerId">The customer ID for which the call is made.</param> 
 /// <returns>The resource name of the newly created experiment.</returns> 
 private 
  
 static 
  
 string 
  
 CreateAnExperiment 
 ( 
 GoogleAdsClient 
  
 client 
 , 
  
 long 
  
 customerId 
 ) 
 { 
  
 // Get the ExperimentService. 
  
 ExperimentServiceClient 
  
 experimentService 
  
 = 
  
 client 
 . 
 GetService 
 ( 
  
 Services 
 . 
 V21 
 . 
 ExperimentService 
 ); 
  
 // Creates the experiment. 
  
 Experiment 
  
 experiment 
  
 = 
  
 new 
  
 Experiment 
 () 
  
 { 
  
 // Name must be unique. 
  
 Name 
  
 = 
  
 $"Example Experiment #{ExampleUtilities.GetRandomString()}" 
 , 
  
 Type 
  
 = 
  
 ExperimentType 
 . 
 SearchCustom 
 , 
  
 Suffix 
  
 = 
  
 "[experiment]" 
 , 
  
 Status 
  
 = 
  
 ExperimentStatus 
 . 
 Setup 
  
 }; 
  
 // Creates the operation. 
  
 ExperimentOperation 
  
 operation 
  
 = 
  
 new 
  
 ExperimentOperation 
 () 
  
 { 
  
 Create 
  
 = 
  
 experiment 
  
 }; 
  
 // Makes the API call. 
  
 MutateExperimentsResponse 
  
 response 
  
 = 
  
 experimentService 
 . 
 MutateExperiments 
 ( 
  
 customerId 
 . 
 ToString 
 (), 
  
 new 
 [] 
  
 { 
  
 operation 
  
 }); 
  
 // Displays the result. 
  
 string 
  
 experimentResourceName 
  
 = 
  
 response 
 . 
 Results 
 . 
 First 
 (). 
 ResourceName 
 ; 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Created experiment with resource name " 
  
 + 
  
 $"'{experimentResourceName}'." 
 ); 
  
 return 
  
 experimentResourceName 
 ; 
 } 
  
  

PHP

 private static function createExperimentResource( 
 ExperimentServiceClient $experimentServiceClient, 
 int $customerId 
 ): string { 
 // Creates an experiment and its operation. 
 $experiment = new Experiment([ 
 // Name must be unique. 
 'name' => 'Example Experiment #' . Helper::getPrintableDatetime(), 
 'type' => ExperimentType::SEARCH_CUSTOM, 
 'suffix' => '[experiment]', 
 'status' => ExperimentStatus::SETUP 
 ]); 
 $experimentOperation = new ExperimentOperation(['create' => $experiment]); 
 // Issues a request to create the experiment. 
 $response = $experimentServiceClient->mutateExperiments( 
 MutateExperimentsRequest::build($customerId, [$experimentOperation]) 
 ); 
 $experimentResourceName = $response->getResults()[0]->getResourceName(); 
 print "Created experiment with resource name '$experimentResourceName'" . PHP_EOL; 
 return $experimentResourceName; 
 }  
 

Python

 def 
  
 create_experiment_resource 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 ) 
 - 
> str 
 : 
  
 """Creates a new experiment resource. 
 Args: 
 client: an initialized GoogleAdsClient instance. 
 customer_id: a client customer ID. 
 Returns: 
 the resource name for the new experiment. 
 """ 
 experiment_operation 
 : 
 ExperimentOperation 
 = 
 client 
 . 
 get_type 
 ( 
 "ExperimentOperation" 
 ) 
 experiment 
 : 
 Experiment 
 = 
 experiment_operation 
 . 
 create 
 experiment 
 . 
 name 
 = 
 f 
 "Example Experiment # 
 { 
 uuid 
 . 
 uuid4 
 () 
 } 
 " 
 experiment 
 . 
 type_ 
 = 
 client 
 . 
 enums 
 . 
 ExperimentTypeEnum 
 . 
 SEARCH_CUSTOM 
 experiment 
 . 
 suffix 
 = 
 "[experiment]" 
 experiment 
 . 
 status 
 = 
 client 
 . 
 enums 
 . 
 ExperimentStatusEnum 
 . 
 SETUP 
 experiment_service 
 : 
 ExperimentServiceClient 
 = 
 client 
 . 
 get_service 
 ( 
 "ExperimentService" 
 ) 
 response 
 : 
 MutateExperimentsResponse 
 = 
 experiment_service 
 . 
 mutate_experiments 
 ( 
 customer_id 
 = 
 customer_id 
 , 
 operations 
 = 
 [ 
 experiment_operation 
 ] 
 ) 
 experiment_resource_name 
 : 
 str 
 = 
 response 
 . 
 results 
 [ 
 0 
 ] 
 . 
 resource_name 
 print 
 ( 
 f 
 "Created experiment with resource name 
 { 
 experiment_resource_name 
 } 
 " 
 ) 
 return 
 experiment_resource_name  
 
 . 
 py 

Ruby

 def 
  
 create_experiment_resource 
 ( 
 client 
 , 
  
 customer_id 
 ) 
  
 operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 create_resource 
 . 
 experiment 
  
 do 
  
 | 
 e 
 | 
  
 # Name must be unique. 
  
 e 
 . 
 name 
  
 = 
  
 "Example Experiment 
 #{ 
 ( 
 Time 
 . 
 new 
 . 
 to_f 
  
 * 
  
 1000 
 ) 
 . 
 to_i 
 } 
 " 
  
 e 
 . 
 type 
  
 = 
  
 :SEARCH_CUSTOM 
  
 e 
 . 
 suffix 
  
 = 
  
 '[experiment]' 
  
 e 
 . 
 status 
  
 = 
  
 :SETUP 
  
 end 
  
 response 
  
 = 
  
 client 
 . 
 service 
 . 
 experiment 
 . 
 mutate_experiments 
 ( 
  
 customer_id 
 : 
  
 customer_id 
 , 
  
 operations 
 : 
  
 [ 
 operation 
 ] 
 , 
  
 ) 
  
 experiment 
  
 = 
  
 response 
 . 
 results 
 . 
 first 
 . 
 resource_name 
  
 puts 
  
 "Created experiment with resource name 
 #{ 
 experiment 
 } 
 ." 
  
 experiment 
 end  
 
 . 
 rb 
  

Perl

 sub 
  
 create_experiment_resource 
  
 { 
  
 my 
  
 ( 
 $api_client 
 , 
  
 $customer_id 
 ) 
  
 = 
  
 @_ 
 ; 
  
 my 
  
 $experiment 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 Experiment 
 - 
> new 
 ({ 
  
 # Name must be unique. 
  
 name 
  
 = 
>  
 "Example Experiment #" 
  
 . 
  
 uniqid 
 (), 
  
 type 
  
 = 
>  
 SEARCH_CUSTOM 
 , 
  
 suffix 
  
 = 
>  
 "[experiment]" 
 , 
  
 status 
  
 = 
>  
 SETUP 
  
 }); 
  
 my 
  
 $operation 
  
 = 
  
 Google::Ads::GoogleAds::V21::Services::ExperimentService:: 
 ExperimentOperation 
  
 - 
> new 
 ({ 
  
 create 
  
 = 
>  
 $experiment 
  
 }); 
  
 my 
  
 $response 
  
 = 
  
 $api_client 
 - 
> ExperimentService 
 () 
 - 
> mutate 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
 , 
  
 operations 
  
 = 
>  
 [ 
 $operation 
 ]}); 
  
 my 
  
 $resource_name 
  
 = 
  
 $response 
 - 
> { 
 results 
 }[ 
 0 
 ]{ 
 resourceName 
 }; 
  
 printf 
  
 "Created experiment with resource name '%s'.\n" 
 , 
  
 $resource_name 
 ; 
  
 return 
  
 $resource_name 
 ; 
 } 
  
  
Create a Mobile Website
View Site in Mobile | Classic
Share by: