Kampanie Performance Max do celów związanych z handlem detalicznym pomagają Ci zwiększać zasięg i realizować cele, oferując możliwość wyświetlania reklam w dodatkowych zasobach reklamowych.
Aby reklamy mogły się wyświetlać w nowych formatach i na nowych platformach, np. w reklamach tekstowych, na kartach Discover, w reklamach In-Stream w YouTube i w sieci reklamowej, być może trzeba będzie utworzyć nowe zasobów, np. tekstowe, graficzne lub wideo.
Jeśli masz unikalne statystyki dotyczące segmentów użytkowników, którzy są bardziej skłonni do konwersji, możesz teraz użyć sygnałów dotyczących odbiorców, aby przekazać te informacje Google.
Oto kilka dodatkowych ulepszeń, które kampanie Performance Max oferują w porównaniu ze standardowymi kampaniami produktowymi:
- Kierowanie na język na podstawie kryteriów pliku danych lub kampanii w Merchant Center
- Rozwinięcie końcowego adresu URL
- Gdy wybierzesz cel Wizyty w sklepie stacjonarnym, kierowanie obejmuje wszystkie sklepy
- Możliwość ustawiania celów konwersji na poziomie klienta lub kampanii
Łączenie kont Merchant Center i Google Ads
Aby korzystać z kampanii Performance Max w handlu detalicznym, konto Google Ads musi być połączone z dotychczasowym kontem Merchant Center. Połączenie z Merchant Center umożliwia automatyczne generowanie komponentów na potrzeby kampanii, ale zasięg i skuteczność będą ograniczone.
Dodaj grupy plików
Dodanie grupy komponentów powoduje włączenie kanałów Zakupy Google i remarketingu dynamicznego, a ustawienie rozwinięcia adresu URL powoduje włączenie dynamicznych reklam w wyszukiwarce. Ogólnie rzecz biorąc, im więcej komponentów udostępnisz, tym więcej formatów reklam może utworzyć system, aby kierować reklamy na dodatkowe zasoby reklamowe.
Zalecamy, aby każda grupa komponentów była kierowana na różne produkty. Pamiętaj, że istnieją ograniczenia dotyczące grup pozycji. Zgodnie ze sprawdzoną metodą możesz kierować reklamy tylko na określony zestaw produktów z grupy komponentów. Na przykład produkty A–L należą do grupy komponentów 1, a produkty M–Z – do grupy komponentów 2.
Jeśli chcesz dostosować przekaz komponentów do odbiorców, możesz utworzyć wiele grup komponentów na kampanię. W ten sposób możesz utworzyć różne grupy komponentów dla tego samego końcowego adresu URL.
Podczas konfigurowania kampanii Performance Max możesz zobaczyć więcej wskazówek dotyczących optymalizacji.
Tworzenie kampanii Performance Max na potrzeby handlu detalicznego
Podobnie jak w przypadku innych kampanii produktowych, skonfiguruj pola ShoppingSetting
w kampanii.
Wymagane
merchant_id
- Identyfikator Merchant Center konta zawierającego produkty, które chcesz reklamować.
Opcjonalny
feed_label
Ciąg znaków używany na potrzeby etykiety pliku danych zgodnie z definicją w Merchant Center. Użyj tego pola, jeśli chcesz wybrać produkty z określonego pliku danych Merchant Center. Jeśli nie zostanie określony, kampania będzie używać wszystkich dostępnych plików danych w Merchant Center.
Jeśli wcześniej używano wycofanej wartości
sales_country
w formacie 2-literowego kodu kraju (XX
), należy zamiast tego używać wartościfeed_label
. Więcej informacji znajdziesz w artykule pomocy dotyczącym etykiety pliku danych.Pamiętaj, że przesłanie kodu kraju w sekcji
feed_label
nie powoduje automatycznego włączenia wyświetlania reklam w danym kraju. Najpierw musisz skonfigurować kierowanie geograficzne.campaign_priority
Priorytet kampanii produktowej. Kampanie o wyższym priorytecie mają pierwszeństwo przed tymi o niższym priorytecie.
enable_local
Opcja włączenia reklam produktów sprzedawanych w lokalnych sklepach w ramach tej kampanii.
Produkty dostępne lokalnie są domyślnie włączone, jeśli jest dostępny asortyment. Możesz je filtrować za pomocą grup informacji o produktach.
language
Możesz wybrać kilka języków, aby wyświetlać reklamy określonym grupom klientów.
Cele konwersji
Możesz zastąpić cele konwersji na poziomie klienta, aktualizując cele konwersji na poziomie kampanii w ten sposób:
Java
/** Retrieves the list of customer conversion goals. */ private static List<CustomerConversionGoal> getCustomerConversionGoals( GoogleAdsClient googleAdsClient, long customerId) { String query = "SELECT customer_conversion_goal.category, customer_conversion_goal.origin " + "FROM customer_conversion_goal"; List<CustomerConversionGoal> customerConversionGoals = new ArrayList<>(); try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) { // The number of conversion goals is typically less than 50, so we use // GoogleAdsService.search instead of search_stream. SearchPagedResponse response = googleAdsServiceClient.search(Long.toString(customerId), query); for (GoogleAdsRow googleAdsRow : response.iterateAll()) { customerConversionGoals.add(googleAdsRow.getCustomerConversionGoal()); } } return customerConversionGoals; } /** Creates a list of MutateOperations that override customer conversion goals. */ private static List<MutateOperation> createConversionGoalOperations( long customerId, List<CustomerConversionGoal> customerConversionGoals) { List<MutateOperation> mutateOperations = new ArrayList<>(); // To override the customer conversion goals, we will change the // biddability of each of the customer conversion goals so that only // the desired conversion goal is biddable in this campaign. for (CustomerConversionGoal customerConversionGoal : customerConversionGoals) { ConversionActionCategory category = customerConversionGoal.getCategory(); ConversionOrigin origin = customerConversionGoal.getOrigin(); String campaignConversionGoalResourceName = ResourceNames.campaignConversionGoal( customerId, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, category, origin); CampaignConversionGoal.Builder campaignConversionGoalBuilder = CampaignConversionGoal.newBuilder().setResourceName(campaignConversionGoalResourceName); // Change the biddability for the campaign conversion goal. // Set biddability to True for the desired (category, origin). // Set biddability to False for all other conversion goals. // Note: // 1- It is assumed that this Conversion Action // (category=PURCHASE, origin=WEBSITE) exists in this account. // 2- More than one goal can be biddable if desired. This example // shows only one. if (category == ConversionActionCategory.PURCHASE && origin == ConversionOrigin.WEBSITE) { campaignConversionGoalBuilder.setBiddable(true); } else { campaignConversionGoalBuilder.setBiddable(false); } CampaignConversionGoal campaignConversionGoal = campaignConversionGoalBuilder.build(); CampaignConversionGoalOperation campaignConversionGoalOperation = CampaignConversionGoalOperation.newBuilder() .setUpdate(campaignConversionGoal) .setUpdateMask(FieldMasks.allSetFieldsOf(campaignConversionGoal)) .build(); mutateOperations.add( MutateOperation.newBuilder() .setCampaignConversionGoalOperation(campaignConversionGoalOperation) .build()); } return mutateOperations; }
C#
/// <summary> /// Creates a MutateOperation that links an asset to an asset group. /// </summary> /// <param name="fieldType">The field type of the asset to be linked.</param> /// <param name="linkedEntityResourceName">The resource name of the entity (asset group or /// campaign) to link the asset to.</param> /// <param name="assetResourceName">The resource name of the text asset to be /// linked.</param> /// <param name="brandGuidelinesEnabled">Whether or not to enable brand guidelines.</param> /// <returns>A MutateOperation that links an asset to an asset group.</returns> private MutateOperation CreateLinkAssetOperation( AssetFieldType fieldType, string linkedEntityResourceName, string assetResourceName, bool brandGuidelinesEnabled = false) { if (brandGuidelinesEnabled) { return new MutateOperation() { CampaignAssetOperation = new CampaignAssetOperation() { Create = new CampaignAsset() { FieldType = fieldType, Campaign = linkedEntityResourceName, Asset = assetResourceName } } }; } else { return new MutateOperation() { AssetGroupAssetOperation = new AssetGroupAssetOperation() { Create = new AssetGroupAsset() { FieldType = fieldType, AssetGroup = linkedEntityResourceName, Asset = assetResourceName } } }; } }
PHP
private static function getCustomerConversionGoals( GoogleAdsClient $googleAdsClient, int $customerId ): array { $customerConversionGoals = []; $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves all customer conversion goals. $query = 'SELECT customer_conversion_goal.category, customer_conversion_goal.origin ' . 'FROM customer_conversion_goal'; // The number of conversion goals is typically less than 50 so we use a search request // instead of search stream. $response = $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query)); // Iterates over all rows in all pages and builds the list of conversion goals. foreach ($response->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ $customerConversionGoals[] = [ 'category' => $googleAdsRow->getCustomerConversionGoal()->getCategory(), 'origin' => $googleAdsRow->getCustomerConversionGoal()->getOrigin() ]; } return $customerConversionGoals; } /** * Creates a list of MutateOperations that override customer conversion goals. * * @param int $customerId the customer ID * @param array $customerConversionGoals the list of customer conversion goals that will be * overridden * @return MutateOperation[] a list of MutateOperations that update campaign conversion goals */ private static function createConversionGoalOperations( int $customerId, array $customerConversionGoals ): array { $operations = []; // To override the customer conversion goals, we will change the biddability of each of the // customer conversion goals so that only the desired conversion goal is biddable in this // campaign. foreach ($customerConversionGoals as $customerConversionGoal) { $campaignConversionGoal = new CampaignConversionGoal([ 'resource_name' => ResourceNames::forCampaignConversionGoal( $customerId, self::PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, ConversionActionCategory::name($customerConversionGoal['category']), ConversionOrigin::name($customerConversionGoal['origin']) ) ]); // Changes the biddability for the campaign conversion goal. // Sets biddability to true for the desired (category, origin). // Sets biddability to false for all other conversion goals. // Note: // 1- It is assumed that this Conversion Action // (category=PURCHASE, origin=WEBSITE) exists in this account. // 2- More than one goal can be biddable if desired. This example // shows only one. if ( $customerConversionGoal["category"] === ConversionActionCategory::PURCHASE && $customerConversionGoal["origin"] === ConversionOrigin::WEBSITE ) { $campaignConversionGoal->setBiddable(true); } else { $campaignConversionGoal->setBiddable(false); } $operations[] = new MutateOperation([ 'campaign_conversion_goal_operation' => new CampaignConversionGoalOperation([ 'update' => $campaignConversionGoal, // Sets the update mask on the operation. Here the update mask will be a list // of all the fields that were set on the update object. 'update_mask' => FieldMasks::allSetFieldsOf($campaignConversionGoal) ]) ]); } return $operations; }
Python
def get_customer_conversion_goals(client, customer_id): """Retrieves the list of customer conversion goals. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. Returns: a list of dicts containing the category and origin of customer conversion goals. """ ga_service = client.get_service("GoogleAdsService") customer_conversion_goals = [] query = """ SELECT customer_conversion_goal.category, customer_conversion_goal.origin FROM customer_conversion_goal """ # The number of conversion goals is typically less than 50 so we use # GoogleAdsService.search instead of search_stream. search_request = client.get_type("SearchGoogleAdsRequest") search_request.customer_id = customer_id search_request.query = query results = ga_service.search(request=search_request) # Iterate over the results and build the list of conversion goals. for row in results: customer_conversion_goals.append( { "category": row.customer_conversion_goal.category, "origin": row.customer_conversion_goal.origin, } ) return customer_conversion_goals def create_conversion_goal_operations( client, customer_id, customer_conversion_goals, ): """Creates a list of MutateOperations that override customer conversion goals. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. customer_conversion_goals: the list of customer conversion goals that will be overridden. Returns: MutateOperations that update campaign conversion goals. """ campaign_conversion_goal_service = client.get_service( "CampaignConversionGoalService" ) operations = [] # To override the customer conversion goals, we will change the # biddability of each of the customer conversion goals so that only # the desired conversion goal is biddable in this campaign. for customer_conversion_goal in customer_conversion_goals: mutate_operation = client.get_type("MutateOperation") campaign_conversion_goal = ( mutate_operation.campaign_conversion_goal_operation.update ) campaign_conversion_goal.resource_name = ( campaign_conversion_goal_service.campaign_conversion_goal_path( customer_id, _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, customer_conversion_goal["category"].name, customer_conversion_goal["origin"].name, ) ) # Change the biddability for the campaign conversion goal. # Set biddability to True for the desired (category, origin). # Set biddability to False for all other conversion goals. # Note: # 1- It is assumed that this Conversion Action # (category=PURCHASE, origin=WEBSITE) exists in this account. # 2- More than one goal can be biddable if desired. This example # shows only one. if ( customer_conversion_goal["category"] == client.enums.ConversionActionCategoryEnum.PURCHASE and customer_conversion_goal["origin"] == client.enums.ConversionOriginEnum.WEBSITE ): biddable = True else: biddable = False campaign_conversion_goal.biddable = biddable field_mask = protobuf_helpers.field_mask( None, campaign_conversion_goal._pb ) client.copy_from( mutate_operation.campaign_conversion_goal_operation.update_mask, field_mask, ) operations.append(mutate_operation) return operations
Ruby
def _get_customer_conversion_goals(client, customer_id) query = <<~EOD SELECT customer_conversion_goal.category, customer_conversion_goal.origin FROM customer_conversion_goal EOD customer_conversion_goals = [] ga_service = client.service.google_ads # The number of conversion goals is typically less than 50 so we use # GoogleAdsService.search instead of search_stream. response = ga_service.search( customer_id: customer_id, query: query, ) # Iterate over the results and build the list of conversion goals. response.each do |row| customer_conversion_goals << { "category" => row.customer_conversion_goal.category, "origin" => row.customer_conversion_goal.origin } end customer_conversion_goals end def create_conversion_goal_operations(client, customer_id, customer_conversion_goals) campaign_conversion_goal_service = client.service.campaign_conversion_goal operations = [] # To override the customer conversion goals, we will change the # biddability of each of the customer conversion goals so that only # the desired conversion goal is biddable in this campaign. customer_conversion_goals.each do |customer_conversion_goal| operations << client.operation.mutate do |m| m.campaign_conversion_goal_operation = client.operation.campaign_conversion_goal do |op| op.update = client.resource.campaign_conversion_goal do |ccg| ccg.resource_name = client.path.campaign_conversion_goal( customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, customer_conversion_goal["category"].to_s, customer_conversion_goal["origin"].to_s) # Change the biddability for the campaign conversion goal. # Set biddability to True for the desired (category, origin). # Set biddability to False for all other conversion goals. # Note: # 1- It is assumed that this Conversion Action # (category=PURCHASE, origin=WEBSITE) exists in this account. # 2- More than one goal can be biddable if desired. This example # shows only one. ccg.biddable = (customer_conversion_goal["category"] == :PURCHASE && customer_conversion_goal["origin"] == :WEBSITE) end op.update_mask = Google::Ads::GoogleAds::FieldMaskUtil.all_set_fields_of(op.update) end end end operations end
Perl
sub get_customer_conversion_goals { my ($api_client, $customer_id) = @_; my $customer_conversion_goals = []; # Create a query that retrieves all customer conversion goals. my $query = "SELECT customer_conversion_goal.category, customer_conversion_goal.origin " . "FROM customer_conversion_goal"; # The number of conversion goals is typically less than 50 so we use # GoogleAdsService->search() method instead of search_stream(). my $search_response = $api_client->GoogleAdsService()->search({ customerId => $customer_id, query => $query }); # Iterate over the results and build the list of conversion goals. foreach my $google_ads_row (@{$search_response->{results}}) { push @$customer_conversion_goals, { category => $google_ads_row->{customerConversionGoal}{category}, origin => $google_ads_row->{customerConversionGoal}{origin}}; } return $customer_conversion_goals; } # Creates a list of MutateOperations that override customer conversion goals. sub create_conversion_goal_operations { my ($customer_id, $customer_conversion_goals) = @_; my $operations = []; # To override the customer conversion goals, we will change the biddability of # each of the customer conversion goals so that only the desired conversion goal # is biddable in this campaign. foreach my $customer_conversion_goal (@$customer_conversion_goals) { my $campaign_conversion_goal = Google::Ads::GoogleAds::V19::Resources::CampaignConversionGoal->new({ resourceName => Google::Ads::GoogleAds::V19::Utils::ResourceNames::campaign_conversion_goal( $customer_id, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, $customer_conversion_goal->{category}, $customer_conversion_goal->{origin})}); # Change the biddability for the campaign conversion goal. # Set biddability to true for the desired (category, origin). # Set biddability to false for all other conversion goals. # Note: # 1- It is assumed that this Conversion Action # (category=PURCHASE, origin=WEBSITE) exists in this account. # 2- More than one goal can be biddable if desired. This example # shows only one. if ( $customer_conversion_goal->{category} eq PURCHASE && $customer_conversion_goal->{origin} eq WEBSITE) { $campaign_conversion_goal->{biddable} = "true"; } else { $campaign_conversion_goal->{biddable} = "false"; } push @$operations, Google::Ads::GoogleAds::V19::Services::GoogleAdsService::MutateOperation ->new({ campaignConversionGoalOperation => Google::Ads::GoogleAds::V19::Services::CampaignConversionGoalService::CampaignConversionGoalOperation ->new({ update => $campaign_conversion_goal, # Set the update mask on the operation. Here the update mask will be # a list of all the fields that were set on the update object. updateMask => all_set_fields_of($campaign_conversion_goal)})}); } return $operations; }
Raporty Zakupy
Aby pobrać dane podsumowane według segmentów produktów, np. segments.product_item_id
, użyj parametru shopping_performance_view
.
SELECT
segments.product_item_id,
metrics.clicks,
metrics.cost_micros,
metrics.impressions,
metrics.conversions,
metrics.all_conversions,
campaign.advertising_channel_type
FROM shopping_performance_view
WHERE
campaign.advertising_channel_type = 'PERFORMANCE_MAX'
AND segments.date DURING LAST_30_DAYS
AND metrics.clicks > 0
ORDER BY
metrics.all_conversions DESC,
metrics.conversions DESC,
metrics.clicks DESC,
metrics.cost_micros DESC,
metrics.impressions DESC
Użyj zapytania asset_group_product_group_view
, aby pobrać dane takie jak kliknięcia, konwersje i wyświetlenia grupy informacji o produktach powiązanej z tą grupą komponentów.
Reklamy pojazdów
Reklamodawcy mogą używać reklam pojazdów do promowania swojego asortymentu pojazdów. Aby to zrobić, muszą przesłać plik danych o pojazdach do Merchant Center, a następnie zarządzać reklamami za pomocą kampanii Performance Max z plikami danych o pojazdach.
Aby utworzyć kampanię Performance Max z plikiem danych o pojazdach za pomocą interfejsu Google Ads API, utwórz kampanię sprzedażową i ustaw listing_type
na VEHICLES
.