Начало работы

Чтобы регистрировать конверсии, необходимо включить их отслеживание в аккаунте Google Рекламы для обработки конверсий. В этом руководстве рассказывается, как проверить, включено ли отслеживание конверсий, включить его, если оно не включено, и получить информацию о существующих действиях-конверсиях.

Для большинства действий-конверсий также требуются дополнительные действия с вашей стороны. Дополнительную информацию о различных типах действий-конверсий и требованиях к ним можно найти в статьях Категории действий-конверсий и Как создавать действия-конверсии.

При импорте конверсий или пользовательских данных необходимо подтвердить, что у вас есть разрешение на передачу данных о конверсиях в Google. Это можно сделать двумя способами:

  1. Задайте настройки согласия по умолчанию на уровне аккаунта. В интерфейсе Google Рекламы нажмите Инструменты > Менеджер данных > Настройки согласия > Настройки согласия по умолчанию.
  2. Установите поле согласия в каждой полезной нагрузке импортированных данных о конверсиях или пользователях (например, ClickConversion.consent, CallConversion.consent или UserData.consent).

Как настроить отслеживание конверсий на сайте

Если вы отслеживаете конверсии на сайте или используете расширенное отслеживание конверсий потенциальных клиентов, сначала настройте теги на сайте. Выполните инструкции в статье Как настроить тег Google для расширенного отслеживания конверсий лидов или Как настроить Google Менеджер тегов для расширенного отслеживания конверсий лидов.

Включите отслеживание конверсий в аккаунте конверсий Google Рекламы

Чтобы проверить настройки отслеживания конверсий в аккаунте и создать или получить действия-конверсии, выполните следующие действия:

Как включить отслеживание конверсий

Как получить информацию о настройке отслеживания конверсий

Вы можете проверить настройки отслеживания конверсий в аккаунте и убедиться, что оно включено, отправив запрос к ресурсу Customer для ConversionTrackingSetting. Выполните следующий запрос с помощью GoogleAdsService.SearchStream:

SELECT
  customer.conversion_tracking_setting.google_ads_conversion_customer,
  customer.conversion_tracking_setting.conversion_tracking_status,
  customer.conversion_tracking_setting.conversion_tracking_id,
  customer.conversion_tracking_setting.cross_account_conversion_tracking_id
FROM customer

Поле google_ads_conversion_customer указывает на аккаунт Google Рекламы, в котором создаются конверсии для этого клиента и управляются ими. Для клиентов, использующих отслеживание конверсий в управляющем аккаунте, это идентификатор управляющего аккаунта. Идентификатор клиента конверсии Google Рекламы должен быть указан как customer_id в запросах Google Ads API для создания конверсий и управления ими. Обратите внимание, что это поле заполняется, даже если отслеживание конверсий не включено.

Поле conversion_tracking_status указывает, включено ли отслеживание конверсий и используется ли отслеживание конверсий в управляющем аккаунте.

Создайте действие-конверсию в аккаунте клиента Google Рекламы, в котором отслеживаются конверсии.

Если значение conversion_tracking_status – NOT_CONVERSION_TRACKED, отслеживание конверсий в аккаунте не включено. Включите отслеживание конверсий, создав хотя бы одно ConversionAction в аккаунте конверсий Google Рекламы, как показано в примере ниже. Вы также можете создать действие-конверсию в интерфейсе, следуя инструкциям в статье Справочного центра Google Рекламы о настройке отслеживания конверсий для нужного типа конверсии.

Обратите внимание, что расширенное отслеживание конверсий включается автоматически, если данные отправляются через Google Ads API, но его можно отключить в интерфейсе Google Рекламы.

Пример кода

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.V25.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: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

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

    # Create conversion action.
    conversion_action: ConversionAction = 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: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        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::V25::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V25::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V25::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;
}
      

curl

Убедитесь, что для параметра type задано правильное значение ConversionActionType. Дополнительные сведения о создании действий-конверсий с помощью Google Ads API можно найти в статье Создание действий-конверсий.

Как получить существующее действие-конверсию

Чтобы получить сведения о существующем действии-конверсии, выполните следующий запрос: Убедитесь, что в запросе указан идентификатор клиента Google Рекламы, который вы определили ранее, а в качестве типа действия-конверсии задано правильное значение ConversionActionType.

SELECT
  conversion_action.id,
  conversion_action.resource_name,
  conversion_action.name,
  conversion_action.type,
  conversion_action.category,
  conversion_action.status
FROM conversion_action

WHERE conversion_action.type = 'INSERT_CONVERSION_ACTION_TYPE'

Отслеживание конверсий в управляющем аккаунте

Отслеживание конверсий в управляющем аккаунте позволяет аккаунтам Google Рекламы импортировать конверсии от имени других аккаунтов, которые могли размещать объявления, приведшие к конверсиям. Это упростит интеграцию, поскольку вы сможете объединить аккаунты, отправляющие запросы на импорт.

Как включить отслеживание конверсий в управляющем аккаунте с помощью Google Ads API

Вы можете включить отслеживание конверсий на нескольких платформах при создании или изменении клиентских аккаунтов с помощью Google Ads API.

В ресурсе Customer задайте для поля conversion_tracking_setting.google_ads_conversion_customer название ресурса управляющего аккаунта, который должен управлять действиями-конверсиями от имени клиентского аккаунта.

Запросы, изменяющие клиента, совершившего конверсию, в клиентском аккаунте, должны отправляться из управляющего аккаунта, который становится новым клиентом, совершившим конверсию, для клиентского аккаунта. Для этого укажите идентификатор управляющего аккаунта в поле login-customer-id.

Если вы включите отслеживание конверсий в управляющем аккаунте или измените управляющий аккаунт, отвечающий за отслеживание конверсий, для существующего клиентского аккаунта, будут действовать те же ограничения, что и при внесении этого изменения в интерфейсе. А именно:

  • В клиентском аккаунте будут использоваться правила ценности конверсий и цели по жизненному циклу клиентов, заданные по умолчанию в новом менеджере отслеживания конверсий.
  • Кампании, в которых настроен таргетинг на определенное действие-конверсию, будут использовать цели конверсии по умолчанию из управляющего аккаунта. Если вы продолжите использовать таргетинг на определенное действие-конверсию, это может привести к несогласованности, поскольку цели в управляющем и клиентском аккаунтах могут не совпадать. Убедитесь, что ваши кампании оптимизированы для достижения нужных целей.
  • Если аккаунт связан с несколькими управляющими аккаунтами, в нем могут использоваться действия-конверсии только из одного из них. Если аккаунт для отслеживания конверсий не указан, по умолчанию будет использоваться текущий аккаунт.

Импорт конверсий в разных аккаунтах

Если включено отслеживание конверсий в нескольких аккаунтах, клиентские и управляющие аккаунты могут импортировать конверсии от имени аккаунта для показа рекламы. Это упрощает логику импорта, поскольку вам не нужно определять аккаунт для показа рекламы для каждой конверсии во время импорта. Вы можете просто выбрать один аккаунт из дерева аккаунтов, чтобы импортировать все конверсии.

Чтобы загрузка конверсии прошла успешно, у аккаунта, из которого она выполняется, должен быть доступ к действию-конверсии. В иерархии отслеживания нескольких аккаунтов аккаунт, в который загружаются данные, имеет доступ к действию, если он является родительским (управляющим) или дочерним по отношению к владельцу действия-конверсии в дереве аккаунтов.

На схеме ниже показана структура авторизации для импорта конверсий. Здесь C1 – клиентский аккаунт, в котором было показано объявление, приведшее к конверсии, а M2 – владелец действия-конверсии и родительский аккаунт для отслеживания конверсий в C1. Аккаунты, выделенные зеленым цветом, могут импортировать конверсии от имени аккаунта C1, а аккаунты, выделенные красным цветом, – нет.

Структура авторизации

Создайте действия-конверсии

Чтобы отслеживать конверсии, настройте ConversionAction для type действия-конверсии, которое вы хотите отслеживать. Например, для онлайн-покупки и телефонного звонка требуются разные действия-конверсии.

Лучший способ настроить новые действия-конверсии в API – использовать пример кода для добавления действия-конверсии. В примере выполняются все фоновые задачи аутентификации и показано, как создать объект ConversionAction.

Для большинства действий-конверсий также требуются дополнительные действия с вашей стороны. Например, чтобы отслеживать конверсии на сайте, необходимо добавить на страницу конверсии фрагмент кода, который называется тегом. Подробные требования к другим типам действий-конверсий приведены в статье Справочного центра Google Рекламы о типах конверсий.

Если вы используете отслеживание конверсий в управляющем аккаунте, ConversionActionService возвращает следующие действия-конверсии:

  • Все действия-конверсии, заданные в управляющем аккаунте и используемые для отслеживания конверсий в нескольких аккаунтах.
  • Все действия-конверсии, по которым у клиента есть статистика, включая системные действия и действия, принадлежащие управляющему аккаунту, даже если связь с ним будет отменена.
  • Все действия, которые клиент определил в своем аккаунте
  • Конверсии Аналитики, созданные в связанных ресурсах Google Аналитики. В том числе это касается конверсий Аналитики, которые не были импортированы в Google Рекламу и имеют статус HIDDEN.

Пример кода

В примере кода ниже показано, как создать действие-конверсию. В частности, создается действие-конверсия, у которого для поля type задано значение UPLOAD_CLICKS. Также для параметра category задается значение DEFAULT.

По умолчанию применяются следующие настройки:

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.V25.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: GoogleAdsClient, customer_id: str) -> None:
    conversion_action_service: ConversionActionServiceClient = (
        client.get_service("ConversionActionService")
    )

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

    # Create conversion action.
    conversion_action: ConversionAction = 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: ConversionAction.ValueSettings = (
        conversion_action.value_settings
    )
    value_settings.default_value = 15.0
    value_settings.always_use_default_value = True

    # Add the conversion action.
    conversion_action_response: MutateConversionActionsResponse = (
        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::V25::Resources::ConversionAction->new({
      name                          => $conversion_action_name,
      category                      => DEFAULT,
      type                          => WEBPAGE,
      status                        => ENABLED,
      viewThroughLookbackWindowDays => 15,
      valueSettings                 =>
        Google::Ads::GoogleAds::V25::Resources::ValueSettings->new({
          defaultValue          => 23.41,
          alwaysUseDefaultValue => "true"
        })});

  # Create a conversion action operation.
  my $conversion_action_operation =
    Google::Ads::GoogleAds::V25::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;
}
      

curl

Этот пример можно найти в папке Remarketing клиентской библиотеки и в коллекции примеров кода: пример кода для добавления действия-конверсии.

Проверка

Google Реклама и Google Ads API поддерживают множество действий-конверсий, поэтому некоторые правила проверки зависят от type действия.

Самая распространенная ошибка при создании действия-конверсии – DUPLICATE_NAME. Убедитесь, что вы используете уникальное название для каждого действия-конверсии.

Вот несколько советов по настройке полей ConversionAction:

Все поля перечисления
При попытке задать для любого поля перечисления значение UNKNOWN возникает ошибка RequestError.INVALID_ENUM_VALUE.
app_id
Атрибут app_id нельзя изменить. Его можно задать только при создании конверсии в приложении.
attribution_model_settings
Если вы укажете устаревшее значение, то получите ошибку CANNOT_SET_RULE_BASED_ATTRIBUTION_MODELS. Google Реклама поддерживает только GOOGLE_ADS_LAST_CLICK и GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
click_through_lookback_window_days

Если задать для этого атрибута значение за пределами допустимого диапазона, возникнет ошибка RangeError.TOO_LOW или RangeError.TOO_HIGH.

Для действий-конверсий AD_CALL и WEBSITE_CALL значение этого атрибута должно быть от 1 до 60 дней. Для большинства других действий-конверсий допустимый диапазон составляет от 1 до 90 дней.

include_in_conversions_metric

Если задать это значение в операции create или update, произойдет ошибка FieldError.IMMUTABLE_FIELD. Вместо этого настройте primary_for_goal, как описано в руководстве по целям конверсий.

phone_call_duration_seconds

Если вы попытаетесь задать этот атрибут для действия-конверсии, не связанного со звонками, то получите ошибку FieldError.VALUE_MUST_BE_UNSET.

type

Атрибут type неизменяемый и может быть задан только при создании новой конверсии.

Если при обновлении действия-конверсии задать для параметра type значение UNKNOWN, возникнет ошибка MutateError.MUTATE_NOT_ALLOWED.

value_settings

Для действия-конверсии WEBSITE_CALL или AD_CALL в поле value_settings должно быть указано значение true для always_use_default_value. Если при создании или обновлении этого значения указать false, возникнет ошибка INVALID_VALUE.

view_through_lookback_window_days

Если значение атрибута выходит за пределы допустимого диапазона, возникает ошибка RangeError.TOO_LOW или RangeError.TOO_HIGH. Для большинства действий-конверсий допустимый диапазон составляет от 1 до 30 дней.

Этот атрибут нельзя задать для действий-конверсий AD_CALL или WEBSITE_CALL. Если указать значение, возникнет ошибка VALUE_MUST_BE_UNSET.