Page Summary
-
An AdGroup is required to serve ads for your Shopping campaign.
-
Standard Shopping campaigns utilize the
SHOPPING_PRODUCT_ADSad group type for serving standard product ads. -
Multiple ad groups, each with at least one ad, can be included in Standard Shopping campaigns.
-
This page provides code examples for creating a shopping product ad group and setting a CPC bid.
To serve ads for your standard Shopping campaign, you must create at least one
AdGroup.
Overview
Standard Shopping campaigns support the SHOPPING_PRODUCT_ADS ad group
type. This is the default ad group type for Shopping campaigns, serving standard
product ads. Set this by providing the ad group type field when creating
the ad group.
Standard Shopping campaigns can contain multiple ad groups, each containing at least one ad.
Code example
The following code creates an ad group for a standard Shopping campaign and sets
a CPC bid to match the campaign's ManualCpc bidding strategy:
Java
private String addShoppingProductAdGroup( GoogleAdsClient googleAdsClient, long customerId, String campaignResourceName) { // Creates an ad group. AdGroup adGroup = AdGroup.newBuilder() .setName("Earth to Mars Cruises #" + getPrintableDateTime()) .setCampaign(campaignResourceName) // Sets the ad group type to SHOPPING_PRODUCT_ADS. This is the only value possible for // ad groups that contain shopping product ads. .setType(AdGroupType.SHOPPING_PRODUCT_ADS) .setCpcBidMicros(1_000_000L) .setStatus(AdGroupStatus.ENABLED) .build(); // Creates an ad group operation. AdGroupOperation operation = AdGroupOperation.newBuilder().setCreate(adGroup).build(); // Issues a mutate request to add an ad group. try (AdGroupServiceClient adGroupServiceClient = googleAdsClient.getLatestVersion().createAdGroupServiceClient()) { MutateAdGroupResult mutateAdGroupResult = adGroupServiceClient .mutateAdGroups(Long.toString(customerId), Collections.singletonList(operation)) .getResults(0); System.out.printf( "Added a product shopping ad group with resource name: '%s'%n", mutateAdGroupResult.getResourceName()); return mutateAdGroupResult.getResourceName(); } }
C#
private string AddProductShoppingAdGroup(GoogleAdsClient client, long customerId, string campaignResourceName) { // Get the AdGroupService. AdGroupServiceClient adGroupService = client.GetService(Services.V25.AdGroupService); // Creates an ad group. AdGroup adGroup = new AdGroup() { Name = "Earth to Mars Cruises #" + ExampleUtilities.GetRandomString(), Campaign = campaignResourceName, // Sets the ad group type to SHOPPING_PRODUCT_ADS. This is the only value possible // for ad groups that contain shopping product ads. Type = AdGroupType.ShoppingProductAds, CpcBidMicros = 1_000_000L, Status = AdGroupStatus.Enabled }; // Creates an ad group operation. AdGroupOperation operation = new AdGroupOperation() { Create = adGroup }; // Issues a mutate request to add an ad group. MutateAdGroupResult mutateAdGroupResult = adGroupService .MutateAdGroups(customerId.ToString(), new AdGroupOperation[] { operation }) .Results[0]; Console.WriteLine("Added a product shopping ad group with resource name: '{0}'.", mutateAdGroupResult.ResourceName); return mutateAdGroupResult.ResourceName; }
PHP
private static function addShoppingProductAdGroup( GoogleAdsClient $googleAdsClient, int $customerId, string $campaignResourceName ) { // Creates an ad group. $adGroup = new AdGroup( [ 'name' => 'Earth to Mars Cruise #' . Helper::getPrintableDatetime(), // Sets the campaign. 'campaign' => $campaignResourceName, // Sets the ad group type to SHOPPING_PRODUCT_ADS. This is the only value possible for // ad groups that contain shopping product ads. 'type' => AdGroupType::SHOPPING_PRODUCT_ADS, 'cpc_bid_micros' => 10000000, 'status' => AdGroupStatus::ENABLED ] ); // Creates an ad group operation. $adGroupOperation = new AdGroupOperation(); $adGroupOperation->setCreate($adGroup); // Issues a mutate request to add an ad group. $adGroupServiceClient = $googleAdsClient->getAdGroupServiceClient(); $response = $adGroupServiceClient->mutateAdGroups( MutateAdGroupsRequest::build($customerId, [$adGroupOperation]) ); /** * @var AdGroup $addedAdGroup */ $addedAdGroup = $response->getResults()[0]; printf( "Added a shopping product ad group with resource name '%s'.%s", $addedAdGroup->getResourceName(), PHP_EOL ); return $addedAdGroup->getResourceName(); }
Python
def add_shopping_product_ad_group( client: GoogleAdsClient, customer_id: str, campaign_resource_name: str, ) -> str: """Creates a new shopping product ad group in the specified campaign.""" ad_group_service: AdGroupServiceClient = client.get_service( "AdGroupService" ) # Create ad group. ad_group_operation: AdGroupOperation = client.get_type("AdGroupOperation") ad_group: AdGroup = ad_group_operation.create ad_group.name = f"Earth to Mars cruise {uuid.uuid4()}" ad_group.status = client.enums.AdGroupStatusEnum.ENABLED ad_group.campaign = campaign_resource_name # Sets the ad group type to SHOPPING_PRODUCT_ADS. This is the only value # possible for ad groups that contain shopping product ads. ad_group.type_ = client.enums.AdGroupTypeEnum.SHOPPING_PRODUCT_ADS ad_group.cpc_bid_micros = 10000000 # Add the ad group. ad_group_response = ad_group_service.mutate_ad_groups( customer_id=customer_id, operations=[ad_group_operation] ) ad_group_resource_name: str = ad_group_response.results[0].resource_name print( "Added a product shopping ad group with resource name " f"'{ad_group_resource_name}'." ) return ad_group_resource_name
Ruby
def add_shopping_product_ad_group(client, customer_id, campaign_name) operation = client.operation.create_resource.ad_group do |ad_group| ad_group.name = "Earth to Mars cruise ##{(Time.new.to_f * 1000).to_i}" ad_group.status = :ENABLED ad_group.campaign = campaign_name ad_group.type = :SHOPPING_PRODUCT_ADS ad_group.cpc_bid_micros = 10_000_000 end service = client.service.ad_group response = service.mutate_ad_groups( customer_id: customer_id, operations: [operation], ) ad_group_name = response.results.first.resource_name puts "Added a product shopping ad group with resource name #{ad_group_name}." ad_group_name end
Perl
sub add_shopping_product_ad_group { my ($api_client, $customer_id, $campaign_resource_name) = @_; # Create an ad group. my $ad_group = Google::Ads::GoogleAds::V25::Resources::AdGroup->new({ name => "Earth to Mars Cruises #" . uniqid(), campaign => $campaign_resource_name, # Set the ad group type to SHOPPING_PRODUCT_ADS. This is the only value # possible for ad groups that contain shopping product ads. type => SHOPPING_PRODUCT_ADS, cpcBidMicros => 1000000, status => Google::Ads::GoogleAds::V25::Enums::AdGroupStatusEnum::ENABLED }); # Create an ad group operation. my $ad_group_operation = Google::Ads::GoogleAds::V25::Services::AdGroupService::AdGroupOperation-> new({create => $ad_group}); # Add the ad group. my $ad_group_resource_name = $api_client->AdGroupService()->mutate({ customerId => $customer_id, operations => [$ad_group_operation]})->{results}[0]{resourceName}; printf "Added a product shopping ad group with resource name: '%s'.\n", $ad_group_resource_name; return $ad_group_resource_name; }
curl
Next steps
- After creating an ad group, create a Shopping ad group ad and set up your Shopping listing groups (product partitions) to define which products from your Merchant Center feed to target.