Create a Smart campaign and a Smart campaign setting

Smart campaigns depend on a resource called SmartCampaignSetting which contains additional configuration options that are not available on the main Campaign resource.

A Smart campaign setting cannot exist without being tied to a campaign, which is part of the reason why it's best to create the two objects in the same mutate request.

Create a campaign

Because a Smart campaign is primarily managed automatically by Google's advertising technology, you don't need to set many fields on it.

Key requirements for Smart campaigns:

Notice that we set the value for this campaign's resource name using a temporary resource name . This enables the campaign to be referenced by other objects in the mutate request before it exists in the backend.

Java

 private 
  
 MutateOperation 
  
 createSmartCampaignOperation 
 ( 
 long 
  
 customerId 
 ) 
  
 { 
  
 MutateOperation 
 . 
 Builder 
  
 builder 
  
 = 
  
 MutateOperation 
 . 
 newBuilder 
 (); 
  
 builder 
  
 . 
 getCampaignOperationBuilder 
 () 
  
 . 
 getCreateBuilder 
 () 
  
 . 
 setName 
 ( 
 "Smart campaign " 
  
 + 
  
 CodeSampleHelper 
 . 
 getShortPrintableDateTime 
 ()) 
  
 . 
 setStatus 
 ( 
 CampaignStatus 
 . 
 PAUSED 
 ) 
  
 . 
 setAdvertisingChannelType 
 ( 
 AdvertisingChannelType 
 . 
 SMART 
 ) 
  
 . 
 setAdvertisingChannelSubType 
 ( 
 AdvertisingChannelSubType 
 . 
 SMART_CAMPAIGN 
 ) 
  
 // Assigns the resource name with a temporary ID. 
  
 . 
 setResourceName 
 ( 
 ResourceNames 
 . 
 campaign 
 ( 
 customerId 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 )) 
  
 . 
 setCampaignBudget 
 ( 
 ResourceNames 
 . 
 campaignBudget 
 ( 
 customerId 
 , 
  
 BUDGET_TEMPORARY_ID 
 )) 
  
 // Declares whether this campaign serves political ads targeting the EU. 
  
 . 
 setContainsEuPoliticalAdvertising 
 ( 
 DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 ); 
  
 return 
  
 builder 
 . 
 build 
 (); 
 } 
  
  

C#

 /// <summary> 
 /// Creates a MutateOperation that creates a new Smart campaign. 
 /// A temporary ID will be assigned to this campaign so that it can be referenced by other 
 /// objects being created in the same Mutate request. 
 /// </summary> 
 /// <param name="customerId">The Google Ads customer ID.</param> 
 /// <returns>A MutateOperation that creates a campaign.</returns> 
 private 
  
 MutateOperation 
  
 CreateSmartCampaignOperation 
 ( 
 long 
  
 customerId 
 ) 
 { 
  
 return 
  
 new 
  
 MutateOperation 
  
 { 
  
 CampaignOperation 
  
 = 
  
 new 
  
 CampaignOperation 
  
 { 
  
 Create 
  
 = 
  
 new 
  
 Campaign 
  
 { 
  
 Name 
  
 = 
  
 $"Smart campaign #{ExampleUtilities.GetRandomString()}" 
 , 
  
 // Set the campaign status as PAUSED. The campaign is the only entity in 
  
 // the mutate request that should have its status set. 
  
 Status 
  
 = 
  
 CampaignStatus 
 . 
 Paused 
 , 
  
 // AdvertisingChannelType must be SMART. 
  
 AdvertisingChannelType 
  
 = 
  
 AdvertisingChannelType 
 . 
 Smart 
 , 
  
 // AdvertisingChannelSubType must be SMART_CAMPAIGN. 
  
 AdvertisingChannelSubType 
  
 = 
  
 AdvertisingChannelSubType 
 . 
 SmartCampaign 
 , 
  
 // Assign the resource name with a temporary ID. 
  
 ResourceName 
  
 = 
  
 ResourceNames 
 . 
 Campaign 
 ( 
 customerId 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 ), 
  
 // Set the budget using the given budget resource name. 
  
 CampaignBudget 
  
 = 
  
 ResourceNames 
 . 
 CampaignBudget 
 ( 
 customerId 
 , 
  
 BUDGET_TEMPORARY_ID 
 ), 
  
 // Declare whether or not this campaign contains political ads targeting the EU. 
  
 ContainsEuPoliticalAdvertising 
  
 = 
  
 EuPoliticalAdvertisingStatus 
 . 
 DoesNotContainEuPoliticalAdvertising 
 , 
  
 } 
  
 } 
  
 }; 
 } 
  
  

