Create Seasonality Adjustments

Seasonality adjustments are an advanced tool that can be used to inform Smart Bidding of expected changes in conversion rates for upcoming future events. For more details about how seasonality adjustments work, refer to the seasonality adjustments help page .

Create seasonality adjustment programmatically using BiddingSeasonalityAdjustments .

Scope

BiddingSeasonalityAdjustments have a required scope that can be set to following values. Additional scope-specific configuration options are set according to which scope is used.

  • CAMPAIGN - The adjustment is applied to specific campaigns. Set the campaigns field to a list of campaign resource names to which this adjustment will apply.
    • The maximum number of campaigns per BiddingSeasonalityAdjustment is 2,000.
  • CHANNEL - The adjustment is applied to campaigns that belong to specific channel types. Set the advertising_channel_types field to a list of AdvertisingChannelTypes to which this adjustment will apply.

Devices

In addition to their scope, seasonality adjustments can be configured with an optional list of device types to which the adjustment will apply. If devices is set, the seasonality adjustment will only be applied to traffic from the specified device types. If not specified, all device types are included in the adjustment.

Dates, times, and the conversion rate modifier

Aside from the scope and optional devices, each seasonality adjustment has start_date_time and end_date_time and a conversion_rate_modifier . The date and times define the future interval that the adjustment applies to, and the modifier is the expected conversion rate multiplier to apply. The date times are in the account's timezone.

Example

The following example shows how to create a seasonality adjustment with CHANNEL scope. Commented out sections demonstrate how to specify campaigns if you were to instead set a CAMPAIGN scope.

Java

 BiddingSeasonalityAdjustment 
  
 seasonalityAdjustment 
  
 = 
  
 BiddingSeasonalityAdjustment 
 . 
 newBuilder 
 () 
  
 // A unique name is required for every seasonality adjustment. 
  
 . 
 setName 
 ( 
 "Seasonality adjustment #" 
  
 + 
  
 getPrintableDateTime 
 ()) 
  
 // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific 
  
 // advertising channel types. In this example, the conversionRateModifier will only 
  
 // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to 
  
 // specific campaigns. 
  
 . 
 setScope 
 ( 
 SeasonalityEventScope 
 . 
 CHANNEL 
 ) 
  
 . 
 addAdvertisingChannelTypes 
 ( 
 AdvertisingChannelType 
 . 
 SEARCH 
 ) 
  
 // If setting scope CAMPAIGN, add individual campaign resource name(s) according to 
  
 // the commented out line below. 
  
 // .addCampaigns("INSERT_CAMPAIGN_RESOURCE_NAME_HERE") 
  
 . 
 setStartDateTime 
 ( 
 startDateTime 
 ) 
  
 . 
 setEndDateTime 
 ( 
 endDateTime 
 ) 
  
 // The conversionRateModifier is the expected future conversion rate change. When this 
  
 // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed 
  
 // range is 0.1 to 10.0. 
  
 . 
 setConversionRateModifier 
 ( 
 conversionRateModifier 
 ) 
  
 . 
 build 
 (); 
 BiddingSeasonalityAdjustmentOperation 
  
 operation 
  
 = 
  
 BiddingSeasonalityAdjustmentOperation 
 . 
 newBuilder 
 () 
  
 . 
 setCreate 
 ( 
 seasonalityAdjustment 
 ) 
  
 . 
 build 
 (); 
 MutateBiddingSeasonalityAdjustmentsResponse 
  
 response 
  
 = 
  
 seasonalityAdjustmentServiceClient 
 . 
 mutateBiddingSeasonalityAdjustments 
 ( 
  
 customerId 
 . 
 toString 
 (), 
  
 ImmutableList 
 . 
 of 
 ( 
 operation 
 )); 
 System 
 . 
 out 
 . 
 printf 
 ( 
  
 "Added seasonality adjustment with resource name: %s%n" 
 , 
  
 response 
 . 
 getResults 
 ( 
 0 
 ). 
 getResourceName 
 ()); 
  
  

