Las recomendaciones pueden mejorar tus campañas de varias maneras:
- Presentar funciones nuevas y relevantes
- Aprovecha al máximo tu presupuesto con ofertas, palabras clave y anuncios mejorados
- Aumentar el rendimiento y la eficiencia generales de tus campañas
Para aumentar los niveles de optimización, puedes usar RecommendationService
para recuperar recomendaciones y, luego, aplicarlas o descartarlas según corresponda. También puedes suscribirte para aplicar automáticamente recomendaciones con el RecommendationSubscriptionService
.
Nivel de optimización
El nivel de optimización es una estimación de la efectividad de la configuración de tu cuenta de Google Ads para lograr el rendimiento esperado y está disponible en los niveles Customer
y Campaign
.
El objeto Customer.optimization_score_weight
solo está disponible para las cuentas que no son de administrador y se usa para calcular el nivel de optimización general de varias cuentas. Recupera el nivel de optimización y su peso de las cuentas, y multiplícalos (Customer.optimization_score * Customer.optimization_score_weight
) para calcular el nivel de optimización general.
Hay métricas relacionadas con la optimización disponibles para los informes de customer
y campaign
:
- El objeto
metrics.optimization_score_url
proporciona un vínculo directo a la cuenta para ver información sobre las recomendaciones relacionadas en la IU de Google Ads. - El objeto
metrics.optimization_score_uplift
indica cuánto aumentaría el nivel de optimización si se aplicaran todas las recomendaciones relacionadas. Es una estimación basada en todas las recomendaciones disponibles en su conjunto, no solo en la suma de las puntuaciones de incremento de cada recomendación.
Para agrupar y ordenar las recomendaciones devueltas, puedes segmentar ambas métricas por tipo de recomendación con segments.recommendation_type
en tu consulta.
Tipos de recomendación
Tipos de recomendaciones totalmente admitidos
RecommendationType | Descripción |
---|---|
CAMPAIGN_BUDGET |
Cómo corregir las campañas limitadas por el presupuesto |
KEYWORD |
Agrega palabras clave nuevas |
TEXT_AD |
Agregue sugerencias de anuncios |
TARGET_CPA_OPT_IN |
Establece ofertas con el CPA objetivo |
MAXIMIZE_CONVERSIONS_OPT_IN |
Establece ofertas con Maximizar conversiones |
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
Establece ofertas con Maximizar valor de conversión |
ENHANCED_CPC_OPT_IN |
Establece ofertas con el CPC avanzado |
MAXIMIZE_CLICKS_OPT_IN |
Establece ofertas con Maximizar clics |
OPTIMIZE_AD_ROTATION |
Utiliza la rotación de anuncios optimizada |
MOVE_UNUSED_BUDGET |
Transfiere el presupuesto sin utilizar a los presupuestos limitados |
TARGET_ROAS_OPT_IN |
Establece ofertas con el ROAS objetivo |
FORECASTING_CAMPAIGN_BUDGET |
Corrige las campañas que se prevé que se limitarán por el presupuesto en el futuro |
RESPONSIVE_SEARCH_AD |
Agrega un nuevo anuncio de búsqueda responsivo |
MARGINAL_ROI_CAMPAIGN_BUDGET |
Ajusta el presupuesto de la campaña para aumentar el ROI |
USE_BROAD_MATCH_KEYWORD |
Utiliza la concordancia amplia para las campañas basadas en conversiones con ofertas automáticas |
RESPONSIVE_SEARCH_AD_ASSET |
Agrega recursos de anuncio de búsqueda responsivo a un anuncio |
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH |
Mejora la calidad de un anuncio de búsqueda responsivo |
DISPLAY_EXPANSION_OPT_IN |
Actualiza una campaña para usar la expansión en Display |
SEARCH_PARTNERS_OPT_IN |
Expande el alcance con los socios de búsqueda de Google |
CUSTOM_AUDIENCE_OPT_IN |
Cree un público personalizado |
IMPROVE_DEMAND_GEN_AD_STRENGTH |
Mejora la calidad de los anuncios en las campañas de generación de demanda |
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX |
Actualiza una campaña de Shopping inteligente a una campaña de máximo rendimiento |
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX |
Actualiza una campaña local heredada a una campaña de máximo rendimiento |
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX |
Migra las ofertas segmentadas por las campañas de Shopping normales a las campañas de máximo rendimiento existentes |
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX |
Migra los anuncios dinámicos de búsqueda a las campañas de máximo rendimiento |
PERFORMANCE_MAX_OPT_IN |
Crea campañas de máximo rendimiento en tu cuenta |
IMPROVE_PERFORMANCE_MAX_AD_STRENGTH |
Mejora la calidad del grupo de recursos de una campaña de máximo rendimiento hasta obtener una calificación de "Excelente" |
PERFORMANCE_MAX_FINAL_URL_OPT_IN |
Activa la expansión de la URL final para tus campañas de máximo rendimiento |
RAISE_TARGET_CPA_BID_TOO_LOW |
Aumenta el CPA objetivo cuando sea demasiado bajo y haya muy pocas conversiones o ninguna. |
FORECASTING_SET_TARGET_ROAS |
Aumenta el presupuesto antes de un evento de temporada que se prevé que aumentará el tráfico y cambia la estrategia de ofertas de maximizar valor de conversión a ROAS objetivo. |
LEAD_FORM_ASSET |
Agrega recursos de formulario de clientes potenciales a una campaña |
CALLOUT_ASSET |
Agrega recursos de texto destacado a nivel de la campaña o del cliente |
SITELINK_ASSET |
Agrega recursos de vínculos a sitios a nivel de la campaña o del cliente |
CALL_ASSET |
Agrega recursos de llamada a nivel de la campaña o del cliente |
SHOPPING_ADD_AGE_GROUP |
Agrega el atributo edad a las ofertas que se degradan debido a que falta la edad. |
SHOPPING_ADD_COLOR |
Agregar un color a las ofertas que se degradan debido a la falta de un color |
SHOPPING_ADD_GENDER |
Agrega un género a las ofertas que se degradan debido a la falta de un género. |
SHOPPING_ADD_GTIN |
Agrega un GTIN (código comercial global de artículo) a las ofertas que se degradan porque falta el GTIN. |
SHOPPING_ADD_MORE_IDENTIFIERS |
Agrega más identificadores a las ofertas que se degradan por falta de identificadores |
SHOPPING_ADD_SIZE |
Agrega el tamaño a las ofertas que se degradan debido a que falta un tamaño. |
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN |
Agrega productos para que se publiquen en una campaña |
SHOPPING_FIX_DISAPPROVED_PRODUCTS |
Corrige los productos rechazados |
SHOPPING_TARGET_ALL_OFFERS |
Crea una campaña genérica que se oriente a todas las ofertas |
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT |
Cómo corregir problemas relacionados con la suspensión de cuentas de Merchant Center |
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING |
Cómo corregir los problemas relacionados con las advertencias de suspensión de cuentas de Merchant Center |
DYNAMIC_IMAGE_EXTENSION_OPT_IN |
Habilita las extensiones de imagen dinámicas en la cuenta. |
RAISE_TARGET_CPA |
Aumenta el CPA objetivo |
LOWER_TARGET_ROAS |
Disminuir el ROAS objetivo |
FORECASTING_SET_TARGET_CPA |
Establece un CPA objetivo para las campañas que no tienen uno especificado, antes de un evento estacional que se prevé que aumentará el tráfico. |
SET_TARGET_CPA |
Establece un CPA objetivo para las campañas que no tengan uno especificado |
SET_TARGET_ROAS |
Establece un ROAS objetivo para las campañas que no tienen uno especificado |
REFRESH_CUSTOMER_MATCH_LIST |
Actualizar una lista de clientes que no se actualizó en los últimos 90 días |
IMPROVE_GOOGLE_TAG_COVERAGE |
Implementa la etiqueta de Google en más páginas |
KEYWORD_MATCH_TYPE (obsoleto) |
Obsoleto. Usa USE_BROAD_MATCH_KEYWORD en su lugar. |
Mira este video para obtener más información
Cómo controlar tipos no admitidos
Recupera recomendaciones
Al igual que la mayoría de las otras entidades en la API de Google Ads, los objetos Recommendation
se recuperan con GoogleAdsService.SearchStream
con una consulta del lenguaje de búsqueda de Google Ads.
Para cada tipo de recomendación, se proporcionan detalles en un campo específico de la recomendación. Por ejemplo, los detalles de la recomendación CAMPAIGN_BUDGET
se encuentran en el campo campaign_budget_recommendation
y se incluyen en un objeto CampaignBudgetRecommendation
.
Encuentra todos los campos específicos de la recomendación en el campo de unión recommendation
.
Impacto de la recomendación
Algunos tipos de recomendaciones completan el campo impact
de la recomendación.
RecommendationImpact
contiene una estimación del impacto en el rendimiento de la cuenta como resultado de aplicar la recomendación. Las siguientes métricas de recomendación están disponibles en los campos impact.base_metrics
y impact.potential_metrics
:
impressions
clicks
cost_micros
conversions
all_conversions
video_views
Incluso cuando el campo impact
está completado, la disponibilidad de las métricas varía según el tipo de recomendación y el tipo de campaña, entre otros factores. En general, verifica la disponibilidad de cada métrica de impacto antes de intentar usarla.
Ejemplo de código
En el siguiente código de muestra, se recuperan todas las recomendaciones disponibles y descartadas de tipo KEYWORD
de una cuenta y se imprimen algunos de sus detalles:
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.V21.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
Tomar medidas
Cualquier recomendación recuperada se puede aplicar o descartar.
Según el tipo de recomendación, estas pueden cambiar a diario o incluso varias veces al día. Cuando eso sucede, el resource_name
de un objeto de recomendación puede quedar obsoleto después de que se recupera la recomendación.
Se recomienda tomar medidas en función de las recomendaciones poco después de recuperarlas.
Cómo aplicar recomendaciones
Video: Cómo aplicar recomendaciones
Puedes aplicar recomendaciones activas o descartadas con el método ApplyRecommendation
de RecommendationService
.
Los tipos de recomendaciones pueden tener parámetros obligatorios u opcionales. La mayoría de las recomendaciones incluyen valores recomendados que se usan de forma predeterminada.
La configuración de cuentas para aplicar recomendaciones automáticamente no es compatible con todos los tipos de recomendaciones. Sin embargo, puedes implementar un comportamiento similar para los tipos de recomendaciones que son totalmente compatibles con la API de Google Ads.
Consulta el ejemplo de código de DetectAndApplyRecommendations
para obtener más información.
Usa el campo de unión apply_parameters
de ApplyRecommendationOperation
para aplicar recomendaciones con valores de parámetros específicos. Cada tipo de recomendación adecuado tiene su propio campo.
Los tipos de recomendaciones que no se enumeran en el campo apply_parameters
no usan estos valores de parámetros.
Ejemplo de código
En el siguiente código, se muestra cómo compilar ApplyRecommendationOperation
y cómo anular los valores recomendados si deseas reemplazarlos por los tuyos.
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::V21::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::V21::Resources::Ad->new({ # id => "INSERT_AD_ID_AS_INTEGER_HERE" # }); # my $text_ad_parameters = # Google::Ads::GoogleAds::V21::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::V21::Services::RecommendationService::ApplyRecommendationOperation ->new({ resourceName => $recommendation->{resourceName}}); return $apply_recommendation_operation; }
En el siguiente ejemplo, se llama a ApplyRecommendation
y se envían las operaciones de aplicación de recomendaciones que se crearon en el 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.V21.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
Mira estos videos para obtener más información
Aplica parámetros
Masiva
Errores
Pruebas
Cómo descartar recomendaciones
Video: Descarta recomendaciones
Puedes descartar recomendaciones con RecommendationService
. La estructura del código es similar a la de aplicar recomendaciones, pero, en su lugar, usas DismissRecommendationOperation
y RecommendationService.DismissRecommendation
.
Mira estos videos para obtener más información
Masiva
Errores
Pruebas
Aplique automáticamente las recomendaciones
Puedes usar el botón RecommendationSubscriptionService
para aplicar automáticamente las recomendaciones de un tipo específico.
Para suscribirte a un tipo de recomendación en particular, crea un objeto RecommendationSubscription
, configura el campo type
en uno de los tipos de recomendación admitidos y configura el campo status
en ENABLED
.
Tipos de recomendaciones compatibles con suscripciones
ENHANCED_CPC_OPT_IN
KEYWORD
KEYWORD_MATCH_TYPE
LOWER_TARGET_ROAS
MAXIMIZE_CLICKS_OPT_IN
OPTIMIZE_AD_ROTATION
RAISE_TARGET_CPA
RESPONSIVE_SEARCH_AD
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH
SEARCH_PARTNERS_OPT_IN
SEARCH_PLUS_OPT_IN
SET_TARGET_CPA
SET_TARGET_ROAS
TARGET_CPA_OPT_IN
TARGET_ROAS_OPT_IN
USE_BROAD_MATCH_KEYWORD
Recupera suscripciones
Para obtener información sobre las suscripciones a recomendaciones de una cuenta, consulta el recurso recommendation_subscription
.
Para ver los cambios que se aplicaron automáticamente, consulta el recurso change_event
y filtra change_event.client_type
en GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION
.
Recomendaciones en la creación de campañas
Puedes usar RecommendationService.GenerateRecommendationsRequest
para generar recomendaciones durante la creación de la campaña, para un conjunto determinado de tipos de recomendaciones.
GenerateRecommendations
acepta como entrada un ID de cliente, un tipo de canal publicitario que debe ser SEARCH
o PERFORMANCE_MAX
, una lista de tipos de recomendaciones para generar y varios datos que dependen de los tipos especificados. Devuelve una lista de objetos Recommendation
según los datos que proporciones. Si no hay datos suficientes para generar una recomendación para el recommendation_types
solicitado, o si la campaña ya se encuentra en el estado recomendado, el conjunto de resultados no contendrá una recomendación para ese tipo. Asegúrate de que tu aplicación controle el caso en el que no se devuelven recomendaciones para los tipos de recomendaciones solicitados.
En la siguiente tabla, se describen los tipos de recomendaciones que admite GenerateRecommendations
y los campos que debes proporcionar para recibir recomendaciones de ese tipo. Como práctica recomendada, envía la solicitud GenerateRecommendations
después de recopilar toda la información relacionada con los tipos de recomendaciones solicitados. Para obtener más detalles sobre los campos obligatorios y opcionales, incluidos los campos anidados, consulta la documentación de referencia.
RecommendationType | Campos obligatorios | Campos opcionales |
---|---|---|
CAMPAIGN_BUDGET |
En el caso de las campañas de Búsqueda y de máximo rendimiento, se requieren los siguientes campos:
|
|
KEYWORD |
|
|
MAXIMIZE_CLICKS_OPT_IN |
|
|
MAXIMIZE_CONVERSIONS_OPT_IN |
|
|
MAXIMIZE_CONVERSION_VALUE_OPT_IN |
|
|
SET_TARGET_CPA |
|
|
SET_TARGET_ROAS |
|
|
SITELINK_ASSET
Nota: El objeto SitelinkAssetRecommendation
que se devuelve contendrá listas vacías. Si la respuesta GenerateRecommendations contiene un SitelinkAssetRecommendation , se puede considerar como un indicador para agregar al menos un recurso de vínculo a sitio a la campaña. |
|
|
TARGET_CPA_OPT_IN |
|
|
TARGET_ROAS_OPT_IN |
|
Ejemplo de flujo de uso
Supongamos que tu empresa es una agencia de publicidad que proporciona un flujo de trabajo de creación de campañas a los usuarios y deseas ofrecerles sugerencias durante ese flujo. Puedes usar GenerateRecommendationsRequest
para generar recomendaciones a pedido y, luego, incorporarlas a la interfaz de usuario de creación de campañas.
El flujo de uso podría verse de la siguiente manera:
Un usuario ingresa a tu aplicación para crear una campaña de máximo rendimiento.
El usuario proporciona información inicial como parte del flujo de creación de la campaña. Por ejemplo, proporcionan detalles para crear un solo
SitelinkAsset
y seleccionanTARGET_SPEND
como su estrategia de Ofertas inteligentes.Envías un objeto
GenerateRecommendationsRequest
que establece los siguientes campos:campaign_sitelink_count
: Se establece en1
, que es la cantidad de recursos de vínculo a sitio en la campaña en curso.bidding_info
: Establece el campo anidadobidding_strategy_type
enTARGET_SPEND
.conversion_tracking_status
: Se establece en elConversionTrackingStatus
de este cliente. Para obtener orientación sobre cómo recuperar este campo, consulta la guía de introducción para la administración de conversiones.recommendation_types
: establecido como[SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN]
.advertising_channel_type
: establecido comoPERFORMANCE_MAX
.customer_id
: Se establece en el ID del cliente que crea la campaña.
Puedes tomar las recomendaciones en el objeto
GenerateRecommendationsResponse
(en este caso, un objetoSitelinkAssetRecommendation
y un objetoMaximizeClicksOptInRecommendation
) y sugerírselas al usuario mostrándolas en la interfaz de creación de la campaña. Si el usuario acepta una sugerencia, puedes incorporarla en la solicitud de creación de la campaña una vez que complete el flujo de creación de la campaña.