Чтобы регистрировать конверсии, необходимо включить их отслеживание в аккаунте Google Рекламы. В этом руководстве рассказывается, как проверить, включено ли отслеживание конверсий, включить его, если оно не включено, и получить информацию о существующих действиях-конверсиях.
Для большинства действий-конверсий также требуются дополнительные действия с вашей стороны. Дополнительную информацию о различных типах действий-конверсий и требованиях к ним вы найдете в статьях Категории действий-конверсий и Как создавать действия-конверсии.
Подготовка к предоставлению согласия
При импорте конверсий или пользовательских данных вы должны подтвердить, что у вас есть разрешение на передачу данных о конверсиях в Google. Это можно сделать двумя способами:
- Задайте настройки согласия по умолчанию на уровне аккаунта. В интерфейсе Google Рекламы нажмите Инструменты > Менеджер данных > Настройки согласия > Настройки согласия по умолчанию.
- Задайте поле согласия для каждой импортированной конверсии или полезной нагрузки пользовательских данных (например,
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.V26.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::V26::Resources::ConversionAction->new({ name => $conversion_action_name, category => DEFAULT, type => WEBPAGE, status => ENABLED, viewThroughLookbackWindowDays => 15, valueSettings => Google::Ads::GoogleAds::V26::Resources::ValueSettings->new({ defaultValue => 23.41, alwaysUseDefaultValue => "true" })}); # Create a conversion action operation. my $conversion_action_operation = Google::Ads::GoogleAds::V26::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.
Применяются следующие настройки по умолчанию:
Google Ads API задает значение поля
primary_for_goalавтоматически, но вы можете указать его вручную, чтобы контролировать, как действие-конверсия влияет на отчеты и назначение ставок в вашем аккаунте, когда оно связано с целями конверсии.Google Ads API автоматически задает для
counting_typeзначениеMANY_PER_CLICK. Подробнее о настройках учета конверсий…Чтобы задать модель атрибуции на основе данных, в Google Ads API нужно указать значение
GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN(AttributionModel) в полеattribution_model_settings. Подробнее о моделях атрибуции…
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.V26.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::V26::Resources::ConversionAction->new({ name => $conversion_action_name, category => DEFAULT, type => WEBPAGE, status => ENABLED, viewThroughLookbackWindowDays => 15, valueSettings => Google::Ads::GoogleAds::V26::Resources::ValueSettings->new({ defaultValue => 23.41, alwaysUseDefaultValue => "true" })}); # Create a conversion action operation. my $conversion_action_operation = Google::Ads::GoogleAds::V26::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 клиентской библиотеки и в коллекции примеров кода: пример кода для добавления действия-конверсии.
Справочник по полям ConversionActionService.MutateConversionActions
Используйте MutateConversionActions в ConversionActionService, чтобы создавать, обновлять или удалять действия-конверсии в аккаунте клиента, в котором отслеживаются конверсии Google Рекламы.
POST https://googleads.googleapis.com/v26/customers/{customer_id}/conversionActions:mutate
В таблице ниже перечислены поля запроса и операции верхнего уровня в MutateConversionActionsRequest.
| Поле | Требования | Описание |
|---|---|---|
customer_id |
Обязательно | Десятизначный идентификатор (string) клиента Google Рекламы, связанного с конверсией (google_ads_conversion_customer), без дефисов. |
partial_failure |
Необязательно | Если true (bool), выполняются допустимые операции, а недопустимые возвращают ошибки в partial_failure_error. Значение по умолчанию – false. |
validate_only |
Необязательно | Если задано значение true (bool), запрос проверяется без выполнения изменений. |
response_content_type |
Необязательно | ResponseContentType определяет, возвращает ли ответ только resource_name (RESOURCE_NAME_ONLY, по умолчанию) или измененный объект ConversionAction (MUTABLE_RESOURCE). |
operations[].create |
Обязательно (при создании) | Ресурс ConversionAction, который нужно создать. resource_name не ожидается. |
operations[].update |
Обязательно (при обновлении) | Ресурс ConversionAction, который нужно обновить (должен включать resource_name и дочерний элемент update_mask в ConversionActionOperation). |
operations[].update_mask |
Обязательно (при обновлении) | FieldMask (список измененных путей к полям ConversionAction в snake_case, разделенный запятыми; REST JSON updateMask принимает snake_case или camelCase, а gRPC и клиентские библиотеки требуют snake_case) в ConversionActionOperation (на одном уровне с update, не вложен в ConversionAction). |
operations[].remove |
Обязательно (при удалении) | Название ресурса (customers/{customer_id}/conversionActions/{action_id}) действия-конверсии, которое нужно удалить. |
При настройке ConversionAction в operations[].create или operations[].update соблюдайте следующие требования к полям и ограничения на изменяемость (правила в отношении ошибок, связанных с типами, приведены в разделе Проверки):
Поле ConversionAction |
Требования и изменяемость | Описание |
|---|---|---|
name |
Обязательный (изменяемый) | Уникальное отображаемое название (string) в аккаунте клиента, связанном с конверсией. |
type |
Обязательно для create (IMMUTABLE) |
ConversionActionType (например, WEBPAGE, UPLOAD_CLICKS, UPLOAD_CALLS, AD_CALL или WEBSITE_CALL). |
category |
Необязательный (изменяемый) | ConversionActionCategory (например, DEFAULT, PURCHASE, SUBMIT_LEAD_FORM, SIGNUP или PHONE_CALL_LEAD). По умолчанию используется DEFAULT. |
status |
Необязательный (изменяемый) | ConversionActionStatus (ENABLED, REMOVED или HIDDEN). По умолчанию используется ENABLED. |
primary_for_goal |
Необязательный (изменяемый) | bool, которое определяет, можно ли назначать ставки для действия в стандартных целях конверсии на уровне клиента и кампании (примечание: ресурсы CustomConversionGoal игнорируют эту настройку). Значение по умолчанию – true. |
counting_type |
Необязательный (изменяемый) | ConversionActionCountingType (MANY_PER_CLICK по умолчанию или ONE_PER_CLICK). |
value_settings |
Необязательный (изменяемый) | ValueSettings (default_value, default_currency_code, always_use_default_value). |
attribution_model_settings |
Необязательный (изменяемый) | AttributionModelSettings (attribution_model: GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN по умолчанию или GOOGLE_ADS_LAST_CLICK). |
click_through_lookback_window_days |
Необязательный (изменяемый) | int64 период учета кликов в днях (от 1 до 90 для большинства типов; от 1 до 60 для типов звонков). |
view_through_lookback_window_days |
Необязательный (изменяемый) | int64 – период учета конверсий по просмотрам в днях (от 1 до 30 для большинства типов; не задан для типов звонков). |
phone_call_duration_seconds |
Только типы вызовов (изменяемые) | Минимальная продолжительность звонка в секундах: int64 (от 0 до 10000). |
app_id |
Только типы приложений (неизменяемые после создания) | Идентификатор мобильного приложения (string). Может быть задан только в create для действий-конверсий в приложении. |
include_in_conversions_metric |
Только для чтения в мутациях | Нельзя изменить напрямую. Вместо этого настройте primary_for_goal. |
tag_snippets[] |
OUTPUT_ONLY |
Фрагменты кода для отслеживания на сайте (TagSnippet) добавлены в WEBPAGE действий-конверсий. |
Структура запроса и ответа REST
Чтобы создать или обновить ConversionAction через REST, отправьте запрос POST на адрес ConversionActionService.MutateConversionActions.
При обновлении существующего действия-конверсии укажите updateMask в объекте операции на том же уровне, что и update:
POST https://googleads.googleapis.com/v26/customers/{customer_id}/conversionActions:mutate
{
"operations": [
{
"create": {
"name": "Earth to Mars Cruise Conversion",
"type": "UPLOAD_CLICKS",
"category": "DEFAULT",
"status": "ENABLED",
"primaryForGoal": true,
"countingType": "ONE_PER_CLICK",
"clickThroughLookbackWindowDays": "60",
"valueSettings": {
"defaultValue": 23.41,
"defaultCurrencyCode": "USD",
"alwaysUseDefaultValue": true
}
}
},
{
"updateMask": "primary_for_goal,value_settings.default_value",
"update": {
"resourceName": "customers/{customer_id}/conversionActions/6666666666",
"primaryForGoal": false,
"valueSettings": {
"defaultValue": 45.00
}
}
}
]
}
Успешный ответ возвращает записи MutateConversionActionResult в results[]:
{
"results": [
{
"resourceName": "customers/{customer_id}/conversionActions/7777777777"
},
{
"resourceName": "customers/{customer_id}/conversionActions/6666666666"
}
]
}
Как проверить настройки действий-конверсий и фрагменты тегов с помощью GAQL
Помимо базового запроса, описанного в разделе Как включить отслеживание конверсий, вы можете запросить ресурс conversion_action с помощью GoogleAdsService.SearchStream, чтобы проверить primary_for_goal, статус модели атрибуции, периоды учета, настройки ценности и tag_snippets сайта:
SELECT
conversion_action.id,
conversion_action.resource_name,
conversion_action.name,
conversion_action.type,
conversion_action.category,
conversion_action.status,
conversion_action.primary_for_goal,
conversion_action.counting_type,
conversion_action.click_through_lookback_window_days,
conversion_action.view_through_lookback_window_days,
conversion_action.value_settings.default_value,
conversion_action.value_settings.default_currency_code,
conversion_action.value_settings.always_use_default_value,
conversion_action.attribution_model_settings.attribution_model,
conversion_action.attribution_model_settings.data_driven_model_status,
conversion_action.tag_snippets
FROM conversion_action
WHERE conversion_action.status = 'ENABLED'
Проверка
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.