Create Data Exclusions

Data exclusions are an advanced tool that can be used to inform Smart Bidding to ignore all data from dates when there were issues with an account's conversion tracking. For more details about how data exclusions work, refer to the data exclusions help page .

Create data exclusions programmatically using BiddingDataExclusions . You cannot set BiddingDataExclusions in a manager account, but only at the campaign level.

Scope

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

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

Devices

In addition to their scope, data exclusions can be configured with an optional list of device types to which the exclusion will apply. If devices is set, only conversion data from the specified device types are excluded. If not specified, conversion data from all device types will be excluded.

Dates and times

Aside from the scope and optional devices, each data exclusion must have a start and end date and time. A data exclusion is backward looking and should be used for events that have a start_date_time in the past and an end_date_time either in the past or future. The times are in the account's timezone.

Example

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

Java

 BiddingDataExclusion 
  
 DataExclusion 
  
 = 
  
 BiddingDataExclusion 
 . 
 newBuilder 
 () 
  
 // A unique name is required for every data exclusion. 
  
 . 
 setName 
 ( 
 "Data exclusion #" 
  
 + 
  
 getPrintableDateTime 
 ()) 
  
 // The CHANNEL scope applies the data exclusion to all campaigns of specific 
  
 // advertising channel types. In this example, the exclusion 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 
 ) 
  
 . 
 build 
 (); 
 BiddingDataExclusionOperation 
  
 operation 
  
 = 
  
 BiddingDataExclusionOperation 
 . 
 newBuilder 
 (). 
 setCreate 
 ( 
 DataExclusion 
 ). 
 build 
 (); 
 MutateBiddingDataExclusionsResponse 
  
 response 
  
 = 
  
 DataExclusionServiceClient 
 . 
 mutateBiddingDataExclusions 
 ( 
  
 customerId 
 . 
 toString 
 (), 
  
 ImmutableList 
 . 
 of 
 ( 
 operation 
 )); 
 System 
 . 
 out 
 . 
 printf 
 ( 
  
 "Added data exclusion with resource name: %s%n" 
 , 
  
 response 
 . 
 getResults 
 ( 
 0 
 ). 
 getResourceName 
 ()); 
  
  

C#

 BiddingDataExclusion 
  
 dataExclusion 
  
 = 
  
 new 
  
 BiddingDataExclusion 
 () 
 { 
  
 // A unique name is required for every data exclusion. 
  
 Name 
  
 = 
  
 "Data exclusion #" 
  
 + 
  
 ExampleUtilities 
 . 
 GetRandomString 
 (), 
  
 // The CHANNEL scope applies the data exclusion to all campaigns of specific 
  
 // advertising channel types. In this example, the the exclusion will only apply to 
  
 // Search campaigns. Use the CAMPAIGN scope to instead limit the scope to specific 
  
 // campaigns. 
  
 Scope 
  
 = 
  
 SeasonalityEventScope 
 . 
 Channel 
 , 
  
 AdvertisingChannelTypes 
  
 = 
  
 { 
  
 AdvertisingChannelType 
 . 
 Search 
  
 }, 
  
 // The date range should be less than 14 days. 
  
 StartDateTime 
  
 = 
  
 startDateTime 
 , 
  
 EndDateTime 
  
 = 
  
 endDateTime 
 , 
 }; 
 BiddingDataExclusionOperation 
  
 operation 
  
 = 
  
 new 
  
 BiddingDataExclusionOperation 
 () 
 { 
  
 Create 
  
 = 
  
 dataExclusion 
 }; 
 try 
 { 
  
 MutateBiddingDataExclusionsResponse 
  
 response 
  
 = 
  
 biddingDataExclusionService 
 . 
 MutateBiddingDataExclusions 
 ( 
  
 customerId 
 . 
 ToString 
 (), 
  
 new 
 [] 
  
 { 
  
 operation 
  
 }); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Added data exclusion 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 data exclusion. 
 $dataExclusion = new BiddingDataExclusion([ 
 // A unique name is required for every data exclusion. 
 'name' => 'Data exclusion #' . Helper::getPrintableDatetime(), 
 // The CHANNEL scope applies the data exclusion to all campaigns of specific 
 // advertising channel types. In this example, the exclusion 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 
 ]); 
 // Creates a bidding data exclusion operation. 
 $biddingDataExclusionOperation = new BiddingDataExclusionOperation(); 
 $biddingDataExclusionOperation->setCreate($dataExclusion); 
 // Submits the bidding data exclusion operation to add the bidding data exclusion. 
 $biddingDataExclusionServiceClient = 
 $googleAdsClient->getBiddingDataExclusionServiceClient(); 
 $response = $biddingDataExclusionServiceClient->mutateBiddingDataExclusions( 
 MutateBiddingDataExclusionsRequest::build($customerId, [$biddingDataExclusionOperation]) 
 ); 
 printf( 
 "Added bidding data exclusion with resource name: '%s'.%s", 
 $response->getResults()[0]->getResourceName(), 
 PHP_EOL 
 );  
 

Python

 bidding_data_exclusion_service 
 : 
 BiddingDataExclusionServiceClient 
 = 
 ( 
 client 
 . 
 get_service 
 ( 
 "BiddingDataExclusionService" 
 ) 
 ) 
 operation 
 : 
 BiddingDataExclusionOperation 
 = 
 client 
 . 
 get_type 
 ( 
 "BiddingDataExclusionOperation" 
 ) 
 bidding_data_exclusion 
 : 
 BiddingDataExclusion 
 = 
 operation 
 . 
 create 
 # A unique name is required for every data exclusion 
 bidding_data_exclusion 
 . 
 name 
 = 
 f 
 "Data exclusion # 
 { 
 uuid4 
 () 
 } 
 " 
 # The CHANNEL scope applies the data exclusion to all campaigns of specific 
 # advertising channel types. In this example, the exclusion will only 
 # apply to Search campaigns. Use the CAMPAIGN scope to instead limit the 
 # scope to specific campaigns. 
 bidding_data_exclusion 
 . 
 scope 
 = 
 ( 
 client 
 . 
 enums 
 . 
 SeasonalityEventScopeEnum 
 . 
 CHANNEL 
 ) 
 bidding_data_exclusion 
 . 
 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_data_exclusion.campaigns.append( 
 #     "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" 
 # ) 
 bidding_data_exclusion 
 . 
 start_date_time 
 = 
 start_date_time 
 bidding_data_exclusion 
 . 
 end_date_time 
 = 
 end_date_time 
 response 
 : 
 MutateBiddingDataExclusionsResponse 
 = 
 ( 
 bidding_data_exclusion_service 
 . 
 mutate_bidding_data_exclusions 
 ( 
 customer_id 
 = 
 customer_id 
 , 
 operations 
 = 
 [ 
 operation 
 ] 
 ) 
 ) 
 resource_name 
 : 
 str 
 = 
 response 
 . 
 results 
 [ 
 0 
 ] 
 . 
 resource_name 
 print 
 ( 
 f 
 "Added data exclusion with resource name: ' 
 { 
 resource_name 
 } 
 '" 
 ) 
  

Ruby

 client 
  
 = 
  
 Google 
 :: 
 Ads 
 :: 
 GoogleAds 
 :: 
 GoogleAdsClient 
 . 
 new 
 operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 create_resource 
 . 
 bidding_data_exclusion 
  
 do 
  
 | 
 bda 
 | 
  
 # A unique name is required for every data excluseion. 
  
 bda 
 . 
 name 
  
 = 
  
 "Seasonality Adjustment 
 #{ 
 ( 
 Time 
 . 
 new 
 . 
 to_f 
  
 * 
  
 1000 
 ) 
 . 
 to_i 
 } 
 " 
  
 # The CHANNEL scope applies the data exclusion 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. 
  
 bda 
 . 
 scope 
  
 = 
  
 :CHANNEL 
  
 bda 
 . 
 advertising_channel_types 
 << 
 :SEARCH 
  
 # If setting scope CAMPAIGN, add individual campaign resource name(s) 
  
 # according to the commented out line below. 
  
 # 
  
 # bda.campaigns << "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" 
  
 bda 
 . 
 start_date_time 
  
 = 
  
 start_date_time 
  
 bda 
 . 
 end_date_time 
  
 = 
  
 end_date_time 
 end 
 response 
  
 = 
  
 client 
 . 
 service 
 . 
 bidding_data_exclusion 
 . 
 mutate_bidding_data_exclusions 
 ( 
  
 customer_id 
 : 
  
 customer_id 
 , 
  
 operations 
 : 
  
 [ 
 operation 
 ] 
 , 
 ) 
 puts 
  
 "Added data exclusion with resource name 
 #{ 
 response 
 . 
 results 
 . 
 first 
 . 
 resource_name 
 } 
 ." 
  
  

Perl

 my 
  
 $data_exclusion 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 BiddingDataExclusion 
 - 
> new 
 ({ 
  
 # A unique name is required for every data exclusion. 
  
 name 
  
 = 
>  
 "Data exclusion #" 
  
 . 
  
 uniqid 
 (), 
  
 # The CHANNEL scope applies the data exclusion to all campaigns of specific 
  
 # advertising channel types. In this example, the exclusion 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 
  
 }); 
 my 
  
 $operation 
  
 = 
  
 Google::Ads::GoogleAds::V21::Services::BiddingDataExclusionService:: 
 BiddingDataExclusionOperation 
  
 - 
> new 
 ({ 
  
 create 
  
 = 
>  
 $data_exclusion 
  
 }); 
 my 
  
 $response 
  
 = 
  
 $api_client 
 - 
> BiddingDataExclusionService 
 () 
 - 
> mutate 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
 , 
  
 operations 
  
 = 
>  
 [ 
 $operation 
 ]}); 
 printf 
  
 "Added data exclusion with resource name: '%s'.\n" 
 , 
  
 $response 
 - 
> { 
 results 
 }[ 
 0 
 ]{ 
 resourceName 
 }; 
  
  
Create a Mobile Website
View Site in Mobile | Classic
Share by: