Чтобы регистрировать конверсии, необходимо включить отслеживание конверсий в аккаунте 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.
Пример кода
В примере кода ниже показано, как создать действие-конверсию. В частности, он создает действие-конверсию со значением UPLOAD_CLICKS для параметра type.
Также для category задается значение DEFAULT.
По умолчанию применяются следующие настройки:
Google Ads API автоматически задает значение поля
primary_for_goal, но вы можете указать его самостоятельно, чтобы контролировать, как действие-конверсия влияет на отчеты и назначение ставок в вашем аккаунте, когда оно объединено с целями конверсий.Google Ads API автоматически задает для
counting_typeзначениеMANY_PER_CLICK. Подробнее о настройках учета конверсий…Google Ads API задает модель атрибуции На основе данных, установив для поля
attribution_model_settingsзначениеGOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVENизAttributionModel. Подробнее о моделях атрибуции…
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_settingsvalue_settingsдля действия-конверсииWEBSITE_CALLилиAD_CALLдолжен иметь значениеalways_use_default_value, равноеtrue. Если при создании или обновлении этого значения указатьfalse, возникнет ошибкаINVALID_VALUE.view_through_lookback_window_daysЕсли значение атрибута выходит за пределы допустимого диапазона, возникает ошибка
RangeError.TOO_LOWилиRangeError.TOO_HIGH. Для большинства действий-конверсий допустимый диапазон составляет от 1 до 30 дней.Этот атрибут нельзя задать для действий-конверсий
AD_CALLилиWEBSITE_CALL. Если указать значение, возникнет ошибкаVALUE_MUST_BE_UNSET.