PHP

 private static function createSmartCampaignOperation(int $customerId): MutateOperation 
 { 
 // Creates the campaign object. 
 $campaign = new Campaign([ 
 'name' => "Smart campaign #" . Helper::getPrintableDatetime(), 
 // Sets the campaign status as PAUSED. The campaign is the only entity in the mutate 
 // request that should have its' status set. 
 'status' => CampaignStatus::PAUSED, 
 // The advertising channel type is required to be SMART. 
 'advertising_channel_type' => AdvertisingChannelType::SMART, 
 // The advertising channel sub type is required to be SMART_CAMPAIGN. 
 'advertising_channel_sub_type' => AdvertisingChannelSubType::SMART_CAMPAIGN, 
 // Assigns the resource name with a temporary ID. 
 'resource_name' = 
> ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID), 
 // Sets the budget using the given budget resource name. 
 'campaign_budget' = 
> ResourceNames::forCampaignBudget($customerId, self::BUDGET_TEMPORARY_ID), 
 // Declare whether or not this campaign serves political ads targeting the EU. 
 'contains_eu_political_advertising' = 
> EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 ]); 
 // Creates the MutateOperation that creates the campaign. 
 return new MutateOperation([ 
 'campaign_operation' => new CampaignOperation(['create' => $campaign]) 
 ]); 
 }  
 

Python

 def 
  
 create_smart_campaign_operation 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 ) 
 - 
> MutateOperation 
 : 
  
 """Creates a MutateOperation that creates a new Smart campaign. 
 A temporary ID will be assigned to this campaign so that it can 
 be referenced by other objects being created in the same Mutate request. 
 Args: 
 client: an initialized GoogleAdsClient instance. 
 customer_id: a client customer ID. 
 Returns: 
 a MutateOperation that creates a campaign. 
 """ 
 mutate_operation 
 : 
 MutateOperation 
 = 
 client 
 . 
 get_type 
 ( 
 "MutateOperation" 
 ) 
 campaign_operation 
 : 
 CampaignOperation 
 = 
 mutate_operation 
 . 
 campaign_operation 
 campaign 
 : 
 Campaign 
 = 
 campaign_operation 
 . 
 create 
 campaign 
 . 
 name 
 = 
 f 
 "Smart campaign # 
 { 
 uuid4 
 () 
 } 
 " 
 # Set the campaign status as PAUSED. The campaign is the only entity in 
 # the mutate request that should have its' status set. 
 campaign 
 . 
 status 
 = 
 client 
 . 
 enums 
 . 
 CampaignStatusEnum 
 . 
 PAUSED 
 # Campaign.AdvertisingChannelType is required to be SMART. 
 campaign 
 . 
 advertising_channel_type 
 = 
 ( 
 client 
 . 
 enums 
 . 
 AdvertisingChannelTypeEnum 
 . 
 SMART 
 ) 
 # Campaign.AdvertisingChannelSubType is required to be SMART_CAMPAIGN. 
 campaign 
 . 
 advertising_channel_sub_type 
 = 
 ( 
 client 
 . 
 enums 
 . 
 AdvertisingChannelSubTypeEnum 
 . 
 SMART_CAMPAIGN 
 ) 
 # Assign the resource name with a temporary ID. 
 campaign 
 . 
 resource_name 
 = 
 client 
 . 
 get_service 
 ( 
 "CampaignService" 
 ) 
 . 
 campaign_path 
 ( 
 customer_id 
 , 
 _SMART_CAMPAIGN_TEMPORARY_ID 
 ) 
 # Set the budget using the given budget resource name. 
 campaign 
 . 
 campaign_budget 
 = 
 client 
 . 
 get_service 
 ( 
 "CampaignBudgetService" 
 ) 
 . 
 campaign_budget_path 
 ( 
 customer_id 
 , 
 _BUDGET_TEMPORARY_ID 
 ) 
 # Declare whether or not this campaign serves political ads targeting the 
 # EU. Valid values are: 
 #   CONTAINS_EU_POLITICAL_ADVERTISING 
 #   DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 campaign 
 . 
 contains_eu_political_advertising 
 = 
 ( 
 client 
 . 
 enums 
 . 
 EuPoliticalAdvertisingStatusEnum 
 . 
 DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 ) 
 return 
 mutate_operation  
 
 . 
 py 

Ruby

 # Creates a mutate_operation that creates a new Smart campaign. 
 # A temporary ID will be assigned to this campaign so that it can 
 # be referenced by other objects being created in the same mutate request. 
 def 
  
 create_smart_campaign_operation 
 ( 
  
 client 
 , 
  
 customer_id 
 ) 
  
 mutate_operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 mutate 
  
 do 
  
 | 
 m 
 | 
  
 m 
 . 
 campaign_operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 create_resource 
 . 
 campaign 
  
 do 
  
 | 
 c 
 | 
  
 c 
 . 
 name 
  
 = 
  
 "Smart campaign # 
 #{ 
 ( 
 Time 
 . 
 new 
 . 
 to_f 
  
 * 
  
 1000 
 ) 
 . 
 to_i 
 } 
 " 
  
 # Sets the campaign status as PAUSED. The campaign is the only entity in 
  
 # the mutate request that should have its' status set. 
  
 c 
 . 
 status 
  
 = 
  
 :PAUSED 
  
 # campaign.advertising_channel_type is required to be SMART. 
  
 c 
 . 
 advertising_channel_type 
  
 = 
  
 :SMART 
  
 # campaign.advertising_channel_sub_type is required to be SMART_CAMPAIGN. 
  
 c 
 . 
 advertising_channel_sub_type 
  
 = 
  
 :SMART_CAMPAIGN 
  
 # Assigns the resource name with a temporary ID. 
  
 c 
 . 
 resource_name 
  
 = 
  
 client 
 . 
 path 
 . 
 campaign 
 ( 
 customer_id 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 ) 
  
 c 
 . 
 campaign_budget 
  
 = 
  
 client 
 . 
 path 
 . 
 campaign_budget 
 ( 
 customer_id 
 , 
  
 BUDGET_TEMPORARY_ID 
 ) 
  
 # Declare whether or not this campaign serves political ads targeting the EU. 
  
 # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and 
  
 # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. 
  
 c 
 . 
 contains_eu_political_advertising 
  
 = 
  
 :DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
  
 end 
  
 end 
  
 mutate_operation 
 end  
 
 . 
 rb 
  

Perl

 # Creates a MutateOperation that creates a new Smart campaign. 
 # A temporary ID will be assigned to this campaign so that it can be referenced 
 # by other objects being created in the same Mutate request. 
 sub 
  
 _create_smart_campaign_operation 
  
 { 
  
 my 
  
 ( 
 $customer_id 
 ) 
  
 = 
  
 @_ 
 ; 
  
 return 
  
 Google::Ads::GoogleAds::V21::Services::GoogleAdsService:: 
 MutateOperation 
 - 
>  
 new 
 ({ 
  
 campaignOperation 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Services::CampaignService:: 
 CampaignOperation 
  
 - 
> new 
 ({ 
  
 create 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Resources:: 
 Campaign 
 - 
> new 
 ({ 
  
 name 
  
 = 
>  
 "Smart campaign #" 
  
 . 
  
 uniqid 
 (), 
  
 # Set the campaign status as PAUSED. The campaign is the only 
  
 # entity in the mutate request that should have its status set. 
  
 status 
  
 = 
>  
 PAUSED 
 , 
  
 # AdvertisingChannelType must be SMART. 
  
 advertisingChannelType 
  
 = 
>  
 SMART 
 , 
  
 # AdvertisingChannelSubType must be SMART_CAMPAIGN. 
  
 advertisingChannelSubType 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Enums::AdvertisingChannelSubTypeEnum:: 
 SMART_CAMPAIGN 
 , 
  
 # Assign the resource name with a temporary ID. 
  
 resourceName 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Utils::ResourceNames:: 
 campaign 
 ( 
  
 $customer_id 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
  
 ), 
  
 # Declare whether or not this campaign serves political ads targeting the EU. 
  
 # Valid values are CONTAINS_EU_POLITICAL_ADVERTISING and 
  
 # DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING. 
  
 containsEuPoliticalAdvertising 
  
 = 
>  
 DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 , 
  
 # Set the budget using the given budget resource name. 
  
 campaignBudget 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Utils::ResourceNames:: 
 campaign_budget 
 ( 
  
 $customer_id 
 , 
  
 BUDGET_TEMPORARY_ID 
  
 )})})}); 
 } 
  
  

Create a Smart campaign setting

The SmartCampaignSetting resource is only used for configuring Smart campaigns. This resource cannot be created unless a Smart campaign already exists that it can reference. Smart campaign settings are unique for this reason; you can think of them as an extension of the main Campaign resource.

Because a Smart campaign setting is so closely tied to a campaign, it cannot be created using a create operation. It must be created in an update operation instead.

Unlike resources such as AdGroup objects, which have a campaign field that specifies what campaign they belong to, Smart campaign settings must have their resource names updated directly using the same ID as their campaign. When you create a new Smart campaign setting, it is similar to using a separate resource to update an existing campaign.

Key requirements for Smart campaign settings:

  • There must be an existing Campaign that it can reference.
  • The relationship to its Campaign is defined in its resource_name , not a campaign field.
  • You must set either business_profile_location , or final_url and business_name together.
  • You must add an update_mask to the update operation, even when using it to create a new Smart campaign setting.
  • All Smart campaigns must have a landing page, which can be set using a final_url , or by opting in to an automatic landing page , which creates a landing page for your campaign using information from the given business_profile_location .

Java

 private 
  
 MutateOperation 
  
 createSmartCampaignSettingOperation 
 ( 
  
 long 
  
 customerId 
 , 
  
 String 
  
 businessProfileLocation 
 , 
  
 String 
  
 businessName 
 ) 
  
 { 
  
 MutateOperation 
 . 
 Builder 
  
 builder 
  
 = 
  
 MutateOperation 
 . 
 newBuilder 
 (); 
  
 SmartCampaignSetting 
 . 
 Builder 
  
 settingBuilder 
  
 = 
  
 builder 
  
 . 
 getSmartCampaignSettingOperationBuilder 
 () 
  
 . 
 getUpdateBuilder 
 () 
  
 // Sets a temporary ID in the campaign setting's resource name to associate it with 
  
 // the campaign created in the previous step. 
  
 . 
 setResourceName 
 ( 
  
 ResourceNames 
 . 
 smartCampaignSetting 
 ( 
 customerId 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 )); 
  
 // Configures the SmartCampaignSetting using many of the same details used to 
  
 // generate a budget suggestion. 
  
 settingBuilder 
  
 . 
 setFinalUrl 
 ( 
 LANDING_PAGE_URL 
 ) 
  
 . 
 setAdvertisingLanguageCode 
 ( 
 LANGUAGE_CODE 
 ) 
  
 . 
 getPhoneNumberBuilder 
 () 
  
 . 
 setCountryCode 
 ( 
 COUNTRY_CODE 
 ) 
  
 . 
 setPhoneNumber 
 ( 
 PHONE_NUMBER 
 ); 
  
 // It's required that either a business profile location resource name or a business name is 
  
 // added to the SmartCampaignSetting. 
  
 if 
  
 ( 
 businessProfileLocation 
  
 != 
  
 null 
 ) 
  
 { 
  
 settingBuilder 
 . 
 setBusinessProfileLocation 
 ( 
 businessProfileLocation 
 ); 
  
 } 
  
 else 
  
 { 
  
 settingBuilder 
 . 
 setBusinessName 
 ( 
 businessName 
 ); 
  
 } 
  
 builder 
  
 . 
 getSmartCampaignSettingOperationBuilder 
 () 
  
 . 
 setUpdateMask 
 ( 
 FieldMasks 
 . 
 allSetFieldsOf 
 ( 
 settingBuilder 
 . 
 build 
 ())); 
  
 return 
  
 builder 
 . 
 build 
 (); 
 } 
  
  

C#

 /// <summary> 
 /// Creates a MutateOperation to create a new SmartCampaignSetting. SmartCampaignSettings 
 /// are unique in that they only support UPDATE operations, which are used to update and 
 /// create them. Below we will use a temporary ID in the resource name to associate it with 
 /// the campaign created in the previous step. 
 /// </summary> 
 /// <param name="customerId">The Google Ads customer ID.</param> 
 /// <param name="businessProfileLocation">The identifier of a Business Profile location.</param> 
 /// <param name="businessName">The name of a Business Profile business.</param> 
 /// <returns>A MutateOperation that creates a SmartCampaignSetting.</returns> 
 private 
  
 MutateOperation 
  
 CreateSmartCampaignSettingOperation 
 ( 
 long 
  
 customerId 
 , 
  
 string 
  
 businessProfileLocation 
 , 
  
 string 
  
 businessName 
 ) 
 { 
  
 SmartCampaignSetting 
  
 smartCampaignSetting 
  
 = 
  
 new 
  
 SmartCampaignSetting 
  
 { 
  
 // Set a temporary ID in the campaign setting's resource name to associate it with 
  
 // the campaign created in the previous step. 
  
 ResourceName 
  
 = 
  
 ResourceNames 
 . 
 SmartCampaignSetting 
 ( 
 customerId 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 ), 
  
 // Below we configure the SmartCampaignSetting using many of the same details used 
  
 // to generate a budget suggestion. 
  
 PhoneNumber 
  
 = 
  
 new 
  
 SmartCampaignSetting 
 . 
 Types 
 . 
 PhoneNumber 
  
 { 
  
 CountryCode 
  
 = 
  
 COUNTRY_CODE 
 , 
  
 PhoneNumber_ 
  
 = 
  
 PHONE_NUMBER 
  
 }, 
  
 FinalUrl 
  
 = 
  
 LANDING_PAGE_URL 
 , 
  
 AdvertisingLanguageCode 
  
 = 
  
 LANGUAGE_CODE 
  
 }; 
  
 // Either a business profile location or a business name must be added to the 
  
 // SmartCampaignSetting. 
  
 if 
  
 ( 
 ! 
 string 
 . 
 IsNullOrEmpty 
 ( 
 businessProfileLocation 
 )) 
  
 { 
  
 // Transform Google Business Location ID to a compatible format before 
  
 // passing it onto the API. 
  
 smartCampaignSetting 
 . 
 BusinessProfileLocation 
  
 = 
  
 businessProfileLocation 
 ; 
  
 } 
  
 else 
  
 { 
  
 smartCampaignSetting 
 . 
 BusinessName 
  
 = 
  
 businessName 
 ; 
  
 } 
  
 return 
  
 new 
  
 MutateOperation 
  
 { 
  
 SmartCampaignSettingOperation 
  
 = 
  
 new 
  
 SmartCampaignSettingOperation 
  
 { 
  
 Update 
  
 = 
  
 smartCampaignSetting 
 , 
  
 // Set the update mask on the operation. This is required since the smart 
  
 // campaign setting is created in an UPDATE operation. Here the update mask 
  
 // will be a list of all the fields that were set on the SmartCampaignSetting. 
  
 UpdateMask 
  
 = 
  
 FieldMasks 
 . 
 AllSetFieldsOf 
 ( 
 smartCampaignSetting 
 ) 
  
 } 
  
 }; 
 } 
  
  

PHP

 private static function createSmartCampaignSettingOperation( 
 int $customerId, 
 ?string $businessProfileLocationResourceName, 
 ?string $businessName 
 ): MutateOperation { 
 // Creates the smart campaign setting object. 
 $smartCampaignSetting = new SmartCampaignSetting([ 
 // Sets a temporary ID in the campaign setting's resource name to associate it with 
 // the campaign created in the previous step. 
 'resource_name' => ResourceNames::forSmartCampaignSetting( 
 $customerId, 
 self::SMART_CAMPAIGN_TEMPORARY_ID 
 ), 
 // Below we configure the SmartCampaignSetting using many of the same details used to 
 // generate a budget suggestion. 
 'phone_number' => new PhoneNumber([ 
 'country_code' => self::COUNTRY_CODE, 
 'phone_number' => self::PHONE_NUMBER 
 ]), 
 'final_url' => self::LANDING_PAGE_URL, 
 'advertising_language_code' => self::LANGUAGE_CODE, 
 ]); 
 // It's required that either a business profile location resource name or a business name is 
 // added to the SmartCampaignSetting. 
 if ($businessProfileLocationResourceName) { 
 $smartCampaignSetting->setBusinessProfileLocation($businessProfileLocationResourceName); 
 } else { 
 $smartCampaignSetting->setBusinessName($businessName); 
 } 
 // Creates the MutateOperation that creates the smart campaign setting with an update. 
 return new MutateOperation([ 
 'smart_campaign_setting_operation' => new SmartCampaignSettingOperation([ 
 'update' => $smartCampaignSetting, 
 // Sets the update mask on the operation. This is required since the smart campaign 
 // setting is created in an UPDATE operation. Here the update mask will be a list 
 // of all the fields that were set on the SmartCampaignSetting. 
 'update_mask' => FieldMasks::allSetFieldsOf($smartCampaignSetting) 
 ]) 
 ]); 
 }  
 

Python

 def 
  
 create_smart_campaign_setting_operation 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 , 
 business_profile_location 
 : 
 Optional 
 [ 
 str 
 ], 
 business_name 
 : 
 Optional 
 [ 
 str 
 ], 
 ) 
 - 
> MutateOperation 
 : 
  
 """Creates a MutateOperation to create a new SmartCampaignSetting. 
 SmartCampaignSettings are unique in that they only support UPDATE 
 operations, which are used to update and create them. Below we will 
 use a temporary ID in the resource name to associate it with the 
 campaign created in the previous step. 
 Args: 
 client: an initialized GoogleAdsClient instance. 
 customer_id: a client customer ID. 
 business_profile_location: the resource name of a Business Profile 
 location. 
 business_name: the name of a Business Profile. 
 Returns: 
 a MutateOperation that creates a SmartCampaignSetting. 
 """ 
 mutate_operation 
 : 
 MutateOperation 
 = 
 client 
 . 
 get_type 
 ( 
 "MutateOperation" 
 ) 
 smart_campaign_setting_operation 
 : 
 SmartCampaignSettingOperation 
 = 
 ( 
 mutate_operation 
 . 
 smart_campaign_setting_operation 
 ) 
 smart_campaign_setting 
 : 
 SmartCampaignSetting 
 = 
 ( 
 smart_campaign_setting_operation 
 . 
 update 
 ) 
 # Set a temporary ID in the campaign setting's resource name to associate it 
 # with the campaign created in the previous step. 
 smart_campaign_setting 
 . 
 resource_name 
 = 
 client 
 . 
 get_service 
 ( 
 "SmartCampaignSettingService" 
 ) 
 . 
 smart_campaign_setting_path 
 ( 
 customer_id 
 , 
 _SMART_CAMPAIGN_TEMPORARY_ID 
 ) 
 # Below we configure the SmartCampaignSetting using many of the same 
 # details used to generate a budget suggestion. 
 smart_campaign_setting 
 . 
 phone_number 
 . 
 country_code 
 = 
 _COUNTRY_CODE 
 smart_campaign_setting 
 . 
 phone_number 
 . 
 phone_number 
 = 
 _PHONE_NUMBER 
 smart_campaign_setting 
 . 
 final_url 
 = 
 _LANDING_PAGE_URL 
 smart_campaign_setting 
 . 
 advertising_language_code 
 = 
 _LANGUAGE_CODE 
 # Set either of the business_profile_location or business_name, depending on 
 # whichever is provided. 
 if 
 business_profile_location 
 : 
 smart_campaign_setting 
 . 
 business_profile_location 
 = 
 ( 
 business_profile_location 
 ) 
 else 
 : 
 smart_campaign_setting 
 . 
 business_name 
 = 
 business_name 
 # Set the update mask on the operation. This is required since the smart 
 # campaign setting is created in an UPDATE operation. Here the update 
 # mask will be a list of all the fields that were set on the 
 # SmartCampaignSetting. 
 client 
 . 
 copy_from 
 ( 
 smart_campaign_setting_operation 
 . 
 update_mask 
 , 
 protobuf_helpers 
 . 
 field_mask 
 ( 
 None 
 , 
 smart_campaign_setting 
 . 
 _pb 
 ), 
 ) 
 return 
 mutate_operation  
 
 . 
 py 

Ruby

 # Creates a mutate_operation to create a new smart_campaign_setting. 
 # smart_campaign_settings are unique in that they only support UPDATE 
 # operations, which are used to update and create them. Below we will 
 # use a temporary ID in the resource name to associate it with the 
 # campaign created in the previous step. 
 def 
  
 create_smart_campaign_setting_operation 
 ( 
  
 client 
 , 
  
 customer_id 
 , 
  
 business_profile_location 
 , 
  
 business_name 
 ) 
  
 mutate_operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 mutate 
  
 do 
  
 | 
 m 
 | 
  
 m 
 . 
 smart_campaign_setting_operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 update_resource 
 . 
 smart_campaign_setting 
 ( 
  
 # Sets a temporary ID in the campaign setting's resource name to 
  
 # associate it with the campaign created in the previous step. 
  
 client 
 . 
 path 
 . 
 smart_campaign_setting 
 ( 
  
 customer_id 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
 ) 
  
 ) 
  
 do 
  
 | 
 scs 
 | 
  
 # Below we configure the smart_campaign_setting using many of the same 
  
 # details used to generate a budget suggestion. 
  
 scs 
 . 
 phone_number 
  
 = 
  
 client 
 . 
 resource 
 . 
 phone_number 
  
 do 
  
 | 
 p 
 | 
  
 p 
 . 
 country_code 
  
 = 
  
 COUNTRY_CODE 
  
 p 
 . 
 phone_number 
  
 = 
  
 PHONE_NUMBER 
  
 end 
  
 scs 
 . 
 final_url 
  
 = 
  
 LANDING_PAGE_URL 
  
 scs 
 . 
 advertising_language_code 
  
 = 
  
 LANGUAGE_CODE 
  
 # It's required that either a business location ID or a business name is 
  
 # added to the smart_campaign_setting. 
  
 if 
  
 business_profile_location 
  
 scs 
 . 
 business_profile_location 
  
 = 
  
 business_profile_location 
  
 else 
  
 scs 
 . 
 business_name 
  
 = 
  
 business_name 
  
 end 
  
 end 
  
 end 
  
 mutate_operation 
 end  
 
 . 
 rb 
  