C#

 BiddingSeasonalityAdjustment 
  
 seasonalityAdjustment 
  
 = 
  
 new 
  
 BiddingSeasonalityAdjustment 
 () 
  
 { 
  
 // A unique name is required for every seasonality adjustment. 
  
 Name 
  
 = 
  
 "Seasonality adjustment #" 
  
 + 
  
 ExampleUtilities 
 . 
 GetRandomString 
 (), 
  
 // The CHANNEL scope applies the conversionRateModifier to all campaigns of 
  
 // specific advertising channel types. In this example, the 
  
 // conversionRateModifier will only apply to Search campaigns. Use the 
  
 // CAMPAIGN scope to instead limit the scope to specific campaigns. 
  
 Scope 
  
 = 
  
 SeasonalityEventScope 
 . 
 Channel 
 , 
  
 AdvertisingChannelTypes 
  
 = 
  
 { 
  
 AdvertisingChannelType 
 . 
 Search 
  
 }, 
  
 // If setting scope CAMPAIGN, add individual campaign resource name(s) 
  
 // according to the commented out line below. 
  
 // Campaigns = { "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" }, 
  
 // The date range should be less than 14 days. 
  
 StartDateTime 
  
 = 
  
 startDateTime 
 , 
  
 EndDateTime 
  
 = 
  
 endDateTime 
 , 
  
 // The conversionRateModifier is the expected future conversion rate change. 
  
 // When this field is unset or set to 1.0, no adjustment will be applied to 
  
 // traffic. The allowed range is 0.1 to 10.0. 
  
 ConversionRateModifier 
  
 = 
  
 conversionRateModifier 
  
 }; 
 BiddingSeasonalityAdjustmentOperation 
  
 operation 
  
 = 
  
 new 
  
 BiddingSeasonalityAdjustmentOperation 
 () 
  
 { 
  
 Create 
  
 = 
  
 seasonalityAdjustment 
  
 }; 
 try 
 { 
  
 MutateBiddingSeasonalityAdjustmentsResponse 
  
 response 
  
 = 
  
 biddingSeasonalityAdjustmentService 
 . 
 MutateBiddingSeasonalityAdjustments 
 ( 
  
 customerId 
 . 
 ToString 
 (), 
  
 new 
 [] 
  
 { 
  
 operation 
  
 }); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Added seasonality adjustment with resource name: " 
  
 + 
  
 $"{response.Results[0].ResourceName}" 
 ); 
 } 
 catch 
  
 ( 
 GoogleAdsException 
  
 e 
 ) 
 { 
  
 Console 
 . 
 WriteLine 
 ( 
 "Failure:" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Message: {e.Message}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Failure: {e.Failure}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Request ID: {e.RequestId}" 
 ); 
  
 throw 
 ; 
 } 
  
  

PHP

 // Creates a bidding seasonality adjustment. 
 $seasonalityAdjustment = new BiddingSeasonalityAdjustment([ 
 // A unique name is required for every seasonality adjustment. 
 'name' => 'Seasonality adjustment #' . Helper::getPrintableDatetime(), 
 // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific 
 // advertising channel types. In this example, the conversionRateModifier will only 
 // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to 
 // specific campaigns. 
 'scope' => SeasonalityEventScope::CHANNEL, 
 'advertising_channel_types' => [AdvertisingChannelType::SEARCH], 
 // If setting scope CAMPAIGN, add individual campaign resource name(s) according to 
 // the commented out line below. 
 // 'campaigns' => ['INSERT_CAMPAIGN_RESOURCE_NAME_HERE'], 
 'start_date_time' => $startDateTime, 
 'end_date_time' => $endDateTime, 
 // The conversionRateModifier is the expected future conversion rate change. When this 
 // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed 
 // range is 0.1 to 10.0. 
 'conversion_rate_modifier' => $conversionRateModifier 
 ]); 
 // Creates a bidding seasonality adjustment operation. 
 $biddingSeasonalityAdjustmentOperation = new BiddingSeasonalityAdjustmentOperation(); 
 $biddingSeasonalityAdjustmentOperation->setCreate($seasonalityAdjustment); 
 // Submits the bidding seasonality adjustment operation to add the bidding seasonality 
 // adjustment. 
 $biddingSeasonalityAdjustmentServiceClient = 
 $googleAdsClient->getBiddingSeasonalityAdjustmentServiceClient(); 
 $response = $biddingSeasonalityAdjustmentServiceClient->mutateBiddingSeasonalityAdjustments( 
 MutateBiddingSeasonalityAdjustmentsRequest::build( 
 $customerId, 
 [$biddingSeasonalityAdjustmentOperation] 
 ) 
 ); 
 printf( 
 "Added seasonality adjustment with resource name: '%s'.%s", 
 $response->getResults()[0]->getResourceName(), 
 PHP_EOL 
 );  
 

