Criar ações de conversão

Este guia apresenta uma lista dos diferentes tipos de ações de conversão que você pode criar usando a API Google Ads, informações sobre como elas são mapeadas para a interface da Web do Google Ads e um exemplo de código detalhado que demonstra como criar novas ações de conversão.

Para medir as conversões, configure um ConversionAction para o type da ação de conversão que você quer acompanhar. Por exemplo, uma compra on-line e uma chamada telefônica exigem ações de conversão diferentes.

A melhor maneira de configurar novas ações de conversão na API é usar o exemplo de código para adicionar uma ação de conversão abaixo. O exemplo processa todas as tarefas de autenticação em segundo plano e orienta você na criação de um ConversionAction.

A maioria das ações de conversão também exige outras etapas para que você as acompanhe. Por exemplo, para acompanhar conversões no seu site, adicione um snippet de código chamado tag à página de conversão. Para requisitos detalhados de outros tipos de ação de conversão, consulte nosso artigo da Central de Ajuda.

Conversões no site

Com uma conversão de site, você pode acompanhar ações no site, como vendas on-line, cliques em links, visualizações de página e inscrições.

Para acompanhar as conversões no seu site, crie uma ConversionAction com o ConversionActionType definido como WEBPAGE e adicione um snippet de código chamado tag à página de conversão do seu site.

O ConversionAction abrange vários tipos de conversões de sites, que são distinguidos na API pelo campo type em cada TagSnippet listado no campo tag_snippets de um ConversionAction.

Um TagSnippet fornece o código de acompanhamento que precisa ser incluído no seu site para acompanhar as ações de conversão. As conversões de site e clique no número de telefone exigem o event_snippet, que precisa ser colocado em páginas da Web que indicam uma ação de conversão, como uma página de confirmação de finalização de compra ou de envio de formulário de lead, e global_site_tag, que precisa ser instalado em todas as páginas do seu site. É possível recuperar esses dois atributos com o ConversionActionService. Confira nossa Central de Ajuda para mais informações sobre como marcar suas páginas.

A tabela a seguir mostra os parâmetros de API equivalentes a serem usados para cada Origem na interface da Web do Google Ads:

Tipo de código de acompanhamento Origem do Google Ads
WEBPAGE Site, Site (Google Analytics (GA4))
WEBPAGE_ONCLICK Site, Site (Google Analytics (GA4))
CLICK_TO_CALL Cliques no número de telefone

Conversões de apps

Com uma conversão de app, você pode acompanhar as instalações ou compras no app para dispositivos móveis na Google Play Store.

A tabela a seguir mostra os parâmetros equivalentes da API ConversionActionType a serem usados para cada Origem na interface da Web do Google Ads:

Tipo de ação de conversão Origem do Google Ads
GOOGLE_PLAY_DOWNLOAD Google Play > Instalações
GOOGLE_PLAY_IN_APP_PURCHASE Google Play > Compras no app

Para acompanhar outras ações de apps para dispositivos móveis usando as propriedades do Google Analytics 4 ou a análise de aplicativos de terceiros, consulte Outros tipos de ação de conversão.

Conversões de ligações telefônicas

O acompanhamento de conversões de chamadas telefônicas permite acompanhar ligações de anúncios, ligações para um número no seu site e cliques em números em sites para dispositivos móveis.

A tabela a seguir mostra os parâmetros equivalentes da API ConversionActionType a serem usados para cada Origem na interface da Web do Google Ads:

Tipo de ação de conversão Origem do Google Ads
AD_CALL Chamadas a partir de anúncios com extensões de chamada ou anúncios só para chamadas
WEBSITE_CALL Chamadas para um número de telefone no seu site
CLICK_TO_CALL Clica em um número no seu website para dispositivos móveis

AD_CALL

Uma ação de conversão AD_CALL aparece como uma conversão de chamadas de anúncios na interface da Web do Google Ads. Depois de criar a ação de conversão AD_CALL, especifique o nome do recurso no campo call_conversion_action ao criar uma CallAsset. Os recursos de ligação permitem mostrar um número de telefone diretamente nos seus anúncios.

Uma chamada é considerada como conversão quando ultrapassa a duração especificada. O padrão é 60 segundos.

WEBSITE_CALL

Uma ação de conversão WEBSITE_CALL aparece como uma conversão de chamadas de um site na interface da Web do Google Ads.

Ao contrário do AD_CALL, esse rastreador exige que event_snippet e global_site_tag sejam adicionados ao seu site para recuperar o número dinâmico de encaminhamento de chamadas do Google para o acompanhamento de chamadas em números listados no site. Além disso, é preciso configurar um recurso de ligação e vinculá-lo no nível do cliente, da campanha ou do grupo de anúncios.

CLICK_TO_CALL

Uma ação de conversão CLICK_TO_CALL aparece como uma conversão de Cliques no seu número no site para dispositivos móveis na interface da Web do Google Ads.

O tipo CLICK_TO_CALL difere do tipo AD_CALL porque não rastreia ligações telefônicas reais. Em vez disso, CLICK_TO_CALL só monitora cliques em um número de telefone de um dispositivo móvel. Isso é útil quando você não pode usar um número de encaminhamento de chamadas do Google para rastrear ligações.

Importar conversões off-line

A tabela a seguir mostra os parâmetros de API equivalentes ConversionActionType a serem usados para cada Origem na interface da Web do Google Ads e um link para a documentação de cada tipo específico de ação de conversão:

Tipo de ação de conversão Origem do Google Ads Guia de configuração da API
UPLOAD_CLICKS Acompanhar conversões de cliques e conversões otimizadas para leads Guia de upload de cliques
Guia de conversões otimizadas para leads
UPLOAD_CALLS Acompanhar conversões de chamadas Guia de configuração da API
STORE_SALES Acompanhar as conversões de vendas na loja Guia de configuração da API

Conversões otimizadas

As conversões otimizadas ajudam a melhorar a precisão da medição de conversões, complementando as tags de conversão atuais com dados próprios, como e-mail, nome, endereço residencial e número de telefone.

A tabela a seguir mostra os parâmetros equivalentes da API a serem usados para cada tipo de conversão aprimorada:

Tipo de ação de conversão Tipo de conversão otimizada Guia de configuração da API
UPLOAD_CLICKS Conversões otimizadas para leads
Melhoram a medição das transações off-line de um lead ou visitante do site
Guia de configuração da API
WEBPAGE Conversões otimizadas para a Web
Melhoram a medição das conversões on-line
Guia de configuração da API

Outros tipos de ações de conversão

A API Google Ads disponibiliza outros tipos de ações de conversão nos relatórios, mas pode limitar ou proibir a criação ou modificação dessas ações.

Conversões da SKAdNetwork

Se você veicular campanhas para apps iOS e tiver implementado a SKAdNetwork, poderá acessar os dados da SKAdNetwork fornecidos ao Google nos níveis Customer e Campaign usando os seguintes recursos:

Campo do relatório Descrição
metrics.sk_ad_network_installs O número de instalações informadas pela Apple. Essa métrica só pode ser segmentada por qualquer combinação de segments.sk_ad_network_conversion_value e segmentos relacionados à data.
metrics.sk_ad_network_total_conversions O número total de conversões, incluindo instalações e outros tipos de conversões informadas pela Apple. Essa métrica só pode ser segmentada por segmentos relacionados à SKAdNetwork e à data.
segments.sk_ad_network_ad_event_type O tipo de evento que ocorreu em uma conversão específica.
segments.sk_ad_network_attribution_credit Como a atribuição é creditada para uma conversão específica.
segments.sk_ad_network_fine_conversion_value

O valor de uma conversão informada pela Apple. Esse segmento não pode ser aplicado a nenhuma métrica, exceto metrics.sk_ad_network_installs, metrics.sk_ad_network_total_conversions, e só pode ser combinado com segmentos relacionados a datas.

Um valor de 0 será retornado se a Apple informar um valor de 0 e nenhum valor, caso contrário. Verifique a presença do campo para distinguir os dois casos.

segments.sk_ad_network_coarse_conversion_value O valor aproximado de uma conversão individual.
segments.sk_ad_network_postback_sequence_index A posição do postback, em sequência, para uma conversão específica.
segments.sk_ad_network_source_app.sk_ad_network_source_app_id O ID do app em que o anúncio que gerou a instalação da rede de publicidade do kit da loja do iOS foi mostrado.
segments.sk_ad_network_source_domain O site em que o anúncio que gerou a instalação da rede de publicidade do kit da loja do iOS foi mostrado. Um valor nulo significa que esse segmento não é aplicável, por exemplo, uma campanha não iOS, ou não estava presente em nenhum postback enviado pela Apple.
segments.sk_ad_network_source_type O tipo de origem em que o anúncio que gerou a instalação da rede de publicidade do kit da loja do iOS foi mostrado. Um valor nulo significa que esse segmento não é aplicável, por exemplo, uma campanha não iOS, ou nenhum domínio ou app de origem estava presente em nenhum postback enviado pela Apple.
segments.sk_ad_network_user_type O tipo de usuário que gerou uma conversão específica.
segments.sk_ad_network_redistributed_fine_conversion_value Os valores de conversão neste segmento incluem valores nulos que foram redistribuídos para valores de conversão. Esse segmento representa a soma dos valores de conversão de multas observados e retornados pela Apple e dos valores nulos estimados do Google.
segments.sk_ad_network_version A versão da API da rede de publicidade da Store Kit do iOS que foi usada.

Também é possível salvar um mapeamento de valor da conversão da SKAdNetwork para clientes vinculados específicos com apps iOS usando CustomerSkAdNetworkConversionValueSchema.

Exemplo de código Python

#!/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

As conversões de uma propriedade vinculada do Google Analytics têm um dos seguintes valores de type:

  • Conversão da propriedade do GA4:

    • GOOGLE_ANALYTICS_4_CUSTOM
    • GOOGLE_ANALYTICS_4_PURCHASE

    Também é possível recuperar o ID, o nome da propriedade e o nome do evento do GA4 no campo google_analytics_4_settings.

É possível fazer as seguintes alterações em uma conversão de propriedade do GA4:

  • Para importar a conversão da sua propriedade do GA4 para a conta do Google Ads, modifique o campo status de HIDDEN para ENABLED.
  • Modifique os campos primary_for_goal e category para indicar como ele vai impactar os lances e relatórios do Google Ads.
  • Atualize o name ou o value_settings.
  • Remova a conversão da sua conta do Google Ads usando uma operação remove.

Qualquer tentativa de modificar outros atributos de uma conversão importada do GA4 ou qualquer atributo de uma conversão importada do Universal Analytics resulta em um erro MUTATE_NOT_ALLOWED. Essas mudanças só podem ser feitas usando a interface do Google Ads.

Firebase e análise de apps de terceiros

Para importar análises de apps de terceiros ou conversões do Firebase, mude o status do ConversionAction de HIDDEN para ENABLED usando o método mutate de ConversionActionService. Não é possível atualizar o app_id para essas ações de conversão.

  • 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

Vendas na loja: faça upload para a ação de conversão com relatórios

Embora não seja possível criar ações de conversão STORE_SALES ou STORE_SALES_DIRECT_UPLOAD usando a API Google Ads, ela oferece suporte ao upload de transações de vendas na loja.

  • STORE_SALES
  • STORE_SALES_DIRECT_UPLOAD

Tipos de ação de conversão somente leitura

Os tipos de ação de conversão a seguir são somente leitura na API Google Ads e são fornecidos para fins de geração de relatórios.

  • 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

Desconhecido

Se a sua conta do Google Ads incluir outros tipos de ações de conversão, talvez você note que as consultas e os relatórios retornam ações de conversão em que o ConversionAction.type é UNKNOWN. A API não oferece suporte ao gerenciamento dessas ações, mas as retorna em relatórios para fornecer resultados completos das principais métricas de conversão, como metrics.conversions e metrics.conversions_value.

Exemplo de código

O exemplo de código abaixo orienta você no processo de criação de uma nova ação de conversão. Especificamente, ele cria uma ação de conversão com o type definido como UPLOAD_CLICKS. Esse é o mesmo fluxo da interface do Google Ads usado para criar uma nova ação de conversão usando Importação > Importação manual usando a API ou uploads > Acompanhar conversões de cliques. Ele também define a category como DEFAULT.

As configurações padrão a seguir são aplicadas:

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

Esse exemplo também pode ser encontrado na pasta "Remarketing" da biblioteca de cliente e na coleção de exemplos de código: Adicionar exemplo de código de ação de conversão.

Validações

O Google Ads e a API Google Ads oferecem suporte a uma grande variedade de ações de conversão. Portanto, algumas regras de validação variam com base no type da ação.

O erro mais comum ao criar uma ação de conversão é DUPLICATE_NAME. Use um nome exclusivo para cada ação de conversão.

Confira algumas dicas para definir os campos ConversionAction:

Todos os campos de tipo enumerado
Tentar definir qualquer campo de tipo enumerado como UNKNOWN resulta em um erro RequestError.INVALID_ENUM_VALUE.
app_id
O atributo app_id é imutável e só pode ser definido ao criar uma nova conversão de app.
attribution_model_settings
Definir esse valor como uma opção descontinuada resulta em um erro CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS. O Google Ads oferece suporte apenas a GOOGLE_ADS_LAST_CLICK e GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Definir esse atributo como um valor fora do intervalo permitido resulta em um erro RangeError.TOO_LOW ou RangeError.TOO_HIGH.

Esse atributo precisa estar no intervalo [1,60] para uma ação de conversão AD_CALL ou WEBSITE_CALL. Para a maioria das outras ações de conversão, o intervalo permitido é [1,30].

include_in_conversions_metric

A definição desse valor em uma operação create ou update falha com um erro FieldError.IMMUTABLE_FIELD. Em vez disso, defina primary_for_goal conforme descrito no guia de metas de conversão.

phone_call_duration_seconds

Tentar definir esse atributo em uma ação de conversão que não é para chamadas resulta em um erro FieldError.VALUE_MUST_BE_UNSET.

type

O atributo type é imutável e só pode ser definido ao criar uma nova conversão.

Atualizar uma ação de conversão com type igual a UNKNOWN resulta em um erro MutateError.MUTATE_NOT_ALLOWED.

value_settings

O value_settings de uma ação de conversão WEBSITE_CALL ou AD_CALL precisa ter always_use_default_value definido como true. Especificar um valor de false ao criar ou atualizar esse valor resulta em um erro INVALID_VALUE.

view_through_lookback_window_days

Definir esse atributo como um valor fora do intervalo permitido resulta em um erro RangeError.TOO_LOW ou RangeError.TOO_HIGH. Para a maioria das ações de conversão, o intervalo permitido é [1,30].

Esse atributo não pode ser definido em ações de conversão AD_CALL ou WEBSITE_CALL. Especificar um valor resulta em um erro VALUE_MUST_BE_UNSET.