Assign or update a bidding strategy

  • A bidding strategy for Hotel ads is assigned at the individual campaign level using the campaign_bidding_strategy field in the Google Ads API.

  • For CPC% and Manual CPC strategies, while assigned at the campaign level, bid amounts are set at the ad group level.

  • Available bidding strategies for Hotel ads include commission (per conversion or per stay), percent CPC, and manual CPC.

  • When assigning a bidding strategy as part of creating a new Hotel campaign, do not set the bidding_strategy or bidding_strategy_type fields.

  • To update a campaign's bidding strategy, you use a CampaignOperation.update and set the fields of the Campaign accordingly.

For Hotel ads, you can assign a bidding strategy for an individual campaign.

Details about choosing bidding strategies for Hotel ads can be found in the Bidding overview for Hotel ads. After becoming familiar with bidding strategies, you can use the Google Ads API to assign and update Hotel campaign bidding strategies.

Assign a bidding strategy

To assign a strategy as part of creating a new Hotel campaign, follow these steps:

  1. Choose a campaign_bidding_strategy. The following oneof strategies on Campaign can be used for Hotel ads:

    To enable Enhanced CPC for a Hotel campaign, set manual_cpc.enhanced_cpc_enabled or percent_cpc.enhanced_cpc_enabled to true.

    The commission strategy is no longer available for Hotel campaigns. For details, see Bidding strategy types.

  2. Determine the field name-value pair that you want to use for the chosen strategy.

  3. Set the chosen strategy field on the Campaign object when creating the new campaign.

This example demonstrates how to set a percent_cpc bidding strategy when creating a new campaign:

Java

// Creates the campaign.
Campaign campaign =
    Campaign.newBuilder()
        .setName("Interplanetary Cruise #" + getPrintableDateTime())
        // Configures settings related to hotel campaigns including advertising channel type
        // and hotel setting info.
        .setAdvertisingChannelType(AdvertisingChannelType.HOTEL)
        .setHotelSetting(hotelSettingInfo)
        // Recommendation: Sets the campaign to PAUSED when creating it to prevent
        // the ads from immediately serving. Set to ENABLED once you've added
        // targeting and the ads are ready to serve
        .setStatus(CampaignStatus.PAUSED)
        // Sets the bidding strategy to Percent CPC. Only Manual CPC and Percent CPC can be used
        // for hotel campaigns.
        .setPercentCpc(
            PercentCpc.newBuilder().setCpcBidCeilingMicros(cpcBidCeilingMicroAmount).build())
        // Sets the budget.
        .setCampaignBudget(budgetResourceName)
        // Adds the networkSettings configured above.
        .setNetworkSettings(networkSettings)
        // Declares whether this campaign serves political ads targeting the EU.
        .setContainsEuPoliticalAdvertising(DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING)
        .build();
      

C#

// Create a campaign.
Campaign campaign = new Campaign()
{
    Name = "Interplanetary Cruise Campaign #" + ExampleUtilities.GetRandomString(),

    // Configure settings related to hotel campaigns including advertising channel type
    // and hotel setting info.
    AdvertisingChannelType = AdvertisingChannelType.Hotel,
    HotelSetting = new HotelSettingInfo()
    {
        HotelCenterId = hotelCenterAccountId
    },

    // Recommendation: Set the campaign to PAUSED when creating it to prevent
    // the ads from immediately serving. Set to ENABLED once you've added
    // targeting and the ads are ready to serve.
    Status = CampaignStatus.Paused,

    // Sets the bidding strategy to PercentCpc. Only Manual CPC and Percent CPC can
    // be used for hotel campaigns.
    PercentCpc = new PercentCpc()
    {
        CpcBidCeilingMicros = cpcBidCeilingMicroAmount
    },

    // Set the budget.
    CampaignBudget = budgetResourceName,

    // Configure the campaign network options. Only Google Search is allowed for
    // hotel campaigns.
    NetworkSettings = new NetworkSettings()
    {
        TargetGoogleSearch = true
    },

    // Declare whether or not this campaign contains political ads targeting the EU.
    ContainsEuPoliticalAdvertising = EuPoliticalAdvertisingStatus.DoesNotContainEuPoliticalAdvertising,
};
      

PHP

// Creates a campaign.
$campaign = new Campaign(
    [
    'name' => 'Interplanetary Cruise Campaign #' . Helper::getPrintableDatetime(),
    // Configures settings related to hotel campaigns including advertising channel type
    // and hotel setting info.
    'advertising_channel_type' => AdvertisingChannelType::HOTEL,
    'hotel_setting' => new HotelSettingInfo(['hotel_center_id' => $hotelCenterAccountId]),
    // Recommendation: Set the campaign to PAUSED when creating it to prevent
    // the ads from immediately serving. Set to ENABLED once you've added
    // targeting and the ads are ready to serve.
    'status' => CampaignStatus::PAUSED,
    // Sets the bidding strategy to PercentCpc. Only Manual CPC and Percent CPC can be used
    // for hotel campaigns.
    'percent_cpc' => new PercentCpc(
        [
        'cpc_bid_ceiling_micros' => $cpcBidCeilingMicroAmount
        ]
    ),
    // Sets the budget.
    'campaign_budget' => $budgetResourceName,
    // Configures the campaign network options. Only Google Search is allowed for
    // hotel campaigns.
    'network_settings' => new NetworkSettings(
        [
        'target_google_search' => true,
        ]
    ),
    // Declare whether or not this campaign serves political ads targeting the EU.
    'contains_eu_political_advertising' =>
        EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING
    ]
);
      

Python

# Create campaign.
campaign_operation: CampaignOperation = client.get_type("CampaignOperation")
campaign: Campaign = campaign_operation.create
campaign.name = f"Interplanetary Cruise Campaign {uuid.uuid4()}"

# Configures settings related to hotel campaigns including advertising
# channel type and hotel setting info.
campaign.advertising_channel_type = (
    client.enums.AdvertisingChannelTypeEnum.HOTEL
)
campaign.hotel_setting.hotel_center_id = hotel_center_account_id

# Recommendation: Set the campaign to PAUSED when creating it to prevent the
# ads from immediately serving. Set to ENABLED once you've added targeting
# and the ads are ready to serve.
campaign.status = client.enums.CampaignStatusEnum.PAUSED

# Set the bidding strategy to PercentCpc. Only Manual CPC and Percent CPC
# can be used for hotel campaigns.
campaign.percent_cpc.cpc_bid_ceiling_micros = cpc_bid_ceiling_micro_amount

# Sets the budget.
campaign.campaign_budget = budget_resource_name

# Set the campaign network options. Only Google Search is allowed for hotel
# campaigns.
campaign.network_settings.target_google_search = True

# 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
)
      

Ruby

# Create a campaign.
campaign_operation = client.operation.create_resource.campaign do |c|
  c.name = generate_random_name_field("Interplanetary Cruise Campaign")

  # Configure settings related to hotel campaigns.
  c.advertising_channel_type = :HOTEL
  c.hotel_setting = client.resource.hotel_setting_info do |hsi|
    hsi.hotel_center_id = hotel_center_account_id
  end

  # Recommendation: Set the campaign to PAUSED when creating it to prevent the
  # ads from immediately serving. Set to ENABLED once you've added targeting and
  # the ads are ready to serve.
  c.status = :PAUSED

  # Set the bidding strategy to PercentCpc. Only Manual CPC and Percent CPC can
  # be used for hotel campaigns.
  c.percent_cpc = client.resource.percent_cpc do |pcpc|
    pcpc.cpc_bid_ceiling_micros = cpc_bid_ceiling_micro_amount
  end

  # Set the budget.
  c.campaign_budget = budget_resource

  # Configures the campaign network options. Only Google Search is allowed for
  # hotel campaigns.
  c.network_settings = client.resource.network_settings do |ns|
    ns.target_google_search = true
  end

  # 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
      

Perl

# Create a hotel campaign.
my $campaign = Google::Ads::GoogleAds::V25::Resources::Campaign->new({
    name => "Interplanetary Cruise Campaign #" . uniqid(),
    # Configure settings related to hotel campaigns including advertising
    # channel type and hotel setting info.
    advertisingChannelType => HOTEL,
    hotelSetting           =>
      Google::Ads::GoogleAds::V25::Resources::HotelSettingInfo->new({
        hotelCenterId => $hotel_center_account_id
      }
      ),
    # Recommendation: Set the campaign to PAUSED when creating it to prevent
    # the ads from immediately serving. Set to ENABLED once you've added
    # targeting and the ads are ready to serve.
    status => Google::Ads::GoogleAds::V25::Enums::CampaignStatusEnum::PAUSED,
    # Set the bidding strategy to PercentCpc. Only Manual CPC and Percent CPC
    # can be used for hotel campaigns.
    percentCpc => Google::Ads::GoogleAds::V25::Common::PercentCpc->new(
      {cpcBidCeilingMicros => $cpc_bid_ceiling_micro_amount}
    ),
    # 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.
    campaignBudget => $budget_resource_name,
    # Configure the campaign network options. Only Google Search is allowed for
    # hotel campaigns.
    networkSettings =>
      Google::Ads::GoogleAds::V25::Resources::NetworkSettings->new({
        targetGoogleSearch => "true"
      })});
      

curl

Update a bidding strategy

To update a campaign's bidding strategy, construct a CampaignOperation.update with a Campaign instance containing the updated strategy field (as described in Assign a bidding strategy) and an update_mask that includes the path of the strategy field you set (for example, percent_cpc or target_roas). Because the strategy fields belong to a single oneof, setting one of them clears the previously set strategy, so the same operation works when switching from one strategy type to another. For help constructing update masks, see the field mask utilities in your client library.