Python

 bidding_seasonality_adjustment_service 
 : 
 ( 
 BiddingSeasonalityAdjustmentServiceClient 
 ) 
 = 
 client 
 . 
 get_service 
 ( 
 "BiddingSeasonalityAdjustmentService" 
 ) 
 operation 
 : 
 BiddingSeasonalityAdjustmentOperation 
 = 
 client 
 . 
 get_type 
 ( 
 "BiddingSeasonalityAdjustmentOperation" 
 ) 
 bidding_seasonality_adjustment 
 : 
 BiddingSeasonalityAdjustment 
 = 
 ( 
 operation 
 . 
 create 
 ) 
 # A unique name is required for every seasonality adjustment. 
 bidding_seasonality_adjustment 
 . 
 name 
 = 
 f 
 "Seasonality adjustment # 
 { 
 uuid4 
 () 
 } 
 " 
 # The CHANNEL scope applies the conversion_rate_modifier to all campaigns of 
 # specific advertising channel types. In this example, the 
 # conversion_rate_modifier will only apply to Search campaigns. Use the 
 # CAMPAIGN scope to instead limit the scope to specific campaigns. 
 bidding_seasonality_adjustment 
 . 
 scope 
 = 
 ( 
 client 
 . 
 enums 
 . 
 SeasonalityEventScopeEnum 
 . 
 CHANNEL 
 ) 
 bidding_seasonality_adjustment 
 . 
 advertising_channel_types 
 . 
 append 
 ( 
 client 
 . 
 enums 
 . 
 AdvertisingChannelTypeEnum 
 . 
 SEARCH 
 ) 
 # If setting scope CAMPAIGN, add individual campaign resource name(s) 
 # according to the commented out line below. 
 # 
 # bidding_seasonality_adjustment.campaigns.append( 
 #     "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" 
 # ) 
 bidding_seasonality_adjustment 
 . 
 start_date_time 
 = 
 start_date_time 
 bidding_seasonality_adjustment 
 . 
 end_date_time 
 = 
 end_date_time 
 # The conversion_rate_modifier is the expected future conversion rate 
 # change. When this field is unset or set to 1.0, no adjustment will be 
 # applied to traffic. The allowed range is 0.1 to 10.0. 
 bidding_seasonality_adjustment 
 . 
 conversion_rate_modifier 
 = 
 ( 
 conversion_rate_modifier 
 ) 
 response 
 : 
 MutateBiddingSeasonalityAdjustmentsResponse 
 = 
 ( 
 bidding_seasonality_adjustment_service 
 . 
 mutate_bidding_seasonality_adjustments 
 ( 
 customer_id 
 = 
 customer_id 
 , 
 operations 
 = 
 [ 
 operation 
 ] 
 ) 
 ) 
 resource_name 
 : 
 str 
 = 
 response 
 . 
 results 
 [ 
 0 
 ] 
 . 
 resource_name 
 print 
 ( 
 f 
 "Added seasonality adjustment with resource name: ' 
 { 
 resource_name 
 } 
 '" 
 ) 
  

Ruby

 client 
  
 = 
  
 Google 
 :: 
 Ads 
 :: 
 GoogleAds 
 :: 
 GoogleAdsClient 
 . 
 new 
 operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 create_resource 
 . 
 bidding_seasonality_adjustment 
  
 do 
  
 | 
 bsa 
 | 
  
 # A unique name is required for every seasonality adjustment. 
  
 bsa 
 . 
 name 
  
 = 
  
 "Seasonality Adjustment 
 #{ 
 ( 
 Time 
 . 
 new 
 . 
 to_f 
  
 * 
  
 1000 
 ) 
 . 
 to_i 
 } 
 " 
  
 # The CHANNEL scope applies the conversion_rate_modifier to all campaigns 
  
 # of specific advertising channel types. In this example, the 
  
 # conversion_rate_modifier will only apply to Search campaigns. Use the 
  
 # CAMPAIGN scope to instead limit the scope to specific campaigns. 
  
 bsa 
 . 
 scope 
  
 = 
  
 :CHANNEL 
  
 bsa 
 . 
 advertising_channel_types 
 << 
 :SEARCH 
  
 # If setting scope CAMPAIGN, add individual campaign resource name(s) 
  
 # according to the commented out line below. 
  
 # 
  
 # bsa.campaigns << "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" 
  
 bsa 
 . 
 start_date_time 
  
 = 
  
 start_date_time 
  
 bsa 
 . 
 end_date_time 
  
 = 
  
 end_date_time 
  
 # The conversion_rate_modifier is the expected future conversion rate 
  
 # change. When this field is unset or set to 1.0, no adjustment will be 
  
 # applied to traffic. The allowed range is 0.1 to 10.0. 
  
 bsa 
 . 
 conversion_rate_modifier 
  
 = 
  
 conversion_rate_modifier 
 end 
 response 
  
 = 
  
 client 
 . 
 service 
 . 
 bidding_seasonality_adjustment 
 . 
 mutate_bidding_seasonality_adjustments 
 ( 
  
 customer_id 
 : 
  
 customer_id 
 , 
  
 operations 
 : 
  
 [ 
 operation 
 ] 
 , 
 ) 
 puts 
  
 "Added seasonality adjustment with resource name 
 #{ 
 response 
 . 
 results 
 . 
 first 
 . 
 resource_name 
 } 
 " 
  
  

Perl

 my 
  
 $seasonality_adjustment 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 BiddingSeasonalityAdjustment 
 - 
> new 
 ({ 
  
 # A unique name is required for every seasonality adjustment. 
  
 name 
  
 = 
>  
 "Seasonality adjustment #" 
  
 . 
  
 uniqid 
 (), 
  
 # The CHANNEL scope applies the conversion_rate_modifier to all campaigns 
  
 # of specific advertising channel types. In this example, the conversion_rate_modifier 
  
 # will only apply to Search campaigns. Use the CAMPAIGN scope to instead 
  
 # limit the scope to specific campaigns. 
  
 scope 
  
 = 
>  
 CHANNEL 
 , 
  
 advertisingChannelTypes 
  
 = 
>  
 [ 
 SEARCH 
 ], 
  
 # If setting scope CAMPAIGN, add individual campaign resource name(s) 
  
 # according to the commented out line below. 
  
 # campaigns     => ["INSERT_CAMPAIGN_RESOURCE_NAME_HERE"], 
  
 startDateTime 
  
 = 
>  
 $start_date_time 
 , 
  
 endDateTime 
  
 = 
>  
 $end_date_time 
 , 
  
 # The conversion_rate_modifier is the expected future conversion rate change. 
  
 # When this field is unset or set to 1.0, no adjustment will be applied to traffic. 
  
 # The allowed range is 0.1 to 10.0. 
  
 conversionRateModifier 
  
 = 
>  
 $conversion_rate_modifier 
  
 }); 
 my 
  
 $operation 
  
 = 
  
 Google::Ads::GoogleAds::V21::Services::BiddingSeasonalityAdjustmentService:: 
 BiddingSeasonalityAdjustmentOperation 
  
 - 
> new 
 ({ 
  
 create 
  
 = 
>  
 $seasonality_adjustment 
  
 }); 
 my 
  
 $response 
  
 = 
  
 $api_client 
 - 
> BiddingSeasonalityAdjustmentService 
 () 
 - 
> mutate 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
 , 
  
 operations 
  
 = 
>  
 [ 
 $operation 
 ]}); 
 printf 
  
 "Added seasonality adjustment with resource name: '%s'.\n" 
 , 
  
 $response 
 - 
> { 
 results 
 }[ 
 0 
 ]{ 
 resourceName 
 }; 
  
  
Create a Mobile Website
View Site in Mobile | Classic
Share by: