Creating a Shopping Campaign

The first step in implementing Shopping ads is to create a Shopping campaign. Shopping campaigns enable users to see ads that show an image of the product including title, price, store name and more. When creating a Shopping campaign, you need to set its budget, bidding strategy, and the shopping settings.

Before you can create a Shopping campaign, you need to link your Google Ads account to your Google Merchant Center account . Once you've linked accounts, you can use the Google Merchant Center account ID when specifying the shopping settings.

Standard Shopping campaigns

This is the campaign required to create Product Shopping ads . Product Shopping ads let you include an image, title, price, and your store or business name inside your ads, without the need for you to create unique ads for each product you sell.

Here are the steps for setting up a standard Shopping campaign:

  1. Set the campaign's advertising_channel_type to SHOPPING .
  2. Create a ShoppingSetting , set the fields, then add it to the campaign.
  3. Create a portfolio bid strategy or set a campaign-level bid strategy.
  4. Create a new campaign budget or set an existing shared budget.

For standard Shopping campaigns, ShoppingSetting supports the following fields:

Required

merchant_id
The Merchant Center ID of the account that contains the products to advertise.
campaign_priority
The priority of the Shopping campaign. Campaigns with numerically higher priorities take precedence over those with lower priorities. Allowed values are between 0 and 2, inclusive.

Optional

feed_label

A string used for feed label as defined in your Merchant Center. This field should be used in the case that you need to select products from a specific Merchant Center feed . If not specified, then the campaign uses all available feeds in the Merchant Center.

If you previously used the deprecated sales_country in the two-letter country code ( XX ) format, the feed_label should be used instead. For more information see the feed label support article.

Note that submitting a country code in a feed_label doesn't automatically enable ads to serve in that country; you must first set up geographic location targeting .

enable_local

The option to enable ads for products sold in local stores for this campaign.

A bid strategy can be set up as a:

Portfolio bid strategy
An automated bid strategy that can be shared across campaigns, ad groups, and keywords. Created using the BiddingStrategyService .
Campaign bid strategy
A bid strategy set directly on the campaign. This can include automated bidding strategies compatible with Shopping campaigns.

For standard Shopping campaigns, the following bid strategies are supported:

Portfolio bid strategy

Campaign bid strategy

Network settings

Starting the week of Feb. 28, 2022, standard Shopping campaigns no longer support the network_settings.target_content_network field.

Setting this field to true on a standard Shopping campaign in a mutate request generates a CANNOT_TARGET_CONTENT_NETWORK error.

For more details, see Changes in Network Settings for the Google Ads Standard Shopping Campaigns .

This code example demonstrates how to create a standard Shopping campaign.

Java

 private 
  
 String 
  
 addStandardShoppingCampaign 
 ( 
  
 GoogleAdsClient 
  
 googleAdsClient 
 , 
  
 long 
  
 customerId 
 , 
  
 String 
  
 budgetResourceName 
 , 
  
 long 
  
 merchantCenterAccountId 
 ) 
  
 { 
  
 // Configures the shopping settings. 
  
 ShoppingSetting 
  
 shoppingSetting 
  
 = 
  
 ShoppingSetting 
 . 
 newBuilder 
 () 
  
 // Sets the priority of the campaign. Higher numbers take priority over lower numbers. 
  
 // For Shopping product ad campaigns, allowed values are between 0 and 2, inclusive. 
  
 . 
 setCampaignPriority 
 ( 
 0 
 ) 
  
 . 
 setMerchantId 
 ( 
 merchantCenterAccountId 
 ) 
  
 // Enables local inventory ads for this campaign. 
  
 . 
 setEnableLocal 
 ( 
 true 
 ) 
  
 . 
 build 
 (); 
  
 // Create the standard shopping campaign. 
  
 Campaign 
  
 campaign 
  
 = 
  
 Campaign 
 . 
 newBuilder 
 () 
  
 . 
 setName 
 ( 
 "Interplanetary Cruise #" 
  
 + 
  
 getPrintableDateTime 
 ()) 
  
 // Configures settings related to shopping campaigns including advertising channel type 
  
 // and shopping setting. 
  
 . 
 setAdvertisingChannelType 
 ( 
 AdvertisingChannelType 
 . 
 SHOPPING 
 ) 
  
 . 
 setShoppingSetting 
 ( 
 shoppingSetting 
 ) 
  
 // 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 Manual CPC 
  
 // Recommendation: Use one of the automated bidding strategies for Shopping campaigns 
  
 // to help you optimize your advertising spend. More information can be found here: 
  
 // https://support.google.com/google-ads/answer/6309029. 
  
 . 
 setManualCpc 
 ( 
 ManualCpc 
 . 
 getDefaultInstance 
 ()) 
  
 // Sets the budget. 
  
 . 
 setCampaignBudget 
 ( 
 budgetResourceName 
 ) 
  
 // Declares whether this campaign serves political ads targeting the EU. 
  
 . 
 setContainsEuPoliticalAdvertising 
 ( 
 DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 ) 
  
 . 
 build 
 (); 
  
 // Creates a campaign operation. 
  
 CampaignOperation 
  
 operation 
  
 = 
  
 CampaignOperation 
 . 
 newBuilder 
 (). 
 setCreate 
 ( 
 campaign 
 ). 
 build 
 (); 
  
 // Issues a mutate request to add the campaign. 
  
 try 
  
 ( 
 CampaignServiceClient 
  
 campaignServiceClient 
  
 = 
  
 googleAdsClient 
 . 
 getLatestVersion 
 (). 
 createCampaignServiceClient 
 ()) 
  
 { 
  
 MutateCampaignsResponse 
  
 response 
  
 = 
  
 campaignServiceClient 
 . 
 mutateCampaigns 
 ( 
  
 Long 
 . 
 toString 
 ( 
 customerId 
 ), 
  
 Collections 
 . 
 singletonList 
 ( 
 operation 
 )); 
  
 MutateCampaignResult 
  
 result 
  
 = 
  
 response 
 . 
 getResults 
 ( 
 0 
 ); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
  
 "Added a standard shopping campaign with resource name: '%s'%n" 
 , 
  
 result 
 . 
 getResourceName 
 ()); 
  
 return 
  
 result 
 . 
 getResourceName 
 (); 
  
 } 
 } 
  
  

C#

 private 
  
 string 
  
 AddStandardShoppingCampaign 
 ( 
 GoogleAdsClient 
  
 client 
 , 
  
 long 
  
 customerId 
 , 
  
 string 
  
 budgetResourceName 
 , 
  
 long 
  
 merchantCenterAccountId 
 ) 
 { 
  
 // Get the CampaignService. 
  
 CampaignServiceClient 
  
 campaignService 
  
 = 
  
 client 
 . 
 GetService 
 ( 
 Services 
 . 
 V21 
 . 
 CampaignService 
 ); 
  
 // Configures the shopping settings. 
  
 ShoppingSetting 
  
 shoppingSetting 
  
 = 
  
 new 
  
 ShoppingSetting 
 () 
  
 { 
  
 // Sets the priority of the campaign. Higher numbers take priority over lower 
  
 // numbers. For Shopping Product Ad campaigns, allowed values are between 0 and 2, 
  
 // inclusive. 
  
 CampaignPriority 
  
 = 
  
 0 
 , 
  
 MerchantId 
  
 = 
  
 merchantCenterAccountId 
 , 
  
 // Enables local inventory ads for this campaign. 
  
 EnableLocal 
  
 = 
  
 true 
  
 }; 
  
 // Create the standard shopping campaign. 
  
 Campaign 
  
 campaign 
  
 = 
  
 new 
  
 Campaign 
 () 
  
 { 
  
 Name 
  
 = 
  
 "Interplanetary Cruise #" 
  
 + 
  
 ExampleUtilities 
 . 
 GetRandomString 
 (), 
  
 // Configures settings related to shopping campaigns including advertising channel 
  
 // type and shopping setting. 
  
 AdvertisingChannelType 
  
 = 
  
 AdvertisingChannelType 
 . 
 Shopping 
 , 
  
 ShoppingSetting 
  
 = 
  
 shoppingSetting 
 , 
  
 // 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 Manual CPC. 
  
 // Recommendation: Use one of the automated bidding strategies for Shopping 
  
 // campaigns to help you optimize your advertising spend. More information can be 
  
 // found here: https://support.google.com/google-ads/answer/6309029 
  
 ManualCpc 
  
 = 
  
 new 
  
 ManualCpc 
 (), 
  
 // Sets the budget. 
  
 CampaignBudget 
  
 = 
  
 budgetResourceName 
 , 
  
 // Declare whether or not this campaign contains political ads targeting the EU. 
  
 ContainsEuPoliticalAdvertising 
  
 = 
  
 EuPoliticalAdvertisingStatus 
 . 
 DoesNotContainEuPoliticalAdvertising 
 , 
  
 }; 
  
 // Creates a campaign operation. 
  
 CampaignOperation 
  
 operation 
  
 = 
  
 new 
  
 CampaignOperation 
 () 
  
 { 
  
 Create 
  
 = 
  
 campaign 
  
 }; 
  
 // Issues a mutate request to add the campaign. 
  
 MutateCampaignsResponse 
  
 response 
  
 = 
  
 campaignService 
 . 
 MutateCampaigns 
 ( 
 customerId 
 . 
 ToString 
 (), 
  
 new 
  
 CampaignOperation 
 [] 
  
 { 
  
 operation 
  
 }); 
  
 MutateCampaignResult 
  
 result 
  
 = 
  
 response 
 . 
 Results 
 [ 
 0 
 ]; 
  
 Console 
 . 
 WriteLine 
 ( 
 "Added a standard shopping campaign with resource name: '{0}'." 
 , 
  
 result 
 . 
 ResourceName 
 ); 
  
 return 
  
 result 
 . 
 ResourceName 
 ; 
 } 
  
  

PHP

 private static function addStandardShoppingCampaign( 
 GoogleAdsClient $googleAdsClient, 
 int $customerId, 
 string $budgetResourceName, 
 int $merchantCenterAccountId 
 ) { 
 // Creates a standard shopping campaign. 
 $campaign = new Campaign([ 
 'name' => 'Interplanetary Cruise Campaign #' . Helper::getPrintableDatetime(), 
 // Configures settings related to shopping campaigns including advertising channel type 
 // and shopping setting. 
 'advertising_channel_type' => AdvertisingChannelType::SHOPPING, 
 // Configures the shopping settings. 
 'shopping_setting' => new ShoppingSetting([ 
 // Sets the priority of the campaign. Higher numbers take priority over lower 
 // numbers. For Shopping product ad campaigns, allowed values are between 0 and 2, 
 // inclusive. 
 'campaign_priority' => 0, 
 'merchant_id' => $merchantCenterAccountId, 
 // Enables local inventory ads for this campaign 
 'enable_local' => true 
 ]), 
 // 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 Manual CPC. 
 // Recommendation: Use one of the automated bidding strategies for Shopping campaigns 
 // to help you optimize your advertising spend. More information can be found here: 
 // https://support.google.com/google-ads/answer/6309029. 
 'manual_cpc' => new ManualCpc(), 
 // Sets the budget. 
 'campaign_budget' => $budgetResourceName, 
 // Declare whether or not this campaign serves political ads targeting the EU. 
 'contains_eu_political_advertising' = 
> EuPoliticalAdvertisingStatus::DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING 
 ]); 
 // Creates a campaign operation. 
 $campaignOperation = new CampaignOperation(); 
 $campaignOperation->setCreate($campaign); 
 // Issues a mutate request to add campaigns. 
 $campaignServiceClient = $googleAdsClient->getCampaignServiceClient(); 
 $response = $campaignServiceClient->mutateCampaigns( 
 MutateCampaignsRequest::build($customerId, [$campaignOperation]) 
 ); 
 /** @var Campaign $addedCampaign */ 
 $addedCampaign = $response->getResults()[0]; 
 printf( 
 "Added a standard shopping campaign with resource name '%s'.%s", 
 $addedCampaign->getResourceName(), 
 PHP_EOL 
 ); 
 return $addedCampaign->getResourceName(); 
 }  
 

Python

 def 
  
 add_standard_shopping_campaign 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 , 
 budget_resource_name 
 : 
 str 
 , 
 merchant_center_account_id 
 : 
 int 
 , 
 ) 
 - 
> str 
 : 
  
 """Creates a new standard shopping campaign in the specified client account.""" 
 campaign_service 
 : 
 CampaignServiceClient 
 = 
 client 
 . 
 get_service 
 ( 
 "CampaignService" 
 ) 
 # Create standard shopping 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 shopping campaigns including advertising 
 # channel type and shopping setting. 
 campaign 
 . 
 advertising_channel_type 
 = 
 ( 
 client 
 . 
 enums 
 . 
 AdvertisingChannelTypeEnum 
 . 
 SHOPPING 
 ) 
 campaign 
 . 
 shopping_setting 
 . 
 merchant_id 
 = 
 merchant_center_account_id 
 # Sets the priority of the campaign. Higher numbers take priority over lower 
 # numbers. For standard shopping campaigns, allowed values are between 0 and 
 # 2, inclusive. 
 campaign 
 . 
 shopping_setting 
 . 
 campaign_priority 
 = 
 0 
 # Enables local inventory ads for this campaign. 
 campaign 
 . 
 shopping_setting 
 . 
 enable_local 
 = 
 True 
 # 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 
 # Sets the bidding strategy to Manual CPC. 
 # Recommendation: Use one of the automated bidding strategies for Shopping 
 # campaigns to help you optimize your advertising spend. More information 
 # can be found here: https://support.google.com/google-ads/answer/6309029 
 campaign 
 . 
 manual_cpc 
 = 
 client 
 . 
 get_type 
 ( 
 "ManualCpc" 
 ) 
 # Sets the budget. 
 campaign 
 . 
 campaign_budget 
 = 
 budget_resource_name 
 # 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 
 ) 
 # Add the campaign. 
 campaign_response 
 = 
 campaign_service 
 . 
 mutate_campaigns 
 ( 
 customer_id 
 = 
 customer_id 
 , 
 operations 
 = 
 [ 
 campaign_operation 
 ] 
 ) 
 campaign_resource_name 
 : 
 str 
 = 
 campaign_response 
 . 
 results 
 [ 
 0 
 ] 
 . 
 resource_name 
 print 
 ( 
 "Added a standard shopping campaign with resource name " 
 f 
 "' 
 { 
 campaign_resource_name 
 } 
 '." 
 ) 
 return 
 campaign_resource_name  
 
 . 
 py 

Ruby

 def 
  
 add_standard_shopping_campaign 
 ( 
  
 client 
 , 
  
 customer_id 
 , 
  
 budget_name 
 , 
  
 merchant_center_id 
 ) 
  
 operation 
  
 = 
  
 client 
 . 
 operation 
 . 
 create_resource 
 . 
 campaign 
  
 do 
  
 | 
 campaign 
 | 
  
 campaign 
 . 
 name 
  
 = 
  
 "Interplanetary Cruise Campaign # 
 #{ 
 ( 
 Time 
 . 
 new 
 . 
 to_f 
  
 * 
  
 1000 
 ) 
 . 
 to_i 
 } 
 " 
  
 # Shopping campaign specific settings 
  
 campaign 
 . 
 advertising_channel_type 
  
 = 
  
 :SHOPPING 
  
 campaign 
 . 
 shopping_setting 
  
 = 
  
 client 
 . 
 resource 
 . 
 shopping_setting 
  
 do 
  
 | 
 shopping_setting 
 | 
  
 shopping_setting 
 . 
 merchant_id 
  
 = 
  
 merchant_center_id 
  
 shopping_setting 
 . 
 campaign_priority 
  
 = 
  
 0 
  
 shopping_setting 
 . 
 enable_local 
  
 = 
  
 true 
  
 end 
  
 campaign 
 . 
 status 
  
 = 
  
 :PAUSED 
  
 # Sets the bidding strategy to Manual CPC. 
  
 campaign 
 . 
 manual_cpc 
  
 = 
  
 client 
 . 
 resource 
 . 
 manual_cpc 
  
 campaign 
 . 
 campaign_budget 
  
 = 
  
 budget_name 
  
 # 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 
  
 service 
  
 = 
  
 client 
 . 
 service 
 . 
 campaign 
  
 response 
  
 = 
  
 service 
 . 
 mutate_campaigns 
 ( 
  
 customer_id 
 : 
  
 customer_id 
 , 
  
 operations 
 : 
  
 [ 
 operation 
 ] 
 , 
  
 ) 
  
 campaign_name 
  
 = 
  
 response 
 . 
 results 
 . 
 first 
 . 
 resource_name 
  
 puts 
  
 "Added a standard shopping campaign with resource name 
 #{ 
 campaign_name 
 } 
 ." 
  
 campaign_name 
 end  
 
 . 
 rb 
  

Perl

 sub 
  
 add_standard_shopping_campaign 
  
 { 
  
 my 
  
 ( 
 $api_client 
 , 
  
 $customer_id 
 , 
  
 $budget_resource_name 
 , 
  
 $merchant_center_account_id 
 ) 
  
 = 
  
 @_ 
 ; 
  
 # Create a standard shopping campaign. 
  
 my 
  
 $campaign 
  
 = 
  
 Google::Ads::GoogleAds::V21::Resources:: 
 Campaign 
 - 
> new 
 ({ 
  
 name 
  
 = 
>  
 "Interplanetary Cruise Campaign #" 
  
 . 
  
 uniqid 
 (), 
  
 # Configure settings related to shopping campaigns including advertising 
  
 # channel type and shopping setting. 
  
 advertisingChannelType 
  
 = 
>  
 SHOPPING 
 , 
  
 shoppingSetting 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Resources:: 
 ShoppingSetting 
 - 
> new 
 ({ 
  
 merchantId 
  
 = 
>  
 $merchant_center_account_id 
 , 
  
 # Set the priority of the campaign. Higher numbers take priority over 
  
 # lower numbers. For standard shopping campaigns, allowed values are 
  
 # between 0 and 2, inclusive. 
  
 campaignPriority 
  
 = 
>  
 0 
 , 
  
 # Enable local inventory ads for this campaign. 
  
 enableLocal 
  
 = 
>  
 "true" 
  
 } 
  
 ), 
  
 # 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::V21::Enums::CampaignStatusEnum:: 
 PAUSED 
 , 
  
 # Set the bidding strategy to Manual CPC. 
  
 # Recommendation: Use one of the automated bidding strategies for shopping 
  
 # campaigns to help you optimize your advertising spend. More information 
  
 # can be found here: https://support.google.com/google-ads/answer/6309029. 
  
 manualCpc 
  
 = 
>  
 Google::Ads::GoogleAds::V21::Common:: 
 ManualCpc 
 - 
> new 
 (), 
  
 # Set the budget. 
  
 campaignBudget 
  
 = 
>  
 $budget_resource_name 
 , 
  
 # 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 
  
 }); 
  
 # Create a campaign operation. 
  
 my 
  
 $campaign_operation 
  
 = 
  
 Google::Ads::GoogleAds::V21::Services::CampaignService:: 
 CampaignOperation 
 - 
>  
 new 
 ({ 
 create 
  
 = 
>  
 $campaign 
 }); 
  
 # Add the campaign. 
  
 my 
  
 $campaign_resource_name 
  
 = 
  
 $api_client 
 - 
> CampaignService 
 () 
 - 
> mutate 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
 , 
  
 operations 
  
 = 
>  
 [ 
 $campaign_operation 
 ]}) 
 - 
> { 
 results 
 }[ 
 0 
 ]{ 
 resourceName 
 }; 
  
 printf 
  
 "Added a standard shopping campaign with resource name: '%s'.\n" 
 , 
  
 $campaign_resource_name 
 ; 
  
 return 
  
 $campaign_resource_name 
 ; 
 } 
  
  

Smart Shopping campaigns

Create a Mobile Website
View Site in Mobile | Classic
Share by: