As recomendações podem melhorar suas campanhas de várias maneiras:
- Apresentar recursos novos e relevantes
- Aproveite melhor seu orçamento com lances, palavras-chave e anúncios aprimorados
- Aumentar a performance e a eficiência geral das suas campanhas
Para aumentar as pontuações de otimização, use o
RecommendationService para recuperar
recomendações e, em seguida, aplique ou dispense conforme necessário. Você também pode
assinar a aplicação automática
de recomendações usando o RecommendationSubscriptionService.
Pontuação de otimização
Vídeo: pontuação de otimização
A pontuação de otimização é uma estimativa da performance da sua conta do Google Ads e está disponível nos níveis Customer e Campaign.
Há métricas relacionadas à otimização disponíveis para relatórios de customer e campaign:
- O
metrics.optimization_score_urlfornece um link direto para a conta e permite conferir informações sobre as recomendações relacionadas na interface do Google Ads. - O
metrics.optimization_score_upliftmostra o quanto a pontuação de otimização aumentaria se todas as recomendações relacionadas fossem aplicadas. É uma estimativa baseada em todas as recomendações disponíveis como um todo, não apenas na soma das pontuações de aumento de cada recomendação.
Para agrupar e ordenar as recomendações retornadas, segmente essas duas métricas por tipo de recomendação usando segments.recommendation_type na consulta.
Tipos de recomendação
Tipos de recomendação com suporte total
| RecommendationType | Descrição |
|---|---|
CAMPAIGN_BUDGET |
Corrigir campanhas limitadas pelo orçamento |
KEYWORD |
Adicionar novas palavras-chave |
TEXT_AD |
Adicionar sugestões de anúncios |
TARGET_CPA_OPT_IN |
Fazer lances de CPA desejado |
MAXIMIZE_CONVERSIONS_OPT_IN |
Definir lances com a estratégia "Maximizar conversões" |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
Fazer lances com a estratégia "Maximizar o valor da conversão" |
ENHANCED_CPC_OPT_IN |
Definir lances com o CPC otimizado |
MAXIMIZE_CLICKS_OPT_IN |
Definir lances com a estratégia "Maximizar cliques" |
OPTIMIZE_AD_ROTATION |
Usar a rotação de anúncios otimizada |
MOVE_UNUSED_BUDGET |
Mover orçamentos não utilizados para orçamentos limitados |
TARGET_ROAS_OPT_IN |
Definir lances com o ROAS desejado |
FORECASTING_CAMPAIGN_BUDGET |
Corrigir campanhas que devem ser limitadas pelo orçamento no futuro |
RESPONSIVE_SEARCH_AD |
Adicionar um novo anúncio responsivo de pesquisa |
MARGINAL_ROI_CAMPAIGN_BUDGET |
Ajustar o orçamento da campanha para aumentar o ROI |
USE_BROAD_MATCH_KEYWORD |
Use a correspondência ampla para campanhas com base em conversões e lances automáticos |
RESPONSIVE_SEARCH_AD_ASSET |
Adicionar recursos de anúncios responsivos de pesquisa a um anúncio |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
Melhorar a qualidade de um anúncio responsivo de pesquisa |
DISPLAY_EXPANSION_OPT_IN |
Atualizar uma campanha para usar a expansão de display |
SEARCH_PARTNERS_OPT_IN |
Ampliar o alcance com parceiros de pesquisa do Google |
CUSTOM_AUDIENCE_OPT_IN |
Criar um público-alvo personalizado |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
Melhorar a qualidade dos anúncios nas campanhas Geração de demanda |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
Fazer upgrade de uma campanha inteligente do Shopping para uma campanha Performance Max |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
Fazer upgrade de uma campanha local legada para uma campanha Performance Max |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX |
Migrar ofertas segmentadas por campanhas padrão do Shopping para campanhas Performance Max |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX |
Migrar anúncios dinâmicos de pesquisa para campanhas Performance Max |
PERFORMANCE_MAX_OPT_IN |
Criar campanhas Performance Max na sua conta |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH |
Melhorar a força do grupo de recursos de uma campanha Performance Max para uma classificação "Excelente" |
PERFORMANCE_MAX_FINAL_URL_OPT_IN |
Ativar a expansão de URL final nas campanhas Performance Max |
RAISE_TARGET_CPA_BID_TOO_LOW |
Aumente o CPA desejado quando ele estiver muito baixo e houver poucas ou nenhuma conversão |
FORECASTING_SET_TARGET_ROAS |
Aumente o orçamento antes de um evento sazonal que deve aumentar o tráfego e mude a estratégia de lances de "Maximizar o valor da conversão" para "ROAS desejado". |
LEAD_FORM_ASSET |
Adicionar recursos de formulário de lead a uma campanha |
CALLOUT_ASSET |
Adicionar recursos de frase de destaque no nível da campanha ou do cliente |
SITELINK_ASSET |
Adicionar recursos de sitelink no nível da campanha ou do cliente |
CALL_ASSET |
Adicionar recursos de ligação no nível da campanha ou do cliente |
SHOPPING_ADD_AGE_GROUP |
Adicione o atributo idade às ofertas que foram rebaixadas por causa de uma faixa etária ausente |
SHOPPING_ADD_COLOR |
Adicione uma cor às ofertas que foram rebaixadas devido à falta de uma cor. |
SHOPPING_ADD_GENDER |
Adicione um gênero às ofertas que forem rebaixadas devido à ausência dessa informação. |
SHOPPING_ADD_GTIN |
Adicione um GTIN (Número Global de Item Comercial) às ofertas que forem rebaixadas devido à falta de um GTIN. |
SHOPPING_ADD_MORE_IDENTIFIERS |
Adicione mais identificadores às ofertas que foram rebaixadas devido à falta de identificadores. |
SHOPPING_ADD_SIZE |
Adicione o tamanho às ofertas que foram rebaixadas devido à falta dessa informação. |
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN |
Adicione produtos para uma campanha de veiculação. |
SHOPPING_FIX_DISAPPROVED_PRODUCTS |
Corrigir produtos reprovados |
SHOPPING_TARGET_ALL_OFFERS |
Crie uma campanha abrangente que abranja todas as ofertas. |
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT |
Corrigir problemas de suspensão de conta do Merchant Center |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING |
Corrigir problemas de aviso de suspensão de conta do Merchant Center |
DYNAMIC_IMAGE_EXTENSION_OPT_IN |
Ative as extensões de imagem dinâmicas na conta. |
RAISE_TARGET_CPA |
Aumentar a meta de CPA |
LOWER_TARGET_ROAS |
Reduzir o ROAS alvo |
FORECASTING_SET_TARGET_CPA |
Defina um CPA alvo para campanhas que ainda não tenham um especificado, antes de um evento sazonal que se prevê que aumentará o tráfego. |
SET_TARGET_CPA |
Defina um CPA alvo para campanhas que não tenham um especificado. |
SET_TARGET_ROAS |
Defina uma meta de ROAS para campanhas que não tenham uma especificada. |
REFRESH_CUSTOMER_MATCH_LIST |
Atualizar uma lista de clientes que não foi atualizada nos últimos 90 dias. |
IMPROVE_GOOGLE_TAG_COVERAGE |
Implante a tag do Google em mais páginas. |
KEYWORD_MATCH_TYPE (obsoleto) |
Obsoleto, use USE_BROAD_MATCH_KEYWORD em vez disso. |
Assista a este vídeo para saber mais.
Lidar com tipos não suportados
Obter recomendações
Assim como a maioria das outras entidades na API do Google Ads, Recommendation objetos são obtidos usando oGoogleAdsService.SearchStream com uma consulta em Linguagem de Consulta do Google Ads.
Para cada tipo de recomendação, os detalhes são fornecidos em um campo específico para aquela recomendação. Por exemplo, CAMPAIGN_BUDGET Os detalhes da recomendação estão nocampaign_budget_recommendation campo, e estão envoltos em umCampaignBudgetRecommendation objeto.
Encontre todos os campos específicos de recomendação norecommendation campo da união.
Impacto da recomendação
Alguns tipos de recomendação são exibidos noimpact campo da recomendação.
RecommendationImpact
contém uma estimativa do impacto na performance da conta como resultado da
aplicação da recomendação. As seguintes métricas de recomendação estão disponíveis nos campos impact.base_metrics e impact.potential_metrics:
impressionsclickscost_microsconversionsall_conversionsvideo_views
Mesmo quando o campo impact está preenchido, a disponibilidade de métricas varia de acordo com o tipo de recomendação e de campanha, entre outros fatores. Em geral, verifique a disponibilidade de cada métrica de impacto antes de tentar usá-la.
Exemplo de código
O código de exemplo a seguir recupera todas as recomendações disponíveis e rejeitadas do tipo KEYWORD de uma conta e imprime alguns de seus detalhes:
Java
try (GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient(); RecommendationServiceClient recommendationServiceClient = googleAdsClient.getLatestVersion().createRecommendationServiceClient()) { // Creates a query that retrieves keyword recommendations. String query = "SELECT recommendation.resource_name, " + " recommendation.campaign, " + " recommendation.keyword_recommendation " + "FROM recommendation " + "WHERE recommendation.type = KEYWORD"; // Constructs the SearchGoogleAdsStreamRequest. SearchGoogleAdsStreamRequest request = SearchGoogleAdsStreamRequest.newBuilder() .setCustomerId(Long.toString(customerId)) .setQuery(query) .build(); // Issues the search stream request to detect keyword recommendations that exist for the // customer account. ServerStream<SearchGoogleAdsStreamResponse> stream = googleAdsServiceClient.searchStreamCallable().call(request); // Creates apply operations for all the recommendations found. List<ApplyRecommendationOperation> applyRecommendationOperations = new ArrayList<>(); for (SearchGoogleAdsStreamResponse response : stream) { for (GoogleAdsRow googleAdsRow : response.getResultsList()) { Recommendation recommendation = googleAdsRow.getRecommendation(); System.out.printf( "Keyword recommendation '%s' was found for campaign '%s'%n", recommendation.getResourceName(), recommendation.getCampaign()); KeywordInfo keyword = recommendation.getKeywordRecommendation().getKeyword(); System.out.printf("\tKeyword = '%s'%n", keyword.getText()); System.out.printf("\tMatch type = '%s'%n", keyword.getMatchType()); // Creates an ApplyRecommendationOperation that will apply this recommendation, and adds // it to the list of operations. applyRecommendationOperations.add(buildRecommendationOperation(recommendation)); } }
C#
// Get the GoogleAdsServiceClient. GoogleAdsServiceClient googleAdsService = client.GetService( Services.V22.GoogleAdsService); // Creates a query that retrieves keyword recommendations. string query = "SELECT recommendation.resource_name, " + "recommendation.campaign, recommendation.keyword_recommendation " + "FROM recommendation WHERE " + $"recommendation.type = KEYWORD"; List<ApplyRecommendationOperation> operations = new List<ApplyRecommendationOperation>(); try { // Issue a search request. googleAdsService.SearchStream(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { Console.WriteLine($"Found {resp.Results.Count} recommendations."); foreach (GoogleAdsRow googleAdsRow in resp.Results) { Recommendation recommendation = googleAdsRow.Recommendation; Console.WriteLine("Keyword recommendation " + $"{recommendation.ResourceName} was found for campaign " + $"{recommendation.Campaign}."); if (recommendation.KeywordRecommendation != null) { KeywordInfo keyword = recommendation.KeywordRecommendation.Keyword; Console.WriteLine($"Keyword = {keyword.Text}, type = " + "{keyword.MatchType}"); } operations.Add( BuildApplyRecommendationOperation(recommendation.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
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves keyword recommendations. $query = 'SELECT recommendation.resource_name, recommendation.campaign, ' . 'recommendation.keyword_recommendation ' . 'FROM recommendation ' . 'WHERE recommendation.type = KEYWORD '; // Issues a search request to detect keyword recommendations that exist for the // customer account. $response = $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query)); $operations = []; // Iterates over all rows in all pages and prints the requested field values for // the recommendation in each row. foreach ($response->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ $recommendation = $googleAdsRow->getRecommendation(); printf( "Keyword recommendation with resource name '%s' was found for campaign " . "with resource name '%s':%s", $recommendation->getResourceName(), $recommendation->getCampaign(), PHP_EOL ); if (!is_null($recommendation->getKeywordRecommendation())) { $keyword = $recommendation->getKeywordRecommendation()->getKeyword(); printf( "\tKeyword = '%s'%s\ttype = '%s'%s", $keyword->getText(), PHP_EOL, KeywordMatchType::name($keyword->getMatchType()), PHP_EOL ); } // Creates an ApplyRecommendationOperation that will be used to apply this // recommendation, and adds it to the list of operations. $operations[] = self::buildRecommendationOperation($recommendation->getResourceName()); }
Python
googleads_service = client.get_service("GoogleAdsService") query: str = """ SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD""" # Detects keyword recommendations that exist for the customer account. response: Iterable[GoogleAdsRow] = googleads_service.search( customer_id=customer_id, query=query ) operations: List[ApplyRecommendationOperation] = [] for row in response: recommendation = row.recommendation print( f"Keyword recommendation ('{recommendation.resource_name}') " f"was found for campaign '{recommendation.campaign}." ) keyword = recommendation.keyword_recommendation.keyword print( f"\tKeyword = '{keyword.text}'\n" f"\tType = '{keyword.match_type}'" ) # Create an ApplyRecommendationOperation that will be used to apply # this recommendation, and add it to the list of operations. operations.append( build_recommendation_operation(client, recommendation.resource_name) )
Ruby
query = <<~QUERY SELECT recommendation.resource_name, recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD QUERY google_ads_service = client.service.google_ads response = google_ads_service.search( customer_id: customer_id, query: query, ) operations = response.each do |row| recommendation = row.recommendation puts "Keyword recommendation ('#{recommendation.resource_name}') was found for "\ "campaign '#{recommendation.campaign}'." if recommendation.keyword_recommendation keyword = recommendation.keyword_recommendation.keyword puts "\tKeyword = '#{keyword.text}'" puts "\ttype = '#{keyword.match_type}'" end build_recommendation_operation(client, recommendation.resource_name) end
Perl
# Create the search query. my $search_query = "SELECT recommendation.resource_name, " . "recommendation.campaign, recommendation.keyword_recommendation " . "FROM recommendation " . "WHERE recommendation.type = KEYWORD"; # Get the GoogleAdsService. my $google_ads_service = $api_client->GoogleAdsService(); my $search_stream_handler = Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({ service => $google_ads_service, request => { customerId => $customer_id, query => $search_query }}); # Create apply operations for all the recommendations found. my $apply_recommendation_operations = (); $search_stream_handler->process_contents( sub { my $google_ads_row = shift; my $recommendation = $google_ads_row->{recommendation}; printf "Keyword recommendation '%s' was found for campaign '%s'.\n", $recommendation->{resourceName}, $recommendation->{campaign}; my $keyword = $recommendation->{keywordRecommendation}{keyword}; printf "\tKeyword = '%s'\n", $keyword->{text}; printf "\tMatch type = '%s'\n", $keyword->{matchType}; # Creates an ApplyRecommendationOperation that will apply this recommendation, and adds # it to the list of operations. push @$apply_recommendation_operations, build_recommendation_operation($recommendation); });
curl
# Gets keyword recommendations. # # Variables: # API_VERSION, # CUSTOMER_ID, # DEVELOPER_TOKEN, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/googleAds:search" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "query": " SELECT recommendation.campaign, recommendation.keyword_recommendation FROM recommendation WHERE recommendation.type = KEYWORD " } EOF
Entre em ação
Qualquer recomendação obtida pode ser aplicada ou rejeitada.
Dependendo do tipo de recomendação, as recomendações podem mudar diariamente ou até mesmo várias vezes ao dia. Quando isso acontece, o objeto de recomendaçãoresource_name pode se tornar obsoleto após a recomendação ser recuperada.
É uma boa prática agir de acordo com as recomendações logo após a recuperação dos dados.
Aplicar recomendações
Você pode aplicar recomendações ativas ou rejeitadas com oApplyRecommendation método doRecommendationService.
Os tipos de recomendação podem ter parâmetros obrigatórios ou opcionais. A maioria das recomendações vem com valores recomendados que são usados por padrão.
A configuração de contas para aplicação automática de recomendações não é compatível com todos os tipos de recomendação. No entanto, é possível implementar um comportamento semelhante para os tipos de recomendação totalmente compatíveis com a API Google Ads.
Consulte o exemplo de código DetectAndApplyRecommendations para saber mais.
Use oapply_parameters campo de união deApplyRecommendationOperation Aplicar recomendações com valores de parâmetros específicos. Cada tipo de recomendação adequado possui seu próprio campo.
Qualquer tipo de recomendação não listado no campo apply_parameters não usa esses valores de parâmetro.
Exemplo de código
O código a seguir demonstra como construir oApplyRecommendationOperation e como substituir os valores recomendados, caso queira usá-los de forma personalizada.
Java
/** Creates and returns an ApplyRecommendationOperation to apply the given recommendation. */ private ApplyRecommendationOperation buildRecommendationOperation(Recommendation recommendation) { // If you have a recommendation ID instead of a resource name, you can create a resource name // like this: // String resourceName = ResourceNames.recommendation(customerId, recommendationId); // Creates a builder to construct the operation. Builder operationBuilder = ApplyRecommendationOperation.newBuilder(); // Each recommendation type has optional parameters to override the recommended values. Below is // an example showing how to override a recommended ad when a TextAdRecommendation is applied. // operationBuilder.getTextAdBuilder().getAdBuilder().setResourceName("INSERT_AD_RESOURCE_NAME"); // Sets the operation's resource name to the resource name of the recommendation to apply. operationBuilder.setResourceName(recommendation.getResourceName()); return operationBuilder.build(); }
C#
private ApplyRecommendationOperation BuildApplyRecommendationOperation( string recommendationResourceName ) { // If you have a recommendation_id instead of the resource_name you can create a // resource name from it like this: // string recommendationResourceName = // ResourceNames.Recommendation(customerId, recommendationId) // Each recommendation type has optional parameters to override the recommended values. // This is an example to override a recommended ad when a TextAdRecommendation is // applied. // For details, please read // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation. /* Ad overridingAd = new Ad() { Id = "INSERT_AD_ID_AS_LONG_HERE" }; applyRecommendationOperation.TextAd = new TextAdParameters() { Ad = overridingAd }; */ ApplyRecommendationOperation applyRecommendationOperation = new ApplyRecommendationOperation() { ResourceName = recommendationResourceName }; return applyRecommendationOperation; }
PHP
private static function buildRecommendationOperation( string $recommendationResourceName ): ApplyRecommendationOperation { // If you have a recommendation_id instead of the resource name, you can create a resource // name from it like this: /* $recommendationResourceName = ResourceNames::forRecommendation($customerId, $recommendationId); */ // Each recommendation type has optional parameters to override the recommended values. // This is an example to override a recommended ad when a TextAdRecommendation is applied. // For details, please read // https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation. /* $overridingAd = new Ad([ 'id' => 'INSERT_AD_ID_AS_INTEGER_HERE' ]); $applyRecommendationOperation->setTextAd(new TextAdParameters(['ad' => $overridingAd])); */ // Issues a mutate request to apply the recommendation. $applyRecommendationOperation = new ApplyRecommendationOperation(); $applyRecommendationOperation->setResourceName($recommendationResourceName); return $applyRecommendationOperation; }
Python
def build_recommendation_operation( client: GoogleAdsClient, recommendation: str ) -> ApplyRecommendationOperation: """Creates a ApplyRecommendationOperation to apply the given recommendation. Args: client: an initialized GoogleAdsClient instance. recommendation: a resource name for the recommendation to be applied. """ # If you have a recommendation ID instead of a resource name, you can create # a resource name like this: # # googleads_service = client.get_service("GoogleAdsService") # resource_name = googleads_service.recommendation_path( # customer_id, recommendation.id # ) operation: ApplyRecommendationOperation = client.get_type( "ApplyRecommendationOperation" ) # Each recommendation type has optional parameters to override the # recommended values. Below is an example showing how to override a # recommended ad when a TextAdRecommendation is applied. # # operation.text_ad.ad.resource_name = "INSERT_AD_RESOURCE_NAME" # # For more details, see: # https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation#apply_parameters operation.resource_name = recommendation return operation
Ruby
def build_recommendation_operation(client, recommendation) # If you have a recommendation_id instead of the resource_name # you can create a resource name from it like this: # recommendation_resource = # client.path.recommendation(customer_id, recommendation_id) operations = client.operation.apply_recommendation operations.resource_name = recommendation_resource # Each recommendation type has optional parameters to override the recommended # values. This is an example to override a recommended ad when a # TextAdRecommendation is applied. # # text_ad_parameters = client.resource.text_ad_parameters do |tap| # tap.ad = client.resource.ad do |ad| # ad.id = "INSERT_AD_ID_AS_INTEGER_HERE" # end # end # operation.text_ad = text_ad_parameters # # For more details, see: # https://developers.google.com/google-ads/api/reference/rpc/latest/ApplyRecommendationOperation#apply_parameters return operation end
Perl
sub build_recommendation_operation { my ($recommendation) = @_; # If you have a recommendation ID instead of a resource name, you can create a resource # name like this: # my $recommendation_resource_name = # Google::Ads::GoogleAds::V22::Utils::ResourceNames::recommendation( # $customer_id, $recommendation_id); # Each recommendation type has optional parameters to override the recommended values. # Below is an example showing how to override a recommended ad when a TextAdRecommendation # is applied. # my $overriding_ad = Google::Ads::GoogleAds::V22::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V22::Services::RecommendationService::TextAdParameters # ->new({ad => $overriding_ad}); # $apply_recommendation_operation->{textAd} = $text_ad_parameters; # Create an apply recommendation operation. my $apply_recommendation_operation = Google::Ads::GoogleAds::V22::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
O próximo exemplo chamaApplyRecommendation , enviando as operações de aplicação de recomendação que foram criadas no código anterior.
Java
// Issues a mutate request to apply the recommendations. ApplyRecommendationResponse applyRecommendationsResponse = recommendationServiceClient.applyRecommendation( Long.toString(customerId), applyRecommendationOperations); for (ApplyRecommendationResult applyRecommendationResult : applyRecommendationsResponse.getResultsList()) { System.out.printf( "Applied recommendation with resource name: '%s'.%n", applyRecommendationResult.getResourceName()); }
C#
private void ApplyRecommendation(GoogleAdsClient client, long customerId, List<ApplyRecommendationOperation> operations) { // Get the RecommendationServiceClient. RecommendationServiceClient recommendationService = client.GetService( Services.V22.RecommendationService); ApplyRecommendationRequest applyRecommendationRequest = new ApplyRecommendationRequest() { CustomerId = customerId.ToString(), }; applyRecommendationRequest.Operations.AddRange(operations); ApplyRecommendationResponse response = recommendationService.ApplyRecommendation(applyRecommendationRequest); foreach (ApplyRecommendationResult result in response.Results) { Console.WriteLine("Applied a recommendation with resource name: " + result.ResourceName); } }
PHP
private static function applyRecommendations( GoogleAdsClient $googleAdsClient, int $customerId, array $operations ): void { // Issues a mutate request to apply the recommendations. $recommendationServiceClient = $googleAdsClient->getRecommendationServiceClient(); $response = $recommendationServiceClient->applyRecommendation( ApplyRecommendationRequest::build($customerId, $operations) ); foreach ($response->getResults() as $appliedRecommendation) { /** @var Recommendation $appliedRecommendation */ printf( "Applied a recommendation with resource name: '%s'.%s", $appliedRecommendation->getResourceName(), PHP_EOL ); } }
Python
def apply_recommendations( client: GoogleAdsClient, customer_id: str, operations: List[ApplyRecommendationOperation], ) -> None: """Applies a batch of recommendations. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. operations: a list of ApplyRecommendationOperation messages. """ # Issues a mutate request to apply the recommendations. recommendation_service = client.get_service("RecommendationService") response: ApplyRecommendationResult = ( recommendation_service.apply_recommendation( customer_id=customer_id, operations=operations ) ) for result in response.results: print( "Applied a recommendation with resource name: " f"'{result.resource_name}'." )
Ruby
def apply_recommendations(client, customer_id, operations) # Issues a mutate request to apply the recommendation. recommendation_service = client.service.recommendation response = recommendation_service.apply_recommendation( customer_id: customer_id, operations: [operations], ) response.results.each do |applied_recommendation| puts "Applied recommendation with resource name: '#{applied_recommendation.resource_name}'." end end
Perl
# Issue a mutate request to apply the recommendations. my $apply_recommendation_response = $api_client->RecommendationService()->apply({ customerId => $customer_id, operations => $apply_recommendation_operations }); foreach my $result (@{$apply_recommendation_response->{results}}) { printf "Applied recommendation with resource name: '%s'.\n", $result->{resourceName}; }
curl
# Applies a recommendation. # # Variables: # API_VERSION, # CUSTOMER_ID, # DEVELOPER_TOKEN, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # # RECOMMENDATION_RESOURCE_NAME: The resource name of the recommendation to # apply, from the previous request. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}/recommendations:apply" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "operations": [ { "resourceName": "${RECOMMENDATION_RESOURCE_NAME}" } ] } EOF
Assista a esses vídeos para saber mais
Aplicar parâmetros
Em massa
Erros
Testes
Dispensar recomendações
Vídeo: Dispensar recomendações
Você pode descartar recomendações com oRecommendationService. A estrutura do código é semelhante aaplicando recomendações, mas em vez disso você usaDismissRecommendationOperation eRecommendationService.DismissRecommendation.
Assista a esses vídeos para saber mais
Em massa
Erros
Testes
Aplique recomendações automaticamente
Use o
RecommendationSubscriptionService
para aplicar automaticamente recomendações de um tipo específico.
Para se inscrever em um tipo de recomendação específico, crie um objeto
RecommendationSubscription,
defina o campo type como um dos
tipos de recomendação
compatíveis e defina o campo
status como ENABLED.
Tipos de recomendação compatíveis com assinatura
ENHANCED_CPC_OPT_INKEYWORDKEYWORD_MATCH_TYPELOWER_TARGET_ROASMAXIMIZE_CLICKS_OPT_INOPTIMIZE_AD_ROTATIONRAISE_TARGET_CPARESPONSIVE_SEARCH_ADRESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTHSEARCH_PARTNERS_OPT_INSEARCH_PLUS_OPT_INSET_TARGET_CPASET_TARGET_ROASTARGET_CPA_OPT_INTARGET_ROAS_OPT_INUSE_BROAD_MATCH_KEYWORD
Recuperar assinaturas
Para informações sobre as assinaturas de recomendações de uma conta, consulte o recurso
recommendation_subscription.
Para conferir as mudanças aplicadas automaticamente, consulte o recurso
change_event, filtrando o
change_event.client_type para
GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION.
Recomendações ao criar campanhas
Você pode usar
RecommendationService.GenerateRecommendationsRequest
para gerar recomendações durante a criação de campanhas, para um determinado conjunto de
tipos de recomendação.
GenerateRecommendations aceita como entrada um ID do cliente, um tipo de canal de publicidade que precisa ser SEARCH ou PERFORMANCE_MAX, uma lista de tipos de recomendação a serem gerados e vários pontos de dados dependentes dos tipos especificados. Ele gera uma lista de objetos Recommendation com base nos dados fornecidos. Se não houver dados suficientes para gerar uma recomendação para o recommendation_types solicitado ou se a campanha já estiver no estado recomendado, o conjunto de resultados não vai conter uma recomendação para esse tipo. Verifique se o aplicativo processa o caso em que não há recomendações para os tipos solicitados.
A tabela a seguir descreve os tipos de recomendação que o
GenerateRecommendations aceita e os campos que você precisa fornecer para receber
recomendações desse tipo. Como prática recomendada, envie a solicitação
GenerateRecommendations depois que todas as informações relacionadas aos tipos de recomendação solicitados forem coletadas. Para mais detalhes sobre
campos obrigatórios e opcionais, incluindo campos aninhados, consulte a
documentação de referência.
| RecommendationType | Campos obrigatórios | Campos opcionais |
|---|---|---|
CAMPAIGN_BUDGET |
Para campanhas de pesquisa e Performance Max, os seguintes campos são obrigatórios:
|
|
KEYWORD |
|
|
MAXIMIZE_CLICKS_OPT_IN |
|
|
MAXIMIZE_CONVERSIONS_OPT_IN |
|
|
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
|
|
SET_TARGET_CPA |
|
|
SET_TARGET_ROAS |
|
|
SITELINK_ASSET
Observação: o objeto SitelinkAssetRecommendation
retornado vai conter listas vazias. Se a resposta GenerateRecommendations
contiver um SitelinkAssetRecommendation, ela poderá ser
tratada como um sinal para adicionar pelo menos um recurso de sitelink à campanha. |
|
|
TARGET_CPA_OPT_IN |
|
|
TARGET_ROAS_OPT_IN |
|
Exemplo de fluxo de uso
Suponha que sua empresa seja uma agência de publicidade que oferece aos usuários um fluxo de trabalho de criação de campanhas e você quer oferecer sugestões durante esse fluxo. Use
GenerateRecommendationsRequest
para gerar recomendações sob demanda e incorporá-las
à interface do usuário de criação de campanhas.
O fluxo de uso pode ser semelhante a este:
Um usuário acessa seu aplicativo para criar uma campanha Performance Max.
O usuário fornece algumas informações iniciais como parte do fluxo de criação da campanha. Por exemplo, eles fornecem detalhes para criar um único
SitelinkAssete selecionamTARGET_SPENDcomo estratégia de Lances inteligentes.Você envia um
GenerateRecommendationsRequestque define os seguintes campos:campaign_sitelink_count: definido como1, que é o número de recursos de sitelink na campanha em andamento.bidding_info: defina o campo aninhadobidding_strategy_typecomoTARGET_SPEND.conversion_tracking_status: definido como oConversionTrackingStatusdeste cliente. Para saber como recuperar esse campo, consulte o guia Começar sobre gerenciamento de conversões.Defina
recommendation_typescomo[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN].Defina
advertising_channel_typecomoPERFORMANCE_MAX.customer_id: definido como o ID do cliente que está criando a campanha.
Você pode seguir as recomendações no
GenerateRecommendationsResponse— neste caso, umSitelinkAssetRecommendatione umMaximizeClicksOptInRecommendation—e sugerir ao usuário mostrando-os na interface de criação de campanhas. Se o usuário aceitar uma sugestão, você poderá incorporá-la à solicitação de criação de campanha assim que ele concluir o fluxo de criação.