Informes sobre experimentos

Existen dos formas principales de generar informes sobre los experimentos A/B estándar:

  • Informes de experimentos directos: Consulta el recurso experiment para obtener métricas. Esta opción proporciona métricas para los grupos de control y de tratamiento en una sola respuesta, junto con datos de comparación estadística, como el aumento y los valores p. Esta es la única forma de generar informes sobre los experimentos dentro de la campaña.
  • Informes de campañas: Consulta el recurso campaign para obtener métricas y usa campaign.experiment_type para distinguir entre las campañas de base y las experimentales. Esta opción solo está disponible para los experimentos que usan campañas de control y tratamiento independientes, como los experimentos administrados por el sistema.

En el caso de los experimentos estándar, esta guía se enfoca principalmente en los informes de experimentos directos, que son compatibles con todos los tipos de experimentos que admiten informes. En el caso de los estudios de medición de efectividad, también puedes generar informes sobre Brand Lift, Efectividad de conversiones y Efectividad de búsqueda con recursos de medición de efectividad específicos.

Informes de experimentos directos

Puedes consultar el recurso experiment directamente para recuperar las métricas de rendimiento y las comparaciones estadísticas entre tus grupos de control y de tratamiento.

Métricas e importancia estadística

En el caso de las métricas principales, como los clics, las impresiones, el costo, las conversiones y el valor de conversión, el recurso experiment proporciona métricas de tratamiento (por ejemplo, metrics.clicks) y métricas de control (por ejemplo, metrics.control_clicks) en la misma fila.

También proporciona campos para ayudarte a evaluar la importancia estadística de cualquier diferencia entre los grupos:

  • metrics.*_p_value: Es la probabilidad de que se produzcan los resultados observados si el experimento no tuviera un efecto real en la métrica. Un valor p más bajo indica una mayor importancia estadística.
  • metrics.*_point_estimate: Es el porcentaje estimado de efectividad (positivo o negativo) en la métrica determinada para el grupo de tratamiento en comparación con el grupo de control. Junto con margin_of_error, describen un intervalo de confianza con un nivel de confianza prescrito para la diferencia que se estima. La cantidad que se estima es (tratamiento / control - 1). La estimación puntual es el centro del intervalo de confianza.
  • metrics.*_margin_of_error: Es el radio del intervalo de confianza, que se centra en point_estimate. Se calcula para un nivel de confianza prescrito, que depende del tipo de experimento.

Los siguientes campos de métricas principales se admiten en el recurso experiment, incluido un valor de grupo de tratamiento, un valor de grupo de control y los campos de estadísticas que se mencionaron anteriormente:

  • clicks
  • impressions
  • cost_micros
  • conversions
  • cost_per_conversion
  • conversion_value
  • conversion_value_per_cost

En el caso de las conversiones, específicamente, los campos estadísticos están disponibles a través de los siguientes campos de absolute_change, en lugar de como valores relativos:

Si necesitas ayuda para crear consultas válidas para el recurso experiment, utiliza la herramienta Compilador de consultas de Google Ads.

Consulta de ejemplo

La siguiente consulta de GAQL recupera las métricas clave de un experimento:

SELECT
  experiment.experiment_id,
  experiment.name,
  experiment.type,
  metrics.clicks,
  metrics.control_clicks,
  metrics.clicks_point_estimate,
  metrics.clicks_margin_of_error,
  metrics.clicks_p_value,
  metrics.conversions,
  metrics.control_conversions,
  metrics.conversions_absolute_change_point_estimate,
  metrics.conversions_absolute_change_margin_of_error,
  metrics.conversions_absolute_change_p_value
FROM experiment
WHERE experiment.experiment_id = EXPERIMENT_ID

Interpreta los resultados

Puedes usar los campos de valor p, estimación puntual y margen de error para determinar si tu experimento generó resultados con importancia estadística. Por ejemplo, si conversions_absolute_change_p_value es inferior al umbral que elegiste (como 0.05 para un 95% de confianza) y conversions_absolute_change_point_estimate - conversions_absolute_change_margin_of_error es mayor que cero, el grupo de tratamiento tiene un rendimiento significativamente mejor que el grupo de control en términos de conversiones.

A continuación, se muestra un fragmento de código de Python que indica cómo evaluar los resultados en función de las estimaciones del valor p y la efectividad:

Java

private void evaluateExperiment(
    GoogleAdsClient googleAdsClient, long customerId, GoogleAdsRow row) {
  Metrics metrics = row.getMetrics();
  String experimentResourceName = row.getExperiment().getResourceName();

  // 1. Evaluate conversion success as a primary success signal if available.
  // - Point Estimate: Represents the estimated average lift or difference in conversions.
  // - Margin of Error: Outlines the confidence interval bounds. Note that the margin_of_error
  //   provided by the API is calculated for a preset confidence level which is set based on the
  //   experiment type.
  // - Lower Bound: (Point Estimate - Margin of Error). If this value is above 0,
  //   we have statistical significance that performance has improved.
  double convPValue = metrics.getConversionsAbsoluteChangePValue();
  double convLift = metrics.getConversionsAbsoluteChangePointEstimate();
  double convError = metrics.getConversionsAbsoluteChangeMarginOfError();
  double convLowerBound = convLift - convError;

  if (convPValue <= P_VALUE_THRESHOLD) {
    if (convLowerBound > 0) {
      System.out.printf(
          "Significant Success: Conversions increased. Even at the lower bound, the lift is %.2f."
              + " Promoting changes.%n",
          convLowerBound);
      promoteExperiment(googleAdsClient, customerId, experimentResourceName);
      return;
    } else if ((convLift + convError) < 0) {
      System.out.printf(
          "Significant Decline: Even the upper bound (%.2f) is below zero. Ending experiment.%n",
          convLift + convError);
      endExperiment(googleAdsClient, customerId, experimentResourceName);
      return;
    }
  }

  // 2. Fall back to evaluating click metrics if conversions are inconclusive.
  double clickPValue = metrics.getClicksPValue();
  double clickLift = metrics.getClicksPointEstimate();
  double clickError = metrics.getClicksMarginOfError();
  double clickLowerBound = clickLift - clickError;

  if (clickPValue <= P_VALUE_THRESHOLD && clickLowerBound > 0) {
    System.out.printf("Click volume is significantly up (+%.1f%%).%n", clickLift * 100);

    // Graduation is only supported for separate campaign experiments, not
    // intra-campaign experiments where there is no separate treatment campaign.
    ExperimentType experimentType = row.getExperiment().getType();
    if (experimentType != ExperimentType.ADOPT_BROAD_MATCH_KEYWORDS
        && experimentType != ExperimentType.ADOPT_AI_MAX) {
      System.out.println("Graduating treatment campaign for further manual analysis.");
      graduateExperiment(googleAdsClient, customerId, experimentResourceName);
    } else {
      System.out.println(
          "Intra-campaign trial detected: graduation is not supported. Continuing to run the"
              + " experiment to gather more conversion data.");
    }
  } else {
    // 3. Print status if no action was taken.
    System.out.printf(
        "Inconclusive: No significant lift in Conversions (p=%.2f) or Clicks (p=%.2f). Current"
            + " estimated lift: %.2f +/- %.2f. Allowing the experiment to continue running.%n",
        convPValue, clickPValue, convLift, convError);
  }
}

      

C#

private static void EvaluateExperiment(GoogleAdsClient client, long customerId, GoogleAdsRow row)
{
    // This function evaluates performance metrics and immediately takes action
    // to update the experiment's status (promote, end, or graduate) if
    // statistical significance thresholds are met.
    var metrics = row.Metrics;
    string experimentResourceName = row.Experiment.ResourceName;

    bool hasConvMetrics = metrics.HasConversionsAbsoluteChangePValue
        && metrics.HasConversionsAbsoluteChangePointEstimate
        && metrics.HasConversionsAbsoluteChangeMarginOfError;

    bool hasClickMetrics = metrics.HasClicksPValue
        && metrics.HasClicksPointEstimate
        && metrics.HasClicksMarginOfError;

    // 1. Evaluate conversion success as a primary success signal if available.
    // - Point Estimate: Represents the estimated average lift or difference in conversions.
    // - Margin of Error: Outlines the confidence interval bounds. Note that the margin_of_error
    //   provided by the API is calculated for a preset confidence level which is set based on
    //   the experiment type.
    // - Lower Bound: (Point Estimate - Margin of Error). If this value is above 0,
    //   we have statistical significance that performance has improved.
    if (hasConvMetrics)
    {
        double convPValue = metrics.ConversionsAbsoluteChangePValue;
        double convLift = metrics.ConversionsAbsoluteChangePointEstimate;
        double convError = metrics.ConversionsAbsoluteChangeMarginOfError;
        double convLowerBound = convLift - convError;

        if (convPValue <= P_VALUE_THRESHOLD)
        {
            if (convLowerBound > 0)
            {
                Console.WriteLine(
                    $"Significant Success: Conversions increased. Even at the lower" +
                    $" bound, the lift is {convLowerBound:F2}. Promoting changes.");
                PromoteExperiment(client, customerId, experimentResourceName);
                return;
            }
            else if ((convLift + convError) < 0)
            {
                Console.WriteLine(
                    $"Significant Decline: Even the upper bound ({convLift + convError:F2}) " +
                    $"is below zero. Ending experiment.");
                EndExperiment(client, customerId, experimentResourceName);
                return;
            }
        }
    }

    // 2. Evaluate click volume as a secondary signal.
    // This is helpful as an early indicator or for lower-volume accounts.
    if (hasClickMetrics)
    {
        double clickPValue = metrics.ClicksPValue;
        double clickLift = metrics.ClicksPointEstimate;
        double clickError = metrics.ClicksMarginOfError;
        double clickLowerBound = clickLift - clickError;

        if (clickPValue <= P_VALUE_THRESHOLD && clickLowerBound > 0)
        {
            // We have a directional winner: high confidence in more traffic,
            // but not enough data to confirm conversion impact yet.
            Console.WriteLine(
                $"Click volume is significantly up (+{clickLift * 100:F1}%).");

            // Graduation is only supported for separate campaign experiments, not
            // intra-campaign experiments where there is no separate treatment campaign.
            if (row.Experiment.Type != ExperimentType.AdoptBroadMatchKeywords
                && row.Experiment.Type != ExperimentType.AdoptAiMax)
            {
                Console.WriteLine("Graduating treatment campaign for further manual analysis.");
                GraduateExperiment(client, customerId, experimentResourceName);
            }
            else
            {
                Console.WriteLine(
                    "Intra-campaign trial detected: graduation is not supported. " +
                    "Continuing to run the experiment to gather more conversion data.");
            }
            return;
        }
    }

    // 3. Print status if no action was taken.
    if (hasConvMetrics || hasClickMetrics)
    {
        string convStatus = hasConvMetrics
            ? $"Conversions (p={metrics.ConversionsAbsoluteChangePValue:F2}, " +
              $"lift={metrics.ConversionsAbsoluteChangePointEstimate:F2} +/- " +
              $"{metrics.ConversionsAbsoluteChangeMarginOfError:F2})"
            : "Conversions (not populated)";

        string clickStatus = hasClickMetrics
            ? $"Clicks (p={metrics.ClicksPValue:F2}, " +
              $"lift={metrics.ClicksPointEstimate:F2} +/- " +
              $"{metrics.ClicksMarginOfError:F2})"
            : "Clicks (not populated)";

        Console.WriteLine(
            $"Inconclusive: No significant action taken. {convStatus}, {clickStatus}. " +
            "Allowing the experiment to continue running.");
    }
    else
    {
        Console.WriteLine(
            "Conversion and click performance metrics are not yet populated. " +
            "Allowing the experiment to continue running.");
    }
}
      

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

def evaluate_experiment(
    client: GoogleAdsClient, customer_id: str, row: GoogleAdsRow
) -> None:
    """Evaluates the performance of the experiment and updates it accordingly
    (for example, promotes, ends, or graduates).

    Checks conversion and click metrics against statistical significance thresholds
    to determine the appropriate action to take on the experiment.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        row: a GoogleAdsRow containing the experiment and metrics.
    """
    # This function evaluates performance metrics and immediately takes action
    # to update the experiment's status (promote, end, or graduate) if
    # statistical significance thresholds are met.
    metrics = row.metrics
    experiment_resource_name = row.experiment.resource_name

    has_conv_metrics = (
        "conversions_absolute_change_p_value" in metrics
        and "conversions_absolute_change_point_estimate" in metrics
        and "conversions_absolute_change_margin_of_error" in metrics
    )
    has_click_metrics = (
        "clicks_p_value" in metrics
        and "clicks_point_estimate" in metrics
        and "clicks_margin_of_error" in metrics
    )

    # 1. Evaluate conversion success as a primary success signal if available.
    # - Point Estimate: Represents the estimated average lift or difference in conversions.
    # - Margin of Error: Outlines the confidence interval bounds. Note that the margin_of_error provided by the API is calculated for a preset confidence level which is set based on the experiment type.
    # - Lower Bound: (Point Estimate - Margin of Error). If this value is above 0,
    #   we have statistical significance that performance has improved.
    if has_conv_metrics:
        conv_p_value = metrics.conversions_absolute_change_p_value
        conv_lift = metrics.conversions_absolute_change_point_estimate
        conv_error = metrics.conversions_absolute_change_margin_of_error
        conv_lower_bound = conv_lift - conv_error

        if conv_p_value <= P_VALUE_THRESHOLD:
            if conv_lower_bound > 0:
                print(
                    "Significant Success: Conversions increased. Even at the lower"
                    f" bound, the lift is {conv_lower_bound:.2f}. Promoting"
                    " changes."
                )
                promote_experiment(
                    client, customer_id, experiment_resource_name
                )
                return
            elif (conv_lift + conv_error) < 0:
                print(
                    "Significant Decline: Even the upper bound"
                    f" ({conv_lift + conv_error:.2f}) is below zero. Ending"
                    " experiment."
                )
                end_experiment(client, customer_id, experiment_resource_name)
                return

        # 2. Evaluate click volume as a secondary signal.
        # This is helpful as an early indicator or for lower-volume accounts.
        click_p_value = metrics.clicks_p_value
        click_lift = metrics.clicks_point_estimate
        click_error = metrics.clicks_margin_of_error
        click_lower_bound = click_lift - click_error

        if click_p_value <= P_VALUE_THRESHOLD and click_lower_bound > 0:
            # We have a directional winner: high confidence in more traffic,
            # but not enough data to confirm conversion impact yet.
            print(f"Click volume is significantly up (+{click_lift*100:.1f}%).")

            # Graduation is only supported for separate campaign experiments, not
            # intra-campaign experiments where there is no separate treatment campaign.
            experiment_type_name = row.experiment.type_.name
            if (
                experiment_type_name != "ADOPT_BROAD_MATCH_KEYWORDS"
                and experiment_type_name != "ADOPT_AI_MAX"
            ):
                print(
                    "Graduating treatment campaign for further manual analysis."
                )
                graduate_experiment(
                    client, customer_id, experiment_resource_name
                )
            else:
                print(
                    "Intra-campaign trial detected: graduation is not supported. "
                    "Continuing to run the experiment to gather more conversion data."
                )
            return

    # 3. Print status if no action was taken.
    if has_conv_metrics or has_click_metrics:
        conv_status = (
            f"Conversions (p={metrics.conversions_absolute_change_p_value:.2f}, "
            f"lift={metrics.conversions_absolute_change_point_estimate:.2f} +/- "
            f"{metrics.conversions_absolute_change_margin_of_error:.2f})"
            if has_conv_metrics
            else "Conversions (not populated)"
        )
        click_status = (
            f"Clicks (p={metrics.clicks_p_value:.2f}, "
            f"lift={metrics.clicks_point_estimate:.2f} +/- "
            f"{metrics.clicks_margin_of_error:.2f})"
            if has_click_metrics
            else "Clicks (not populated)"
        )
        print(
            f"Inconclusive: No significant action taken. {conv_status}, {click_status}."
            " Allowing the experiment to continue running."
        )
    else:
        print(
            "Conversion and click performance metrics are not yet populated. "
            "Allowing the experiment to continue running."
        )
      

Ruby

def evaluate_experiment(client, customer_id, row)
  # This function evaluates performance metrics and immediately takes action
  # to update the experiment's status (promote, end, or graduate) if
  # statistical significance thresholds are met.
  metrics = row.metrics
  experiment_resource_name = row.experiment.resource_name

  has_conv_metrics = !metrics.nil? &&
                     metrics.has_conversions_absolute_change_p_value? &&
                     metrics.has_conversions_absolute_change_point_estimate? &&
                     metrics.has_conversions_absolute_change_margin_of_error?
  has_click_metrics = !metrics.nil? &&
                      metrics.has_clicks_p_value? &&
                      metrics.has_clicks_point_estimate? &&
                      metrics.has_clicks_margin_of_error?

  # 1. Evaluate conversion success as a primary success signal if available.
  # - Point Estimate: Represents the estimated average lift or difference in conversions.
  # - Margin of Error: Outlines the confidence interval bounds. Note that the margin_of_error
  #   provided by the API is calculated for a preset confidence level which is set based on the experiment type.
  # - Lower Bound: (Point Estimate - Margin of Error). If this value is above 0,
  #   we have statistical significance that performance has improved.
  if has_conv_metrics
    conv_p_value = metrics.conversions_absolute_change_p_value
    conv_lift = metrics.conversions_absolute_change_point_estimate
    conv_error = metrics.conversions_absolute_change_margin_of_error
    conv_lower_bound = conv_lift - conv_error

    if conv_p_value <= P_VALUE_THRESHOLD
      if conv_lower_bound > 0
        puts sprintf(
          "Significant Success: Conversions increased. Even at the lower " \
          "bound, the lift is %.2f. Promoting changes.",
          conv_lower_bound,
        )
        promote_experiment(client, customer_id, experiment_resource_name)
        return
      elsif (conv_lift + conv_error) < 0
        puts sprintf(
          "Significant Decline: Even the upper bound (%.2f) is below zero. " \
          "Ending experiment.",
          conv_lift + conv_error,
        )
        end_experiment(client, customer_id, experiment_resource_name)
        return
      end
    end
  end

  # 2. Evaluate click volume as a secondary signal.
  # This is helpful as an early indicator or for lower-volume accounts.
  if has_click_metrics
    click_p_value = metrics.clicks_p_value
    click_lift = metrics.clicks_point_estimate
    click_error = metrics.clicks_margin_of_error
    click_lower_bound = click_lift - click_error

    if click_p_value <= P_VALUE_THRESHOLD && click_lower_bound > 0
      # We have a directional winner: high confidence in more traffic,
      # but not enough data to confirm conversion impact yet.
      puts sprintf("Click volume is significantly up (+%.1f%%).", click_lift * 100)

      # Graduation is only supported for separate campaign experiments, not
      # intra-campaign experiments where there is no separate treatment campaign.
      experiment_type = row.experiment.type
      if experiment_type != :ADOPT_BROAD_MATCH_KEYWORDS && experiment_type != :ADOPT_AI_MAX
        puts "Graduating treatment campaign for further manual analysis."
        graduate_experiment(client, customer_id, experiment_resource_name)
      else
        puts "Intra-campaign trial detected: graduation is not supported. " \
             "Continuing to run the experiment to gather more conversion data."
      end
      return
    end
  end

  # 3. Print status if no action was taken.
  if has_conv_metrics || has_click_metrics
    conv_status = if has_conv_metrics
      sprintf(
        "Conversions (p=%.2f, lift=%.2f +/- %.2f)",
        metrics.conversions_absolute_change_p_value,
        metrics.conversions_absolute_change_point_estimate,
        metrics.conversions_absolute_change_margin_of_error,
      )
    else
      "Conversions (not populated)"
    end

    click_status = if has_click_metrics
      sprintf(
        "Clicks (p=%.2f, lift=%.2f +/- %.2f)",
        metrics.clicks_p_value,
        metrics.clicks_point_estimate,
        metrics.clicks_margin_of_error,
      )
    else
      "Clicks (not populated)"
    end

    puts "Inconclusive: No significant action taken. #{conv_status}, #{click_status}. " \
         "Allowing the experiment to continue running."
  else
    puts "Conversion and click performance metrics are not yet populated. " \
         "Allowing the experiment to continue running."
  end
end
      

Perl

This example is not yet available in Perl; you can take a look at the other languages.
    

curl

Beneficios en comparación con los informes de campañas

Los informes de experimentos directos ofrecen varias ventajas en comparación con la consulta de informes de campañas por separado:

  1. Métricas centralizadas: Recupera las métricas de control y tratamiento en una sola fila.
  2. Datos de confianza estadística: Proporciona valores p calculados, estimaciones puntuales y márgenes de error.
  3. Eficiencia: Elimina la necesidad de unir o comparar manualmente los resultados de varios informes.
  4. Compatibilidad con experimentos dentro de la campaña: Es la única forma de comparar el control con el tratamiento en los experimentos dentro de la campaña, en los que el tráfico se divide dentro de una sola campaña.

Informes de campañas

En el caso de los experimentos que crean campañas de tratamiento independientes (por ejemplo, SEARCH_CUSTOM), puedes consultar el recurso campaign y usar campaign.experiment_type para identificar las campañas BASE (control) y EXPERIMENT (tratamiento). Este enfoque es útil si necesitas segmentar las métricas en un nivel más detallado (como por grupo de anuncios o palabra clave) o ver los metadatos de la campaña que no están disponibles en el recurso experiment. Sin embargo, requiere que realices comparaciones de rendimiento y cálculos estadísticos de forma manual.

No puedes usar los informes a nivel de la campaña para comparar los grupos experimentales de los experimentos dentro de la campaña, ya que la división del tráfico se produce de forma interna en una sola campaña. Cuando se consulta campaign para un experimento dentro de la campaña, solo se devuelven los totales agregados.

Informes de Brand Lift

Puedes generar informes sobre los estudios de Brand Lift en la API de Google Ads con recursos de medición de Brand Lift dedicados.

Recursos de Brand Lift y vistas de desglose

Consulta el recurso LiftMeasurementFlight para recuperar los resultados del estudio de Brand Lift a nivel del período, incluidos los períodos de las fechas (start_date y end_date) en la zona horaria del cliente.

Para analizar las métricas de Brand Lift en diferentes dimensiones de segmentación, consulta los recursos de desglose correspondientes:

La enumeración BrandLiftMeasurementType especifica el tipo de medición para el estudio, como el reconocimiento de la marca o el recuerdo del anuncio.

Ejemplos de consultas de Brand Lift

Debido a que los metadatos de los vuelos y las estadísticas de efectividad se encuentran en recursos separados, la consulta de los detalles de los vuelos y las estadísticas de rendimiento requiere consultas de GAQL independientes.

Consulta de detalles del vuelo

Para recuperar los metadatos de un período de Brand Lift, como su estado, tipo de medición y fechas programadas, consulta el recurso LiftMeasurementFlight:

SELECT
  lift_measurement_flight.lift_measurement_config_id,
  lift_measurement_flight.lift_measurement_flight_id,
  lift_measurement_flight.name,
  lift_measurement_flight.status,
  lift_measurement_flight.lift_type,
  lift_measurement_flight.start_date,
  lift_measurement_flight.end_date
FROM lift_measurement_flight
WHERE lift_measurement_flight.lift_measurement_config_id = CONFIG_ID

Consulta de estadísticas

Para recuperar las métricas de Brand Lift, consulta el recurso de desglose adecuado (o la configuración de estudio general en LiftMeasurementConfig). Por ejemplo, la siguiente consulta recupera las métricas de Brand Lift desglosadas por campaña de LiftMeasurementCampaign:

SELECT
  lift_measurement_campaign.lift_measurement_config_id,
  lift_measurement_campaign.campaign,
  metrics.absolute_brand_lift,
  metrics.relative_brand_lift
FROM lift_measurement_campaign
WHERE lift_measurement_campaign.lift_measurement_config_id = CONFIG_ID

Informes de Efectividad de conversiones

Puedes medir el impacto incremental de tus anuncios en las conversiones con los informes de Efectividad de conversiones en la API de Google Ads.

Configuración y métricas de la Efectividad de conversiones

Consulta el recurso LiftMeasurementConfig para recuperar las configuraciones de estudio y los datos de rendimiento del estudio de efectividad de conversiones.

El recurso proporciona métricas de Efectividad de conversiones para evaluar el rendimiento incremental:

Los informes de Efectividad de conversiones también permiten segmentar por acciones de conversión y recuperar detalles de las campañas vinculadas, detalles de los experimentos y objetivos de conversión.

A partir de la versión v26, puedes descubrir la configuración de la medición de efectividad vinculada a una campaña directamente desde el recurso campaign con Campaign.lift_measurement_config. Esto evita tener que comparar datos mediante referencia cruzada el recurso LiftMeasurementConfig por separado:

SELECT
  campaign.id,
  campaign.lift_measurement_config
FROM campaign
WHERE campaign.id = CAMPAIGN_ID

El campo lift_measurement_config que se muestra contiene el nombre del recurso en el formato customers/{customer_id}/liftMeasurementConfigs/{lift_measurement_config_id}.

Nota: lift_measurement_config contiene el nombre del recurso de la configuración vinculada más recientemente (activa o inactiva) si la campaña ejecutó varios experimentos de efectividad.

Ejemplo de consulta de Efectividad de conversiones

La siguiente consulta de GAQL recupera los parámetros de configuración de la efectividad de conversiones y las métricas de rendimiento clave. Ten en cuenta que segments.conversion_lift_start_date y segments.conversion_lift_end_date son campos INT64 con formato de números enteros de 8 dígitos sin comillas en formato YYYYMMDD (por ejemplo, 20260501):

SELECT
  lift_measurement_config.lift_measurement_config_id,
  segments.conversion_lift_start_date,
  segments.conversion_lift_end_date,
  segments.conversion_lift_included_conversion_action_types,
  metrics.conversion_lift_baseline_conversions,
  metrics.conversion_lift_exposed_conversions,
  metrics.incremental_conversions,
  metrics.cost_per_incremental_conversion,
  metrics.relative_conversion_lift,
  metrics.incremental_conversion_value,
  metrics.relative_conversion_value_lift
FROM lift_measurement_config
WHERE segments.conversion_lift_start_date = YYYYMMDD
  AND segments.conversion_lift_end_date = YYYYMMDD
  AND lift_measurement_config.lift_measurement_config_id = CONFIG_ID

Informes de Efectividad de búsqueda

Puedes medir el aumento en el volumen de búsquedas orgánicas que generan tus campañas publicitarias con los informes de efectividad de búsqueda de la API de Google Ads. La Efectividad de búsqueda cuantifica la diferencia en el comportamiento de búsqueda de tu marca o tus productos entre los usuarios expuestos a tus anuncios y un grupo de control no expuesto.

Recursos y segmentación de la Efectividad de búsqueda

Consulta el recurso SearchLiftKeywordBundle para recuperar detalles sobre los paquetes de palabras clave configurados para los estudios de efectividad de búsqueda. SearchLiftKeywordBundle es de solo lectura en la API (todos los campos son OUTPUT_ONLY), y los paquetes de palabras clave se configuran en la IU de Google Ads o por representantes de Google o Global Product Solutions (GPS). Sus campos consultables en GAQL son resource_name, search_lift_keyword_bundle_id, source (SearchLiftMatchingInfoSource) y status (SearchLiftKeywordBundleStatus) (el campo repetido keywords no se puede seleccionar en las consultas de GAQL).

Consulta el recurso LiftMeasurementConfig para recuperar las métricas de Efectividad de búsqueda y las configuraciones de estudio generales.

Puedes segmentar el rendimiento de la efectividad de búsqueda con las siguientes dimensiones:

  • segments.search_lift_keyword_bundle: Segmenta por el nombre del recurso del paquete de palabras clave. Compatible con segments.search_property, segments.date y segmentos demográficos (segments.device, segments.age_range y segments.gender).
  • segments.search_property: Segmenta por la propiedad de búsqueda en la que se produjo la búsqueda, definida por SearchLiftSearchProperty (como la Búsqueda de Google o YouTube). Ten en cuenta que segments.search_property solo es compatible con segments.search_lift_keyword_bundle y segments.date. No se admite la combinación de segments.search_property con segmentos demográficos (segments.device, segments.age_range o segments.gender), y esta combinación genera un error en la validación de consultas de la API.
  • Segmentos demográficos y de fecha: segments.device, segments.age_range, segments.gender y segments.date.

Métricas de efectividad de búsqueda

El recurso LiftMeasurementConfig proporciona métricas de efectividad de búsqueda para evaluar los cambios en el comportamiento de búsqueda:

Cuando la efectividad es estadísticamente positiva, se informan las siguientes métricas incrementales normalizadas, junto con sus límites inferior y superior correspondientes del intervalo de confianza del 90% (*_p90_lower_bound y *_p90_upper_bound):

Ejemplos de búsquedas de efectividad de búsqueda

Las siguientes consultas de GAQL muestran cómo recuperar los paquetes de palabras clave y las métricas de rendimiento de la efectividad de búsqueda.

Consulta de paquete de palabras clave

Para recuperar los paquetes de palabras clave configurados para las mediciones de la efectividad de búsqueda, sigue estos pasos:

SELECT
  search_lift_keyword_bundle.resource_name,
  search_lift_keyword_bundle.search_lift_keyword_bundle_id,
  search_lift_keyword_bundle.source,
  search_lift_keyword_bundle.status
FROM search_lift_keyword_bundle

Consulta de métricas

Los valores de search_lift_keyword_bundle.resource_name recuperados en la consulta del paquete de palabras clave corresponden a los valores que se muestran en segments.search_lift_keyword_bundle en la siguiente consulta. Para descubrir el CONFIG_ID de tu estudio, consulta lift_measurement_config (por ejemplo, SELECT lift_measurement_config.lift_measurement_config_id, lift_measurement_config.name FROM lift_measurement_config).

Para recuperar las métricas de efectividad de búsqueda segmentadas por paquete de palabras clave y propiedad de búsqueda, sigue estos pasos:

SELECT
  lift_measurement_config.lift_measurement_config_id,
  segments.search_lift_keyword_bundle,
  segments.search_property,
  metrics.relative_search_lift,
  metrics.relative_search_lift_p90_lower_bound,
  metrics.relative_search_lift_p90_upper_bound,
  metrics.incremental_searches_p_value,
  metrics.search_lift_cost_micros,
  metrics.search_lift_impressions,
  metrics.normalized_incremental_searches,
  metrics.normalized_incremental_searches_p90_lower_bound,
  metrics.normalized_incremental_searches_p90_upper_bound
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID

Prácticas recomendadas

Las siguientes prácticas recomendadas se aplican a los experimentos A/B estándar (como los experimentos de campaña y dentro de la campaña). Los estudios de medición de efectividad (Brand Lift, Efectividad de conversiones y Efectividad de búsqueda) usan configuraciones específicas del estudio y registran intervalos de confianza del 90% (*_p90_lower_bound y *_p90_upper_bound) en lugar de un umbral de confianza del 95%.

  • Selecciona un nivel de confianza adecuado: Establecer un umbral de valor p más bajo puede proporcionar orientación direccional más rápido, especialmente con presupuestos o volúmenes de conversiones más bajos. Un nivel de confianza del 95% (valor p <= 0.05) se considera el estándar académico y puede ser mejor para obtener resultados más precisos en un período más largo.
  • Ejecuta los experimentos durante un período suficientemente largo: Ejecuta los experimentos durante, al menos, 4 semanas para tener en cuenta los ciclos de rendimiento semanales, las demoras en las conversiones y los períodos de aprendizaje.
  • Permite que transcurra el período inicial: En el caso de las campañas que utilizan ofertas automáticas o prueban funciones nuevas, ignora los datos de las primeras 1 o 2 semanas para que los modelos de ofertas y los niveles de tráfico se recalibren según la división.
  • Usa divisiones de 50/50: Por lo general, una división del tráfico de 50/50 es la forma más rápida de obtener resultados estadísticamente significativos.
  • Programa con anticipación: Configura la fecha de inicio de tu experimento para que sea entre 3 y 7 días en el futuro, de modo que haya tiempo para los procesos de revisión y aprobación de anuncios.