Cree acciones de conversión

En esta guía, se proporciona una lista de los diferentes tipos de acciones de conversión que puedes crear con la API de Google Ads, información sobre cómo se asignan a la interfaz web de Google Ads y un ejemplo de código detallado que muestra cómo crear acciones de conversión nuevas.

Para medir las conversiones, configura un ConversionAction para el type de la acción de conversión a la que deseas realizar un seguimiento. Por ejemplo, una compra en línea y una llamada telefónica requieren acciones de conversión diferentes.

La mejor manera de configurar acciones de conversión nuevas en la API es usar el ejemplo de código para agregar una acción de conversión que se incluye a continuación. La muestra controla todas las tareas de autenticación en segundo plano y te guía para crear un ConversionAction.

La mayoría de las acciones de conversión también requieren pasos adicionales de tu parte para hacerles un seguimiento. Por ejemplo, para hacer un seguimiento de las conversiones en tu sitio web, debes agregar un fragmento de código llamado etiqueta a la página de conversión de tu sitio web. Para conocer otros requisitos de las acciones de conversión, consulta nuestro artículo del Centro de ayuda.

Conversiones en el sitio web

Una conversión en el sitio web te permite hacer un seguimiento de las acciones en el sitio web, como las ventas en línea, los clics en vínculos, las vistas de página y los registros.

Para hacer un seguimiento de las conversiones en tu sitio web, debes crear un ConversionAction con ConversionActionType establecido en WEBPAGE y agregar un fragmento de código llamado etiqueta a la página de conversión de tu sitio web.

ConversionAction abarca varios tipos de conversiones en el sitio web, que se distinguen dentro de la API por el campo type en cada TagSnippet que se indica en el campo tag_snippets de un ConversionAction.

Un TagSnippet proporciona el código de seguimiento que se debe incluir en tu sitio web para hacer un seguimiento de tus acciones de conversión. Las conversiones de sitio web y de clic en un número de teléfono requieren el elemento event_snippet, que se debe colocar en las páginas web que indican una acción de conversión, como una página de confirmación de confirmación de la compra o de envío de un formulario de clientes potenciales, y global_site_tag, que se debe instalar en todas las páginas de tu sitio web. Puedes recuperar ambos atributos con ConversionActionService. Consulta nuestro Centro de ayuda para obtener más información sobre cómo etiquetar tus páginas.

En la siguiente tabla, se muestran los parámetros de API equivalentes que se deben usar para cada fuente en la interfaz web de Google Ads:

Tipo de código de seguimiento Fuente de Google Ads
WEBPAGE Sitio web, Sitio web (Google Analytics (GA4))
WEBPAGE_ONCLICK Sitio web, Sitio web (Google Analytics (GA4))
CLICK_TO_CALL Clics en el número telefónico
--- Sitio web (Google Analytics (UA))

Conversiones de aplicaciones

Una conversión de aplicación te permite hacer un seguimiento de las instalaciones de aplicaciones para dispositivos móviles o las compras directas desde la aplicación desde Google Play Store.

En la siguiente tabla, se muestran los parámetros de API equivalentes de ConversionActionType que se deben usar para cada fuente en la interfaz web de Google Ads:

Tipo de acción de conversión Fuente de Google Ads
GOOGLE_PLAY_DOWNLOAD Google Play > Instalaciones
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Compras directas desde la aplicación

Si deseas hacer un seguimiento de otras acciones de aplicaciones para dispositivos móviles con propiedades de Google Analytics 4 o estadísticas de aplicaciones de terceros. Consulta Tipos adicionales de acciones de conversión.

Conversiones de llamadas telefónicas

El seguimiento de conversiones de llamadas telefónicas te permite hacer un seguimiento de las llamadas desde anuncios, las llamadas a un número en tu sitio web y los clics en números en sitios móviles.

En la siguiente tabla, se muestran los parámetros de API equivalentes de ConversionActionType que se deben usar para cada fuente en la interfaz web de Google Ads:

Tipo de acción de conversión Fuente de Google Ads
AD_CALL Llamadas desde anuncios que utilizan extensiones de llamada o anuncios solo de llamada
WEBSITE_CALL Llamadas a un número de teléfono de su sitio web
CLICK_TO_CALL Clics en un número de su sitio web para celulares

El tipo CLICK_TO_CALL difiere del tipo AD_CALL en que no realiza un seguimiento de las llamadas telefónicas reales. En cambio, CLICK_TO_CALL solo realiza un seguimiento de los clics en un número de teléfono desde un dispositivo móvil. Esto es útil cuando no puedes usar un número de transferencia de llamadas de Google para hacer un seguimiento de las llamadas telefónicas.

AD_CALL

Una acción de conversión de AD_CALL aparece como una conversión de Llamadas desde anuncios en la interfaz web de Google Ads. Después de crear tu acción de conversión AD_CALL, especifica su nombre de recurso en el campo call_conversion_action cuando crees un CallAsset. Los recursos de llamada te permiten mostrar un número de teléfono directamente en tus anuncios.

Una llamada se registra como una conversión si dura más que una duración especificada. El valor predeterminado es de 60 segundos.

WEBSITE_CALL

Una acción de conversión de WEBSITE_CALL aparece como una conversión de Llamadas desde un sitio web en la interfaz web de Google Ads.

A diferencia de AD_CALL, este servicio de seguimiento requiere que se agreguen event_snippet y global_site_tag a tu sitio web para recuperar el número de transferencia de llamadas dinámico de Google para el seguimiento de llamadas en los números que aparecen en tu sitio web. Además, debes configurar un recurso de llamada y vincularlo a nivel del cliente, la campaña o el grupo de anuncios.

Importe conversiones sin conexión

En la siguiente tabla, se muestran los parámetros de API equivalentes de ConversionActionType que se deben usar para cada fuente en la interfaz web de Google Ads y un vínculo a la documentación de cada tipo de acción de conversión específica:

Tipo de acción de conversión Fuente de Google Ads Guía de configuración de la API
UPLOAD_CLICKS Realiza un seguimiento de las conversiones generadas a partir de clics y de las conversiones avanzadas de clientes potenciales Guía para subir clics
Guía de conversiones avanzadas de clientes potenciales
UPLOAD_CALLS Hacer un seguimiento de las conversiones generadas a partir de llamadas Guía de configuración de la API
STORE_SALES Realiza un seguimiento de las conversiones de ventas en la tienda Guía de configuración de la API

Conversiones avanzadas de sitios web

Las conversiones avanzadas de sitios web te permiten enviar datos de conversiones de origen para las acciones de conversión WEBPAGE en un plazo de 24 horas después de un evento de conversión, en lugar de hacerlo al mismo tiempo. Esto permite encontrar datos de origen de diversas fuentes, como una base de datos de clientes o un sistema de CRM.

Tipos adicionales de acciones de conversión

La API de Google Ads pone a disposición tipos adicionales de acciones de conversión en los informes, pero puede limitar o prohibir la creación o modificación de esas acciones.

Conversiones SKAdNetwork

Si publicas campañas de aplicaciones para iOS y ya implementaste SKAdNetwork, puedes acceder a los datos de SKAdNetwork que se proporcionan a Google en el nivel de Customer y Campaign con los siguientes recursos:

Campo del informe Descripción
metrics.sk_ad_network_installs Es la cantidad de instalaciones que informa Apple. Esta métrica solo se puede segmentar con cualquier combinación de segments.sk_ad_network_conversion_value y segmentos relacionados con la fecha.
metrics.sk_ad_network_total_conversions Es la cantidad total de conversiones, incluidas las instalaciones y otros tipos de conversiones que informa Apple. Esta métrica solo se puede segmentar por segmentos relacionados con SKAdNetwork y segmentos relacionados con la fecha.
segments.sk_ad_network_ad_event_type Es el tipo de evento que ocurrió para una conversión en particular.
segments.sk_ad_network_attribution_credit Indica cómo se acredita la atribución para una conversión en particular.
segments.sk_ad_network_fine_conversion_value

Es el valor de una conversión que informa Apple. Este segmento no se puede aplicar a ninguna métrica que no sea metrics.sk_ad_network_installs o metrics.sk_ad_network_total_conversions, y solo se puede combinar con segmentos relacionados con fechas.

Se muestra un valor de 0 si Apple informa un valor de 0 y, de lo contrario, no se muestra ningún valor. Verifica la presencia del campo para distinguir entre los dos casos.

segments.sk_ad_network_coarse_conversion_value Es el valor aproximado de una conversión individual.
segments.sk_ad_network_postback_sequence_index Es la posición de la notificación de conversión, en secuencia, para una conversión en particular.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id El ID de la aplicación donde se mostró el anuncio que generó la instalación de la red de publicidad de StoreKit de iOS
segments.sk_ad_network_source_domain Es el sitio web en el que se mostró el anuncio que generó la instalación de la red de publicidad de StoreKit de iOS. Un valor nulo significa que este segmento no es aplicable (por ejemplo, una campaña que no es para iOS) o que no estaba presente en ninguna notificación de conversión que envió Apple.
segments.sk_ad_network_source_type El tipo de fuente en la que se mostró el anuncio que generó la instalación de la red de publicidad de StoreKit de iOS Un valor nulo significa que este segmento no es aplicable (por ejemplo, una campaña que no es para iOS) o que ni el dominio de origen ni la app de origen estaban presentes en ninguna notificación de conversión que envió Apple.
segments.sk_ad_network_user_type Es el tipo de usuario que generó una conversión en particular.
segments.sk_ad_network_redistributed_fine_conversion_value Los valores de conversión de este segmento incluyen valores nulos que se redistribuyeron a los valores de conversión. Este segmento representa la suma de los valores de conversión fina observados que muestra Apple y los valores nulos modelados de Google.
segments.sk_ad_network_version La versión de la API de la red de publicidad de Store Kit de iOS que se usó

También puedes guardar una asignación de valor de conversión de SKAdNetwork para clientes vinculados específicos con apps para iOS a través de CustomerSkAdNetworkConversionValueSchema.

Código de Python de muestra

#!/usr/bin/env python
# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import argparse
import sys

from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException

def main(client, customer_id):
    """Adds a keyword plan, campaign, ad group, etc. to the customer account.

    Also handles errors from the API and prints them.

    Args:
        client: An initialized instance of GoogleAdsClient
        customer_id: A str of the customer_id to use in requests.
    """

    res = update_skan_cv_schema(
        client, customer_id, "my_app_id", "account_link_id"
    )
    print(res)

def update_skan_cv_schema(client, customer_id, app_id, account_link_id):
    skan_service = client.get_service(
        "CustomerSkAdNetworkConversionValueSchemaService"
    )

    req = client.get_type(
        "MutateCustomerSkAdNetworkConversionValueSchemaRequest"
    )
    operation = client.get_type(
        "CustomerSkAdNetworkConversionValueSchemaOperation"
    )
    schema_instance = client.get_type(
        "CustomerSkAdNetworkConversionValueSchema"
    )

    new_schema = operation.update
    new_schema.resource_name = (
        skan_service.customer_sk_ad_network_conversion_value_schema_path(
            "customer_id", "account_link_id"
        )
    )
    new_schema.schema.app_id = app_id
    new_schema.schema.measurement_window_hours = 48

    skan_cv_mapping = (
        schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings()
    )
    skan_cv_mapping.fine_grained_conversion_value = 0  # 0 - 63
    skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0
    skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48

    skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event()
    skan_cv_event.mapped_event_name = "TEST"
    skan_cv_event.event_revenue_value = 10

    skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event)
    new_schema.schema.fine_grained_conversion_value_mappings.append(
        skan_cv_mapping
    )

    req.operation = operation
    req.customer_id = customer_id

    res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema(
        req
    )
    return res

if __name__ == "__main__":
    # GoogleAdsClient will read the google-ads.yaml configuration file in the
    # home directory if none is specified.
    googleads_client = GoogleAdsClient.load_from_storage(
        version="v18"
    )

    parser = argparse.ArgumentParser(
        description="Creates a keyword plan for specified customer."
    )
    # The following argument(s) should be provided to run the example.
    parser.add_argument(
        "-c",
        "--customer_id",
        type=str,
        required=True,
        help="The Google Ads customer ID.",
    )
    args = parser.parse_args()

    try:
        main(googleads_client, args.customer_id)
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)
  

Google Analytics

Las conversiones de una propiedad Google Analytics vinculada tienen uno de los siguientes valores de type:

  • Conversión de la propiedad GA4:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    También puedes recuperar el ID, el nombre de la propiedad y el nombre del evento de GA4 desde el campo google_analytics_4_settings.

  • Conversión de propiedad Universal Analytics:

    • UNIVERSAL_ANALYTICS_GOAL
    • UNIVERSAL_ANALYTICS_TRANSACTION

Puedes realizar los siguientes cambios en una conversión de una propiedad GA4:

  • Para importar la conversión de tu propiedad GA4 a tu cuenta de Google Ads, modifica su campo status de HIDDEN a ENABLED.
  • Modifica los campos primary_for_goal y category para indicar cómo debería afectar las ofertas y los informes de Google Ads.
  • Actualiza su name o value_settings.
  • Quita la conversión de tu cuenta de Google Ads con una operación remove.

Cualquier intento de modificar otros atributos de una conversión de GA4 importada o cualquier atributo de una conversión de Universal Analytics importada genera un error MUTATE_NOT_ALLOWED. Solo puedes realizar esos cambios con la IU de Google Ads.

Firebase y estadísticas de aplicaciones de terceros

Para importar estadísticas de aplicaciones de terceros o conversiones de Firebase, cambia el status de ConversionAction de HIDDEN a ENABLED con el método mutate de ConversionActionService. No se admite la actualización de app_id para estas acciones de conversión.

  • FIREBASE_ANDROID_FIRST_OPEN
  • FIREBASE_ANDROID_IN_APP_PURCHASE
  • FIREBASE_ANDROID_CUSTOM
  • FIREBASE_IOS_FIRST_OPEN
  • FIREBASE_IOS_IN_APP_PURCHASE
  • FIREBASE_IOS_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_ANDROID_CUSTOM
  • THIRD_PARTY_APP_ANALYTICS_IOS_FIRST_OPEN
  • THIRD_PARTY_APP_ANALYTICS_IOS_IN_APP_PURCHASE
  • THIRD_PARTY_APP_ANALYTICS_IOS_CUSTOM

Ventas en la tienda: Carga a la acción de conversión con informes

Si bien no puedes crear acciones de conversión STORE_SALES ni STORE_SALES_DIRECT_UPLOAD con la API de Google Ads, esta admite la carga de transacciones de ventas en la tienda.

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Tipos de acciones de conversión de solo lectura

Los siguientes tipos de acciones de conversión son de solo lectura en la API de Google Ads y se proporcionan para generar informes.

  • ANDROID_APP_PRE_REGISTRATION
  • ANDROID_INSTALLS_ALL_OTHER_APPS
  • FLOODLIGHT_ACTION
  • FLOODLIGHT_TRANSACTION
  • GOOGLE_HOSTED
  • LEAD_FORM_SUBMIT
  • SALESFORCE
  • SEARCH_ADS_360
  • SMART_CAMPAIGN_AD_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_CLICKS_TO_CALL
  • SMART_CAMPAIGN_MAP_DIRECTIONS
  • SMART_CAMPAIGN_TRACKED_CALLS
  • STORE_VISITS
  • WEBPAGE_CODELESS

Desconocido

Si tu cuenta de Google Ads incluye otros tipos de acciones de conversión, es posible que las consultas y los informes muestren acciones de conversión en las que ConversionAction.type sea UNKNOWN. La API no admite la administración de estas acciones de conversión, pero las muestra en los informes para proporcionar resultados completos de las métricas de conversión clave, como metrics.conversions y metrics.conversions_value.

Ejemplo de código

En el siguiente ejemplo de código, se explica el proceso para crear una acción de conversión nueva. Específicamente, crea una acción de conversión con type establecida en UPLOAD_CLICKS. Este es el mismo flujo de la IU de Google Ads que se utiliza para crear una acción de conversión nueva con Importar > Importación manual con la API o cargas > Hacer un seguimiento de las conversiones a partir de clics. También establece category en DEFAULT.

Se aplica la siguiente configuración predeterminada:

Java

private void runExample(GoogleAdsClient googleAdsClient, long customerId) {

  // Creates a ConversionAction.
  ConversionAction conversionAction =
      ConversionAction.newBuilder()
          // Note that conversion action names must be unique. If a conversion action already
          // exists with the specified conversion_action_name the create operation will fail with
          // a ConversionActionError.DUPLICATE_NAME error.
          .setName("Earth to Mars Cruises Conversion #" + getPrintableDateTime())
          .setCategory(ConversionActionCategory.DEFAULT)
          .setType(ConversionActionType.WEBPAGE)
          .setStatus(ConversionActionStatus.ENABLED)
          .setViewThroughLookbackWindowDays(15L)
          .setValueSettings(
              ValueSettings.newBuilder()
                  .setDefaultValue(23.41)
                  .setAlwaysUseDefaultValue(true)
                  .build())
          .build();

  // Creates the operation.
  ConversionActionOperation operation =
      ConversionActionOperation.newBuilder().setCreate(conversionAction).build();

  try (ConversionActionServiceClient conversionActionServiceClient =
      googleAdsClient.getLatestVersion().createConversionActionServiceClient()) {
    MutateConversionActionsResponse response =
        conversionActionServiceClient.mutateConversionActions(
            Long.toString(customerId), Collections.singletonList(operation));
    System.out.printf("Added %d conversion actions:%n", response.getResultsCount());
    for (MutateConversionActionResult result : response.getResultsList()) {
      System.out.printf(
          "New conversion action added with resource name: '%s'%n", result.getResourceName());
    }
  }
}
      

C#

public void Run(GoogleAdsClient client, long customerId)
{
    // Get the ConversionActionService.
    ConversionActionServiceClient conversionActionService =
        client.GetService(Services.V18.ConversionActionService);

    // Note that conversion action names must be unique.
    // If a conversion action already exists with the specified name the create operation
    // will fail with a ConversionAction.DUPLICATE_NAME error.
    string ConversionActionName = "Earth to Mars Cruises Conversion #"
        + ExampleUtilities.GetRandomString();

    // Add a conversion action.
    ConversionAction conversionAction = new ConversionAction()
    {
        Name = ConversionActionName,
        Category = ConversionActionCategory.Default,
        Type = ConversionActionType.Webpage,
        Status = ConversionActionStatus.Enabled,
        ViewThroughLookbackWindowDays = 15,
        ValueSettings = new ConversionAction.Types.ValueSettings()
        {
            DefaultValue = 23.41,
            AlwaysUseDefaultValue = true
        }
    };

    // Create the operation.
    ConversionActionOperation operation = new ConversionActionOperation()
    {
        Create = conversionAction
    };

    try
    {
        // Create the conversion action.
        MutateConversionActionsResponse response =
            conversionActionService.MutateConversionActions(customerId.ToString(),
                    new ConversionActionOperation[] { operation });

        // Display the results.
        foreach (MutateConversionActionResult newConversionAction in response.Results)
        {
            Console.WriteLine($"New conversion action with resource name = " +
                $"'{newConversionAction.ResourceName}' was added.");
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

PHP

public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
{
    // Creates a conversion action.
    $conversionAction = new ConversionAction([
        // Note that conversion action names must be unique.
        // If a conversion action already exists with the specified conversion_action_name
        // the create operation will fail with a ConversionActionError.DUPLICATE_NAME error.
        'name' => 'Earth to Mars Cruises Conversion #' . Helper::getPrintableDatetime(),
        'category' => ConversionActionCategory::PBDEFAULT,
        'type' => ConversionActionType::WEBPAGE,
        'status' => ConversionActionStatus::ENABLED,
        'view_through_lookback_window_days' => 15,
        'value_settings' => new ValueSettings([
            'default_value' => 23.41,
            'always_use_default_value' => true
        ])
    ]);

    // Creates a conversion action operation.
    $conversionActionOperation = new ConversionActionOperation();
    $conversionActionOperation->setCreate($conversionAction);

    // Issues a mutate request to add the conversion action.
    $conversionActionServiceClient = $googleAdsClient->getConversionActionServiceClient();
    $response = $conversionActionServiceClient->mutateConversionActions(
        MutateConversionActionsRequest::build($customerId, [$conversionActionOperation])
    );

    printf("Added %d conversion actions:%s", $response->getResults()->count(), PHP_EOL);

    foreach ($response->getResults() as $addedConversionAction) {
        /** @var ConversionAction $addedConversionAction */
        printf(
            "New conversion action added with resource name: '%s'%s",
            $addedConversionAction->getResourceName(),
            PHP_EOL
        );
    }
}
      

Python

def main(client, customer_id):
    conversion_action_service = client.get_service("ConversionActionService")

    # Create the operation.
    conversion_action_operation = client.get_type("ConversionActionOperation")

    # Create conversion action.
    conversion_action = conversion_action_operation.create

    # Note that conversion action names must be unique. If a conversion action
    # already exists with the specified conversion_action_name, the create
    # operation will fail with a ConversionActionError.DUPLICATE_NAME error.
    conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
    conversion_action.type_ = (
        client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
    )
    conversion_action.category = (
        client.enums.ConversionActionCategoryEnum.DEFAULT
    )
    conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
    conversion_action.view_through_lookback_window_days = 15

    # Create a value settings object.
    value_settings = conversion_action.value_settings
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response = (
        conversion_action_service.mutate_conversion_actions(
            customer_id=customer_id,
            operations=[conversion_action_operation],
        )
    )

    print(
        "Created conversion action "
        f'"{conversion_action_response.results[0].resource_name}".'
    )
      

Ruby

def add_conversion_action(customer_id)
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new


  # Add a conversion action.
  conversion_action = client.resource.conversion_action do |ca|
    ca.name = "Earth to Mars Cruises Conversion #{(Time.new.to_f * 100).to_i}"
    ca.type = :UPLOAD_CLICKS
    ca.category = :DEFAULT
    ca.status = :ENABLED
    ca.view_through_lookback_window_days = 15

    # Create a value settings object.
    ca.value_settings = client.resource.value_settings do |vs|
      vs.default_value = 15
      vs.always_use_default_value = true
    end
  end

  # Create the operation.
  conversion_action_operation = client.operation.create_resource.conversion_action(conversion_action)

  # Add the ad group ad.
  response = client.service.conversion_action.mutate_conversion_actions(
    customer_id: customer_id,
    operations: [conversion_action_operation],
  )

  puts "New conversion action with resource name = #{response.results.first.resource_name}."
end
      

Perl

sub add_conversion_action {
  my ($api_client, $customer_id) = @_;

  # Note that conversion action names must be unique.
  # If a conversion action already exists with the specified conversion_action_name,
  # the create operation fails with error ConversionActionError.DUPLICATE_NAME.
  my $conversion_action_name = "Earth to Mars Cruises Conversion #" . uniqid();

  # Create a conversion action.
  my $conversion_action =
    Google::Ads::GoogleAds::V18::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V18::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V18::Services::ConversionActionService::ConversionActionOperation
    ->new({create => $conversion_action});

  # Add the conversion action.
  my $conversion_actions_response =
    $api_client->ConversionActionService()->mutate({
      customerId => $customer_id,
      operations => [$conversion_action_operation]});

  printf "New conversion action added with resource name: '%s'.\n",
    $conversion_actions_response->{results}[0]{resourceName};

  return 1;
}
      

Este ejemplo también se puede encontrar en la carpeta de remarketing de tu biblioteca cliente y en la colección de ejemplos de código: Agrega un ejemplo de código de acción de conversión.

Validaciones

Google Ads y la API de Google Ads admiten una amplia variedad de acciones de conversión, por lo que algunas reglas de validación varían según el type de la acción.

El error más común cuando se crea una acción de conversión es DUPLICATE_NAME. Asegúrate de usar un nombre único para cada acción de conversión.

Estas son algunas sugerencias para configurar los campos ConversionAction:

Todos los campos de enumeración
Si intentas establecer cualquier campo de enumeración en UNKNOWN, se generará un error RequestError.INVALID_ENUM_VALUE.
app_id
El atributo app_id es inmutable y solo se puede establecer cuando se crea una conversión de aplicación nueva.
attribution_model_settings
Si configuras esto en una opción obsoleta, se produce un error CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS. Google Ads solo admite GOOGLE_ADS_LAST_CLICK y GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Si configuras este atributo en un valor fuera del rango permitido, se mostrará un error RangeError.TOO_LOW o RangeError.TOO_HIGH.

Este atributo debe estar en el rango [1,60] para una acción de conversión AD_CALL o WEBSITE_CALL. Para la mayoría de las demás acciones de conversión, el rango permitido es [1,30].

include_in_conversions_metric

Establecer este valor en una operación create o update falla con un error FieldError.IMMUTABLE_FIELD. En su lugar, establece primary_for_goal como se describe en la Guía de objetivos de conversión.

phone_call_duration_seconds

Si intentas configurar este atributo en una acción de conversión que no es para llamadas, se mostrará un error FieldError.VALUE_MUST_BE_UNSET.

type

El atributo type es inmutable y solo se puede establecer cuando se crea una conversión nueva.

Si actualizas una acción de conversión con type igual a UNKNOWN, se genera un error MutateError.MUTATE_NOT_ALLOWED.

value_settings

El value_settings de una acción de conversión WEBSITE_CALL o AD_CALL debe tener always_use_default_value configurado como true. Si especificas un valor de false cuando creas o actualizas este valor, se produce un error INVALID_VALUE.

view_through_lookback_window_days

Si configuras este atributo en un valor fuera del rango permitido, se mostrará un error RangeError.TOO_LOW o RangeError.TOO_HIGH. Para la mayoría de las acciones de conversión, el rango permitido es [1,30].

Este atributo no se puede establecer en las acciones de conversión AD_CALL ni WEBSITE_CALL. Si especificas un valor, se produce un error VALUE_MUST_BE_UNSET.