Perl

 # Creates a MutateOperation to create a new SmartCampaignSetting. 
 # SmartCampaignSettings are unique in that they only support UPDATE operations, 
 # which are used to update and create them. Below we will use a temporary ID in 
 # the resource name to associate it with the campaign created in the previous step. 
 sub 
  
 _create_smart_campaign_setting_operation 
  
 { 
  
 my 
  
 ( 
 $customer_id 
 , 
  
 $business_profile_location 
 , 
  
 $business_name 
 ) 
  
 = 
  
 @_ 
 ; 
  
 my 
  
 $smart_campaign_setting 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 SmartCampaignSetting 
 - 
> new 
 ({ 
  
 # Set a temporary ID in the campaign setting's resource name to associate it 
  
 # with the campaign created in the previous step. 
  
 resourceName 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Utils::ResourceNames:: 
 smart_campaign_setting 
 ( 
  
 $customer_id 
 , 
  
 SMART_CAMPAIGN_TEMPORARY_ID 
  
 ), 
  
 # Below we configure the SmartCampaignSetting using many of the same 
  
 # details used to generate a budget suggestion. 
  
 phoneNumber 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Resources:: 
 PhoneNumber 
 - 
> new 
 ({ 
  
 countryCode 
  
 = 
>  
 COUNTRY_CODE 
 , 
  
 phoneNumber 
  
 = 
>  
 PHONE_NUMBER 
  
 } 
  
 ), 
  
 finalUrl 
  
 = 
>  
 LANDING_PAGE_URL 
 , 
  
 advertisingLanguageCode 
  
 = 
>  
 LANGUAGE_CODE 
  
 }); 
  
 # It's required that either a business profile location or a business name is 
  
 # added to the SmartCampaignSetting. 
  
 if 
  
 ( 
 defined 
  
 $business_profile_location 
 ) 
  
 { 
  
 $smart_campaign_setting 
 - 
> { 
 businessProfileLocation 
 } 
  
 = 
  
 $business_profile_location 
 ; 
  
 } 
  
 else 
  
 { 
  
 $smart_campaign_setting 
 - 
> { 
 businessName 
 } 
  
 = 
  
 $business_name 
 ; 
  
 } 
  
 return 
  
 Google::Ads::GoogleAds::V21::Services::GoogleAdsService:: 
 MutateOperation 
 - 
>  
 new 
 ({ 
  
 smartCampaignSettingOperation 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Services::SmartCampaignSettingService:: 
 SmartCampaignSettingOperation 
  
 - 
> new 
 ({ 
  
 update 
  
 = 
>  
 $smart_campaign_setting 
 , 
  
 # Set the update mask on the operation. This is required since the 
  
 # smart campaign setting is created in an UPDATE operation. Here the 
  
 # update mask will be a list of all the fields that were set on the 
  
 # SmartCampaignSetting. 
  
 updateMask 
  
 = 
>  
 all_set_fields_of 
 ( 
 $smart_campaign_setting 
 )})}); 
 } 
  
  

Landing pages

Your Smart campaign must have a landing page to direct viewers to. You can either provide a final_url to use an existing website, or have a landing page created for you by opting in to automated landing pages. The new landing page uses information from your Business Profile.

To have a landing page generated for your campaign, you must provide a business_profile_location identifier, and set the ad_optimized_business_profile_setting field to an empty AdOptimizedBusinessProfileSetting instance. Here's an example of how to do that:

Java

  SmartCampaignSetting 
  
 smartCampaignSetting 
  
 = 
  
 SmartCampaignSetting 
 . 
 newBuilder 
 () 
  
 . 
 setBusinessProfileLocation 
 ( 
 businessProfileLocation 
 ) 
  
 // Sets the ad optimized business profile setting to an empty 
  
 // instance of AdOptimizedBusinessProfileSetting. 
  
 . 
 setAdOptimizedBusinessProfileSetting 
 ( 
  
 AdOptimizedBusinessProfileSetting 
 . 
 newBuilder 
 (). 
 build 
 ()) 
  
 . 
 build 
 (); 
 

C#

  SmartCampaignSetting 
  
 smartCampaignSetting 
  
 = 
  
 new 
  
 SmartCampaignSetting 
 () 
 { 
  
 BusinessProfileLocation 
  
 = 
  
 businessProfileLocation 
 , 
  
 /// Sets the ad optimized business profile setting to an empty 
  
 /// instance of AdOptimizedBusinessProfileSetting. 
  
 AdOptimizedBusinessProfileSetting 
  
 = 
  
 new 
  
 SmartCampaignSetting 
 . 
 Types 
 . 
 AdOptimizedBusinessProfileSetting 
 () 
 }; 
 

PHP

  $smartCampaignSetting = new SmartCampaignSetting([ 
 'business_profile_location' => business_profile_location, 
 // Sets the ad optimized business profile setting to an empty instance 
 // of AdOptimizedBusinessProfileSetting. 
 'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting(), 
 ]); 
 

Python

  smart_campaign_setting 
 = 
 client 
 . 
 get_type 
 ( 
 "SmartCampaignSetting" 
 ) 
 smart_campaign_setting 
 . 
 business_profile_location 
 = 
 business_profile_location 
 # Sets the ad optimized business profile setting to an empty instance of 
 # AdOptimizedBusinessProfileSetting. 
 client 
 . 
 copy_from 
 ( 
 smart_campaign_setting 
 . 
 ad_optimized_business_profile_setting 
 , 
 client 
 . 
 get_type 
 ( 
 "AdOptimizedBusinessProfileSetting" 
 ) 
 ) 
 

Ruby

  smart_campaign_setting 
  
 = 
  
 client 
 . 
 resource 
 . 
 smart_campaign_setting 
  
 do 
  
 | 
 s 
 | 
  
 s 
 . 
 business_profile_location 
  
 = 
  
 business_profile_location 
  
 # Sets the ad optimized business profile setting to an empty instance of 
  
 # AdOptimizedBusinessProfileSetting. 
  
 s 
 . 
 ad_optimized_business_profile_setting 
  
 = 
  
 client 
 . 
 resource 
 . 
 ad_optimized_business_profile_setting 
 end 
 

Perl

  my 
  
 $campaign 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 Campaign 
 - 
> new 
 ({ 
  
 businessProfileLocation 
  
 = 
>  
 $business_profile_location 
 , 
  
 # Sets the ad optimized business profile setting to an empty instance of 
  
 # AdOptimizedBusinessProfileSetting. 
  
 adOptimizedBusinessProfileSetting 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Common:: 
 AdOptimizedBusinessProfileSetting 
 - 
> new 
 () 
 }); 
 

Additionally, the include_lead_form field gives you the ability to specify whether the generated landing page should include a lead form, enabling prospective customers to contact you directly by filling out a form. Here's an example of how to enable it:

Java

  SmartCampaignSetting 
  
 smartCampaignSetting 
  
 = 
  
 SmartCampaignSetting 
 . 
 newBuilder 
 () 
  
 . 
 setBusinessProfileLocation 
 ( 
 businessProfileLocation 
 ) 
  
 // Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to true. 
  
 . 
 setAdOptimizedBusinessProfileSetting 
 ( 
  
 AdOptimizedBusinessProfileSetting 
 . 
 newBuilder 
 (). 
 setIncludeLeadForm 
 ( 
 true 
 ). 
 build 
 ()) 
  
 . 
 build 
 (); 
 

C#

  SmartCampaignSetting 
  
 smartCampaignSetting 
  
 = 
  
 new 
  
 SmartCampaignSetting 
 () 
 { 
  
 BusinessProfileLocation 
  
 = 
  
 businessProfileLocation 
 , 
  
 /// Sets the AdOptimizedBusinessProfileSetting.include_lead_form 
  
 /// field to true. 
  
 AdOptimizedBusinessProfileSetting 
  
 = 
  
 new 
  
 SmartCampaignSetting 
 . 
 Types 
 . 
 AdOptimizedBusinessProfileSetting 
  
 { 
  
 IncludeLeadForm 
  
 = 
  
 true 
  
 } 
 }; 
 

PHP

  $smartCampaignSetting = new SmartCampaignSetting([ 
 'business_profile_location' => business_profile_location, 
 // Sets the AdOptimizedBusinessProfileSetting.include_lead_form field 
 // to true. 
 'ad_optimized_business_profile_setting' => new AdOptimizedBusinessProfileSetting([ 
 'include_lead_form' => true 
 ]), 
 ]); 
 

Python

  smart_campaign_setting 
 = 
 client 
 . 
 get_type 
 ( 
 "SmartCampaignSetting" 
 ) 
 smart_campaign_setting 
 . 
 business_profile_location 
 = 
 business_profile_location 
 # Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to 
 # true. 
 smart_campaign_setting 
 . 
 ad_optimized_business_profile_setting 
 . 
 include_lead_form 
 = 
 True 
 

Ruby

  smart_campaign_setting 
  
 = 
  
 client 
 . 
 resource 
 . 
 smart_campaign_setting 
  
 do 
  
 | 
 s 
 | 
  
 s 
 . 
 business_profile_location 
  
 = 
  
 business_profile_location 
  
 # Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to 
  
 # true. 
  
 s 
 . 
 ad_optimized_business_profile_setting 
  
 = 
  
 client 
 . 
 resource 
 . 
 ad_optimized_business_profile_setting 
  
 do 
  
 | 
 a 
 | 
  
 a 
 . 
 include_lead_form 
  
 = 
  
 true 
  
 end 
 end 
 

Perl

  my 
  
 $campaign 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 Campaign 
 - 
> new 
 ({ 
  
 businessProfileLocation 
  
 = 
>  
 $business_profile_location 
 , 
  
 # Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to 
  
 # true. 
  
 adOptimizedBusinessProfileSetting 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Common:: 
 AdOptimizedBusinessProfileSetting 
 - 
> new 
 ({ 
  
 includeLeadForm 
  
 = 
>  
 "true" 
  
 }) 
 }); 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: