Create a Smart campaign and a Smart campaign setting

  • Smart campaigns rely on the SmartCampaignSetting resource for configurations not found in the primary Campaign resource.

  • Both the Smart campaign and its corresponding setting should ideally be created within the same mutate request using temporary resource names.

  • To create a Smart campaign, you must set advertising_channel_type to SMART, advertising_channel_sub_type to SMART_CAMPAIGN, and include a CampaignBudget.

  • Smart campaign settings are linked to a campaign via their resource_name and must be created or updated using an update operation with an update_mask.

  • Smart campaigns require a landing page, which can be a provided final_url or an automatically generated one based on a business_profile_location.

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 

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  

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::V22::Services::GoogleAdsService::MutateOperation->  new({  campaignOperation =>  Google::Ads::GoogleAds::V22::Services::CampaignService::CampaignOperation  ->new({  create => Google::Ads::GoogleAds::V22::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::V22::Enums::AdvertisingChannelSubTypeEnum::SMART_CAMPAIGN,  # Assign the resource name with a temporary ID.  resourceName =>  Google::Ads::GoogleAds::V22::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::V22::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 

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  

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::V22::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::V22::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::V22::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::V22::Services::GoogleAdsService::MutateOperation->  new({  smartCampaignSettingOperation =>  Google::Ads::GoogleAds::V22::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::V22::Resources::Campaign->new({  businessProfileLocation => $business_profile_location,  # Sets the ad optimized business profile setting to an empty instance of  # AdOptimizedBusinessProfileSetting.  adOptimizedBusinessProfileSetting =>  Google::Ads::GoogleAds::V22::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::V22::Resources::Campaign->new({  businessProfileLocation => $business_profile_location,  # Sets the AdOptimizedBusinessProfileSetting.include_lead_form field to  # true.  adOptimizedBusinessProfileSetting =>  Google::Ads::GoogleAds::V22::Common::AdOptimizedBusinessProfileSetting->new({  includeLeadForm => "true"  }) });