Nivel de optimización y recomendaciones

Video: Análisis detallado

Las recomendaciones pueden mejorar tus campañas de varias maneras:

  • Presenta funciones nuevas y relevantes
  • Aproveche al máximo su presupuesto con ofertas, palabras clave y anuncios mejorados
  • Aumenta el rendimiento y la eficiencia de tus campañas en general

Para aumentar los niveles de optimización, puedes usar el RecommendationService para recuperar recomendaciones y, luego, aplicarlas o descartarlas según corresponda. A partir de la versión 15 de la API de Google Ads, también puedes suscribirte a las aplicaciones automáticas recomendaciones con la RecommendationSubscriptionService.

Nivel de optimización

Video: Nivel de optimización

El nivel de optimización es un estimación del rendimiento y la disponibilidad de tu cuenta de Google Ads a la Customer y Campaign.

El 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 de varias cuentas. Recupera el nivel de optimización y ponderación del nivel de optimización de las cuentas y multiplicarlas en conjunto (Customer.optimization_score * Customer.optimization_score_weight) para procesar nivel de optimización general.

Hay métricas relacionadas con la optimización disponibles para customer y campaign informes:

  1. El metrics.optimization_score_url proporciona un vínculo directo a la cuenta para ver información sobre los recomendaciones en la IU de Google Ads.
  2. El metrics.optimization_score_uplift indica cuánto aumentaría el nivel de optimización si todos los se aplican las recomendaciones. Es una estimación basada en todos recomendaciones en su conjunto, no solo la suma de las puntuaciones de aumento de cada recomendación.

Para agrupar y ordenar las recomendaciones mostradas, puede segmentar ambas de métricas por tipo de recomendación con segments.recommendation_type en sus para cada búsqueda.

Tipos de recomendación

Tipos de recomendaciones totalmente compatibles

RecommendationType Descripción
CAMPAIGN_BUDGET Corregir las campañas limitadas por el presupuesto
KEYWORD Agrega palabras clave nuevas
TEXT_AD Agregue sugerencias de anuncios
TARGET_CPA_OPT_IN Establezca ofertas con un CPA objetivo
MAXIMIZE_CONVERSIONS_OPT_IN Establece ofertas con Maximizar conversiones
MAXIMIZE_CONVERSION_VALUE_OPT_IN Oferta con Maximizar valor de conversión
ENHANCED_CPC_OPT_IN Oferta con CPC avanzado
MAXIMIZE_CLICKS_OPT_IN Oferta con Maximizar clics
OPTIMIZE_AD_ROTATION Utilice las rotaciones de anuncios optimizadas
MOVE_UNUSED_BUDGET Transferir los que no se utilizan a los presupuestos limitados
TARGET_ROAS_OPT_IN Establezca ofertas con el ROAS objetivo
FORECASTING_CAMPAIGN_BUDGET Corrige las campañas que se espera que estén limitadas por el presupuesto en el futuro
RESPONSIVE_SEARCH_AD Agregar nuevo anuncio de búsqueda responsivo
MARGINAL_ROI_CAMPAIGN_BUDGET Ajustar el presupuesto de la campaña para aumentar el ROI
USE_BROAD_MATCH_KEYWORD Utilizar amplia concordancia para las campañas basadas en conversiones con ofertas automáticas
RESPONSIVE_SEARCH_AD_ASSET Cómo agregar recursos de anuncios de búsqueda responsivos a un anuncio
RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH Cómo mejorar la calidad de un anuncio de búsqueda responsivo
DISPLAY_EXPANSION_OPT_IN Cómo actualizar una campaña para utilizar la expansión en Display
SEARCH_PARTNERS_OPT_IN Expanda el alcance con los socios de búsqueda de Google
CUSTOM_AUDIENCE_OPT_IN Cree un público personalizado
IMPROVE_DISCOVERY_AD_STRENGTH Mejora la calidad de los anuncios en las campañas de generación de demanda
UPGRADE_SMART_SHOPPING_CAMPAIGN_TO_PERFORMANCE_MAX Cómo actualizar una campaña de Shopping inteligente a una de máximo rendimiento
UPGRADE_LOCAL_CAMPAIGN_TO_PERFORMANCE_MAX Cómo actualizar una campaña local heredada a una campaña de máximo rendimiento
SHOPPING_MIGRATE_REGULAR_SHOPPING_CAMPAIGN_OFFERS_TO_PERFORMANCE_MAX Migre a las ofertas segmentadas por campañas de Shopping normales a ofertas existentes Campañas de máximo rendimiento
MIGRATE_DYNAMIC_SEARCH_ADS_CAMPAIGN_TO_PERFORMANCE_MAX Migre 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 “Excelente” calificación
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 Aumentar el CPA objetivo cuando sea demasiado bajo y muy pocas conversiones o ninguna
FORECASTING_SET_TARGET_ROAS Aumentar el presupuesto antes de un evento de temporada que se prevé que aumente el tráfico y cambiará la estrategia de ofertas de Maximizar valor de conversión al ROAS objetivo
LEAD_FORM Cómo agregar recursos de formulario de clientes potenciales a una campaña
CALLOUT_ASSET Cómo agregar recursos de texto destacado a nivel de la campaña o del cliente
SITELINK_ASSET Cómo agregar recursos de vínculos a sitios a nivel de la campaña o del cliente
CALL_ASSET Agregue recursos de llamada a nivel de la campaña o del cliente
SHOPPING_ADD_AGE_GROUP Agrega el atributo edad a las ofertas que descienden de nivel debido a una falta edad
SHOPPING_ADD_COLOR Agrega un color a las ofertas que descienden de nivel debido a que faltan color [color]
SHOPPING_ADD_GENDER Agrega un género a las ofertas que descienden de nivel debido a que falta la información género
SHOPPING_ADD_GTIN Agregar un GTIN (código comercial global de artículo) a las ofertas que descienden de nivel debido a que falta un GTIN
SHOPPING_ADD_MORE_IDENTIFIERS Agrega más identificadores a las ofertas que descienden de nivel porque faltan identificadores
SHOPPING_ADD_SIZE Agrega el tamaño a las ofertas que descienden de nivel debido a que faltan tamaño
SHOPPING_ADD_PRODUCTS_TO_CAMPAIGN Agrega productos para que se publique una campaña
SHOPPING_FIX_DISAPPROVED_PRODUCTS Corrige los productos rechazados
SHOPPING_TARGET_ALL_OFFERS Crear una campaña genérica que se segmente para todas las ofertas
SHOPPING_FIX_SUSPENDED_MERCHANT_CENTER_ACCOUNT Corrija los problemas de suspensión de cuentas de Merchant Center
SHOPPING_FIX_MERCHANT_CENTER_ACCOUNT_SUSPENSION_WARNING Corrija los problemas de advertencia de suspensión de cuentas de Merchant Center
DYNAMIC_IMAGE_EXTENSION_OPT_IN Habilite las extensiones de imagen dinámicas en la cuenta
RAISE_TARGET_CPA Aumentar el CPA objetivo
LOWER_TARGET_ROAS ROAS objetivo más bajo
FORECASTING_SET_TARGET_CPA Establezca un CPA objetivo para las campañas que no tienen uno especificado en antes de un evento de temporada en el que se prevé que aumentará el tráfico
SET_TARGET_CPA Establezca un CPA objetivo para las campañas que no tienen uno especificado
SET_TARGET_ROAS Establezca un ROAS objetivo para las campañas que no tienen uno especificado
REFRESH_CUSTOMER_MATCH_LIST Actualizar una lista de clientes que no se haya actualizado en los últimos 90 días
IMPROVE_GOOGLE_TAG_COVERAGE Implementa la etiqueta de Google en más páginas
CALLOUT_EXTENSION (obsoleto) Este campo es obsoleto; usa CALLOUT_ASSET en su lugar.
SITELINK_EXTENSION (obsoleto) Este campo es obsoleto; usa SITELINK_ASSET en su lugar.
CALL_EXTENSION (obsoleto) Este campo es obsoleto; usa CALL_ASSET en su lugar.
KEYWORD_MATCH_TYPE (obsoleto) Este campo es obsoleto; usa USE_BROAD_MATCH_KEYWORD en su lugar.

Mira este video para obtener más información

Cómo controlar tipos no compatibles

Recupera recomendaciones

Video: Programación en vivo

Al igual que la mayoría de las demás entidades de la API de Google Ads, Recommendation los objetos se recuperan con el GoogleAdsService.SearchStream con una consulta de Google Ads.

Para cada tipo de recomendación, los detalles se proporcionan en una específico de la recomendación. Por ejemplo, CAMPAIGN_BUDGET recomendación los detalles están en la campaign_budget_recommendation y se envuelven en una CampaignBudgetRecommendation .

Encuentra todos los campos específicos de la recomendación en la Campo de unión recommendation.

Impacto de las recomendaciones

Algunos tipos de recomendación 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. Lo siguiente métricas de recomendaciones son disponibles en los campos impact.base_metrics y impact.potential_metrics:

  • impressions

  • clicks

  • cost_micros

  • conversions

  • all_conversions (disponible a partir de la versión 16 de la API de Google Ads)

  • video_views

Ejemplo de código

El siguiente código de muestra recupera todas las recomendaciones disponibles y descartadas de tipo KEYWORD desde una cuenta e imprime algunos de sus datos:

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.V17.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 = f"""
    SELECT
      recommendation.campaign,
      recommendation.keyword_recommendation
    FROM recommendation
    WHERE
      recommendation.type = KEYWORD"""

# Detects keyword recommendations that exist for the customer account.
response = googleads_service.search(customer_id=customer_id, query=query)

operations = []
for row in response.results:
    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)
    )
      

Rita

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);
  });
      

Toma medidas

Se puede aplicar o descartar cualquier recomendación recuperada.

Según el tipo de recomendación, estas pueden cambiar diariamente o incluso varias veces al día. Cuando eso sucede, se muestra la resource_name del objeto puede se vuelven obsoletas luego de que se recupera la recomendación.

Es una buena práctica tomar medidas sobre las recomendaciones poco después de la recuperación.

Aplica recomendaciones

Video: Cómo aplicar recomendaciones

Puedes aplicar recomendaciones activas o descartadas con el ApplyRecommendation método de la RecommendationService

Los tipos de recomendación pueden tener parámetros opcionales o obligatorios. Más probable Las recomendaciones incluyen valores recomendados que se usan de forma predeterminada.

Configurar cuentas para las recomendaciones aplicadas automáticamente no es compatible con todos los tipos de recomendaciones. Sin embargo, puedes implementar herramientas similares para los tipos de recomendaciones que son totalmente compatibles con la API de Google Ads. Consulta el código DetectAndApplyRecommendations. ejemplo para obtener más información.

Usa el apply_parameters campo de unión de ApplyRecommendationOperation para aplicar las 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 incluyan en el campo apply_parameters no usan estos valores de parámetros.

Ejemplo de código

En el siguiente código, se demuestra cómo compilar la ApplyRecommendationOperation y cómo anular los valores recomendados si quieres reemplazarlos por tu por sí solas.

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, recommendation):
    """Creates a ApplyRecommendationOperation to apply the given recommendation.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        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 = 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
      

Rita

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::V17::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::V17::Resources::Ad->new({
  #   id => "INSERT_AD_ID_AS_INTEGER_HERE"
  # });
  # my $text_ad_parameters =
  #   Google::Ads::GoogleAds::V17::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::V17::Services::RecommendationService::ApplyRecommendationOperation
    ->new({
      resourceName => $recommendation->{resourceName}});

  return $apply_recommendation_operation;
}
      

En el siguiente ejemplo, se llama ApplyRecommendation: enviando las operaciones de aplicación de recomendaciones que se crearon en el período anterior código.

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.V17.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, customer_id, operations):
    """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 = recommendation_service.apply_recommendation(
        customer_id=customer_id, operations=operations
    )

    for result in response.results:
        print(
            "Applied a recommendation with resource name: "
            f"'{result[0].resource_name}'."
        )
      

Rita

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};
}
      

Mira estos videos para obtener más información

Aplica parámetros

Masiva

Errores

Pruebas

Cómo descartar recomendaciones

Video: Cómo descartar recomendaciones

Puedes descartar recomendaciones con el RecommendationService El código es similar a aplicar recomendaciones, pero, en cambio, se usa DismissRecommendationOperation y RecommendationService.DismissRecommendation.

Mira estos videos para obtener más información

Masiva

Errores

Pruebas

Aplique automáticamente las recomendaciones

A partir de la versión 15 de la API de Google Ads, puede utilizar la RecommendationSubscriptionService para aplicar automáticamente las recomendaciones de un tipo específico.

Para suscribirte a un tipo de recomendación en particular, crea una objeto RecommendationSubscription, establece el campo type en uno de la recomendación admitida types y establece la 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

Cómo recuperar 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 recurso change_event, filtrando change_client_type a GOOGLE_ADS_RECOMMENDATIONS_SUBSCRIPTION

Recomendaciones en la creación de campañas

A partir de la versión 16 de la API de Google Ads, puede utilizar RecommendationService.GenerateRecommendationsRequest para generar recomendaciones durante la creación de una campaña para un conjunto determinado de tipos de recomendaciones.

GenerateRecommendations acepta como entrada un ID de cliente, un canal de publicidad que debe ser SEARCH o PERFORMANCE_MAX, una lista de tipos de recomendaciones para generar y varios datos que dependen los tipos especificados. Da como resultado una lista de objetos Recommendation según la los datos que proporcionas. Si no hay datos suficientes para generar una recomendación de los recursos solicitados recommendation_types: o si la campaña ya se encuentra en el estado recomendado, el conjunto de resultados contienen una recomendación para ese tipo. Asegúrate de que tu aplicación controle caso en el que no se muestran recomendaciones para la recomendación solicitada de tipos de datos.

En la siguiente tabla, se describen los tipos de recomendaciones que admite GenerateRecommendations, y los campos que debes proporcionar para recibir recomendaciones para ese tipo. Como práctica recomendada, envía el Solicitud de GenerateRecommendations después de que se haya recopilado toda la información relacionadas con los tipos de recomendaciones solicitados. Para obtener detalles adicionales campos obligatorios y opcionales, incluidos los campos anidados, consulta la documentación de referencia.

RecommendationType Campos obligatorios Campos opcionales
KEYWORD
  • seed_info
  • ad_group_info
MAXIMIZE_CLICKS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSIONS_OPT_IN
  • conversion_tracking_status
  • bidding_info
MAXIMIZE_CONVERSION_VALUE_OPT_IN
  • conversion_tracking_status
  • bidding_info
SET_TARGET_CPA
  • conversion_tracking_status
  • bidding_info
SET_TARGET_ROAS
  • conversion_tracking_status
  • bidding_info
SITELINK_ASSET
Nota: La columna SitelinkAssetRecommendation contendrá listas vacías. Si el elemento GenerateRecommendations contiene un SitelinkAssetRecommendation, se puede se consideran un indicador para agregar, al menos, un recurso de vínculo a sitio a la campaña.
  • campaign_sitelink_count
TARGET_CPA_OPT_IN
  • conversion_tracking_status
  • bidding_info
TARGET_ROAS_OPT_IN
  • conversion_tracking_status
  • bidding_info

Ejemplo de flujo de uso

Supongamos que tu empresa es una agencia de publicidad que ofrece una campaña del flujo de trabajo de construcción y quieres ofrecerles sugerencias durante ese flujo. Puedes usar GenerateRecommendationsRequest generar recomendaciones a pedido e incorporarlas en la interfaz de usuario de creación de la campaña.

El flujo de uso podría verse de la siguiente manera:

  1. Un usuario visita tu aplicación para crear una campaña de máximo rendimiento.

  2. El usuario proporciona información inicial como parte de la campaña. en el flujo de construcción. Por ejemplo, proporcionan detalles para crear un solo SitelinkAsset y selecciona TARGET_SPEND que sus Ofertas inteligentes de administración de amenazas.

  3. Envías un GenerateRecommendationsRequest que establece los siguientes campos:

    • campaign_sitelink_count: Se estableció en 1, que es la cantidad de recursos de vínculo a sitio que se encuentran en el trabajo campaña.

    • bidding_info: establece el campo bidding_strategy_type anidado en TARGET_SPEND.

    • conversion_tracking_status: Se establece en ConversionTrackingStatus de este cliente. Para obtener instrucciones sobre cómo recuperar este campo, visita la Primeros pasos para la administración de conversiones.

    • recommendation_types: establecido como [SITELINK_ASSET, MAXIMIZE_CLICKS_OPT_IN].

    • advertising_channel_type: establecido como PERFORMANCE_MAX.

    • customer_id: Se establece en el ID del cliente que crea la campaña.

  4. Puedes ver las recomendaciones en la GenerateRecommendationsResponse - en este caso, un SitelinkAssetRecommendation y un MaximizeClicksOptInRecommendation —y sugerirlos al usuario mostrándolos en su campaña de construcción. Si el usuario acepta una sugerencia, puedes incorporarla en la solicitud de creación de la campaña una vez que el usuario complete en el flujo de creación de la campaña.