В Google Рекламе конверсией называется ценное действие пользователя, которое он совершает после взаимодействия с объявлением, например покупка товара, отправка лид-формы, звонок в компанию или посещение обычного магазина. Отслеживание конверсий позволяет регистрировать такие взаимодействия, чтобы оценивать эффективность кампаний и оптимизировать автоматическое назначение ставок.
Google Ads API позволяет программно настраивать действия-конверсии, импортировать офлайн-события-конверсии, улучшать или корректировать зарегистрированные конверсии, группировать действия в цели по назначению ставок и жизненному циклу, а также отслеживать диагностику загрузки.
Выберите рабочий процесс конверсии
В таблице ниже указаны ConversionActionType, API и руководство по внедрению для каждого случая использования.
| Задача | Тип действия-конверсии | Сервис или ресурс API | Руководство по внедрению |
|---|---|---|---|
| Проверьте настройки аккаунта и создайте действие-конверсию |
UPLOAD_CLICKS, WEBPAGE,
UPLOAD_CALLS, AD_CALL,
WEBSITE_CALL, GOOGLE_PLAY_,
GOOGLE_PLAY_
|
Customer
(ConversionTracking),
ConversionAction
|
Начало работы и Категории действий-конверсий |
| Импорт офлайн-конверсий по кликам или расширенное отслеживание конверсий потенциальных клиентов | UPLOAD_CLICKS |
ConversionUploadService. (или Data Manager API для новых интеграций)
|
Импорт офлайн-конверсий по кликам |
| Расширенное отслеживание конверсий на сайтах | WEBPAGE |
ConversionAdjustment
(ENHANCEMENT)
|
Импорт онлайн-конверсий по кликам |
| Как импортировать звонки-конверсии | UPLOAD_CALLS |
ConversionUploadService.
|
Импорт звонков-конверсий |
| Импорт транзакций в магазине |
STORE_SALES,
STORE_SALES_
|
OfflineUserData
(или
Data Manager API)
|
Как импортировать данные о продажах в магазине |
| Как отозвать или скорректировать зарегистрированные конверсии |
UPLOAD_CLICKS, WEBPAGE,
SALESFORCE (поддержка прекращена)
|
ConversionAdjustment
(RETRACTION, RESTATEMENT)
|
Как корректировать конверсии после импорта |
| Как прикрепить метаданные пользовательского тега к конверсиям |
UPLOAD_CLICKS, UPLOAD_CALLS,
WEBPAGE
|
ConversionCustom
|
Пользовательские переменные конверсий |
| Настройте цели назначения ставок, цели по жизненному циклу и правила ценности | Цели на уровне аккаунта, кампании и жизненного цикла |
CustomerConversion,
CampaignConversion,
CustomConversion,
ConversionGoal,
GoalService,
CampaignGoal,
ConversionValue
|
Цели конверсий, цели по жизненному циклу и правила ценности конверсий. |
| Как отслеживать статус импорта и диагностировать ошибки |
UPLOAD_CLICKS, WEBPAGE,
UPLOAD_CALLS
|
offline_conversion_upload_,
offline_conversion_upload_
|
Как отслеживать диагностику офлайн-данных |
| Как запрашивать показатели конверсий и устранять ошибки | Все типы конверсий |
GoogleAdsService.
(customer, campaign,
conversion_action)
|
Получение статистики конверсий и Устранение неполадок с импортом конверсий |
Полный жизненный цикл конверсии
Полная интеграция управления конверсиями в Google Ads API состоит из четырех этапов:
- Проверьте настройки аккаунта и создайте действия-конверсии. Отправьте запрос
Customer.conversion_tracking_setting, чтобы подтвердить эффективный аккаунт конверсий (google_ads_conversion_customer), убедитесь, что отслеживание конверсий активно, настройте согласие пользователей и создайтеConversionActionс целевымиConversionActionTypeиConversionActionCategory. - Импорт событий-конверсий. Передавайте данные об офлайн-конверсиях по клику или звонку с помощью
ConversionUploadService, задав дляpartial_failureзначениеtrue. Дополняйте данные о конверсиях на сайте корректировкамиENHANCEMENTс помощьюConversionAdjustmentUploadServiceили загружайте данные о продажах в магазине с помощьюOfflineUserDataJobService. - Корректировка и оптимизация конверсий. Отменяйте или пересчитывайте зарегистрированные конверсии с помощью
ConversionAdjustmentUploadService, добавляйте метаданныеConversionCustomVariable, применяйте правила ценности конверсий и объединяйте действия в цели конверсий и цели по жизненному циклу, чтобы управлять оптимизацией ставок. - Отслеживание диагностики и эффективности отчетов. Запрашивайте
offline_conversion_upload_client_summaryиoffline_conversion_upload_conversion_action_summary, чтобы проверять статус обработки загрузок и оповещения о частичных сбоях. Запросите ресурсыcustomerилиcampaign(при необходимости сегментированные поsegments.conversion_action), чтобы сравнить показателиmetrics.conversionsиmetrics.all_conversions, или запросите ресурсconversion_action, чтобы проверитьmetrics.all_conversionsи временные метки последних конверсий.
Быстрый старт: проверка настроек, создание действий и проверка состояния
Ниже приведены примеры трех наиболее распространенных запросов и изменений, необходимых для инициализации и мониторинга отслеживания конверсий.
1. Как проверить настройки отслеживания конверсий с помощью GAQL
Прежде чем создавать ConversionAction или загружать события, запросите ресурс customer с помощью GoogleAdsService.SearchStream, чтобы определить, какой аккаунт управляет конверсиями (google_ads_conversion_customer), приняты ли условия в отношении данных клиентов и включено ли расширенное отслеживание конверсий на уровне аккаунта (EnhancedConversionsConfig).
SELECT
customer.conversion_tracking_setting.conversion_tracking_id,
customer.conversion_tracking_setting.conversion_tracking_status,
customer.conversion_tracking_setting.cross_account_conversion_tracking_id,
customer.conversion_tracking_setting.google_ads_conversion_customer,
customer.conversion_tracking_setting.accepted_customer_data_terms,
customer.conversion_tracking_setting.enablement_setting,
customer.conversion_tracking_setting.effective_enablement_setting
FROM customer
Извлеките {customer_id} из названия ресурса customers/{customer_id}, возвращенного в google_ads_conversion_customer, и отправьте все последующие запросы ConversionActionService и ConversionUploadService, указав этот идентификатор клиента. Подробные инструкции по настройке и сведения об иерархии аккаунтов можно найти в статье Начало работы.
2. Создайте действие-конверсию
Используйте ConversionActionService.MutateConversionActions, чтобы создать ConversionAction. В примере ниже создается действие-конверсия UPLOAD_CLICKS с пользовательскими настройками ценности и периода ретроспективного анализа.
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
Запрос REST
Чтобы создать такой же объект ConversionAction с помощью REST, отправьте запрос POST по адресу ConversionActionService.MutateConversionActions:
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
}
}
}
]
}
После того как действие-конверсия будет ENABLED, импортируйте события-конверсии или улучшения, используя рабочий процесс для вашего источника конверсий (см. раздел Импорт событий-конверсий).
3. Как отслеживать статус загрузки офлайн-конверсий
После загрузки конверсий по кликам, звонков-конверсий или корректировок конверсий запросите offline_conversion_upload_client_summary, чтобы проверить общий статус задачи, долю успешных и ожидающих загрузок, а также разбивку ошибок по недавним загрузкам.
SELECT
offline_conversion_upload_client_summary.client,
offline_conversion_upload_client_summary.status,
offline_conversion_upload_client_summary.total_event_count,
offline_conversion_upload_client_summary.successful_event_count,
offline_conversion_upload_client_summary.success_rate,
offline_conversion_upload_client_summary.pending_event_count,
offline_conversion_upload_client_summary.pending_rate,
offline_conversion_upload_client_summary.last_upload_date_time,
offline_conversion_upload_client_summary.alerts
FROM offline_conversion_upload_client_summary
Запросите offline_conversion_upload_conversion_action_summary, чтобы получить диагностические данные на уровне действия-конверсии (см. раздел Как отслеживать диагностические данные об офлайн-конверсиях), и ознакомьтесь с разделом Устранение неполадок с импортом конверсий, чтобы устранить определенные коды ошибок.
Каталог руководств по этапам жизненного цикла
Ознакомьтесь с полным набором руководств по управлению конверсиями, упорядоченных по этапам жизненного цикла:
1. Настройка аккаунта и действия-конверсии
- Категории действий-конверсий. Выберите подходящий источник конверсий: сайт (
WEBPAGE), телефонный звонок (UPLOAD_CALLS,AD_CALL,WEBSITE_CALL), мобильное приложение (GOOGLE_PLAY_DOWNLOAD,GOOGLE_PLAY_IN_APP_PURCHASE, Firebase,SKAdNetwork), Google Аналитика 4 (GOOGLE_ANALYTICS_4_CUSTOM,GOOGLE_ANALYTICS_4_PURCHASE), офлайн (UPLOAD_CLICKS) или обычный магазин (STORE_SALES). Затем сопоставьте его с соответствующимConversionActionTypeи рабочим процессом API. - Начало работы. Настройте согласие пользователя, подтвердите
ConversionTrackingSetting, настройте отслеживание конверсий в управляющем аккаунте и создайте действия-конверсии с помощью клиентских библиотек или REST.
2. Импорт событий-конверсий
- Импорт офлайн-конверсий по кликам. Загружайте офлайн-конверсии (
GCLID,GBRAID,WBRAID) и расширенное отслеживание конверсий лидов (хешированные собственные адреса электронной почты и номера телефонов), чтобы отслеживать реальные транзакции. - Импорт онлайн-конверсий по кликам. Дополните теги конверсий на сайте собственными данными пользователей, такими как адрес электронной почты, имя, домашний адрес и номер телефона, используя расширенное отслеживание конверсий на сайтах (
ENHANCEMENTкорректировок). - Импорт звонков-конверсий. Вы можете загружать события-конверсии для телефонных звонков, отслеживаемых с помощью номеров Google для переадресации или вашей собственной системы отслеживания звонков.
- Импорт конверсий – продаж в магазине. Массовая загрузка данных о транзакциях в магазине с помощью
OfflineUserDataJobService.
3. Как корректировать и оптимизировать конверсии
- Корректировка конверсий после импорта. Вы можете отзывать отмененные заказы (
RETRACTION) или пересчитывать измененную ценность конверсий (RESTATEMENT) для действий-конверсийUPLOAD_CLICKS,WEBPAGEиSALESFORCE(устарело). - Управление правилами ценности конверсий. Динамически корректируйте ценность конверсий во время аукциона на основе критериев аудитории, устройства, географического местоположения или маршрута.
- Пользовательские переменные конверсии. Определите и добавьте пользовательские теги "ключ-значение" (
ConversionCustomVariable) для кликов, звонков и конверсий на сайте, чтобы получать сегментированные отчеты. - Цели конверсий. Группируйте действия-конверсии по полям
category(ConversionActionCategory) иorigin(ConversionOrigin) и настраивайте цели на уровне аккаунта, цели на уровне кампании и собственные цели, а также цели по жизненному циклу клиентов (привлечение новых клиентов, удержание клиентов и удержание лояльных клиентов). Вы также можете получать и применять рекомендации по дополнительной ценности конверсий новых клиентов.OPTIMIZE_FOR_NEW_CUSTOMERS
4. Мониторинг, отчеты и устранение неполадок
- Отслеживайте диагностику офлайн-данных. Запрашивайте диагностику офлайн-данных на уровне аккаунта (
offline_conversion_upload_client_summary) и действия-конверсии (offline_conversion_upload_conversion_action_summary), чтобы отслеживать долю успешных запросов, ожидающие события и оповещения о загрузке. - Получение статистики конверсий. Запрашивайте показатели эффективности конверсий на языке GAQL и сопоставляйте столбцы интерфейса Google Рекламы с полями Google Ads API.
- Устранение неполадок с импортом конверсий. Диагностика и устранение распространенных ошибок
ConversionUploadErrorиConversionAdjustmentUploadError.