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

Конверсией в AdWords называется событие, когда пользователь сначала нажимает на объявление или просматривает медийную рекламу, а затем совершает нужное рекламодателю действие: например, делает покупку, устанавливает мобильное приложение или подписывается на рассылку.

Отслеживание конверсий позволяет анализировать поведение пользователей, нажавших на объявление или просмотревших его. В качестве конверсий можно учитывать телефонные звонки, покупки, установки приложения и другие действия. В AdWords доступны разные инструменты для отслеживания разных типов конверсий.

В этом руководстве описаны средства для отслеживания конверсий и принципы их использования. Здесь также рассказывается о том, как импортировать офлайн-конверсии в AdWords с помощью API.

Классы, используемые для отслеживания конверсий

Прежде всего необходимо создать объект, основанный на базовом классе ConversionTracker и соответствующий типу действий-конверсий, которые вы хотите отслеживать. К примеру, для отслеживания покупок на сайте и телефонных звонков используются разные объекты.

Для многих типов конверсий настройка этим не ограничивается. Например, для отслеживания конверсий на веб-сайте нужно не только создать объект AdWordsConversionTracker, но и добавить фрагмент кода, называемый тегом, на страницу сайта, где происходят конверсии.

Обратите внимание, что источники конверсий, связанные со звонками, которые доступны в интерфейсе AdWords (Клики по номеру телефона, Звонки по объявлениям и Звонки по номеру телефона на веб-сайте), соответствуют разным объектам ConversionTracker в AdWords API:

  • Источник Клики по номеру телефона соответствует типу AdWordsConversionTracker (с полем trackingCodeType, равным CLICK_TO_CALL).
  • Источник Звонки по объявлениям соответствует типу AdCallMetricsConversion.
  • Источник Звонки по номеру телефона на веб-сайте соответствует типу WebsiteCallMetricsConversion.

Далее мы подробно расскажем о требованиях для каждого типа конверсий.

Конверсии на сайтах

Класс AdWordsConversionTracker позволяет обрабатывать несколько типов конверсий на сайтах, различаемых в API с помощью поля trackingCodeType.

В этой таблице показаны параметры в API, эквивалентные источникам конверсий в интерфейсе AdWords:

trackingCodeType Источник в интерфейсе AdWords
WEBPAGE Сайт
WEBPAGE_ONCLICK Сайт
CLICK_TO_CALL Клики по номеру телефона
--- Google Analytics

Для отслеживания конверсий на сайте и кликов по номеру телефона необходим фрагмент кода googleEventSnippet, который нужно добавить на страницы, где совершаются конверсии (например, страницы подтверждения заказа или регистрации), и тег googleGlobalSiteTag, который нужно добавить на каждую страницу сайта. Оба этих атрибута можно получить с помощью службы ConversionTrackerService.

Тип CLICK_TO_CALL отличается от AdCallMetricsConversion тем, что отслеживаются не сами звонки, а клики по телефонному номеру с мобильных устройств. Этот способ полезен в том случае, если вы не можете использовать номер Google для переадресации.

Звонки-конверсии

Для отслеживания звонков-конверсий используется класс AdCallMetricsConversion. Звонки совершаются по номерам Google для переадресации, а объект для отслеживания указывается в параметре FeedItem расширения объявлений. В интерфейсе AdWords конверсии этого типа называются звонками по объявлениям.

Чтобы отслеживать этот тип конверсий, нужно указать объект для отслеживания в параметре FeedItem расширения объявления, используя тип метки-заполнителя в качестве значения поля CONVERSION TYPE ID.

Звонок засчитывается как конверсия, если его длительность превышает заданную величину (по умолчанию – 60 секунд).

Конверсии в приложениях

Класс AppConversion позволяет отслеживать как установки приложения, так и действия в нем. Он используется для приложений Android и iOS. В этой таблице показаны параметры API, соответствующие каждому источнику конверсий в интерфейсе AdWords:

appPlatform appConversionType Источник в интерфейсе AdWords
ITUNES FIRST_OPEN Установка приложения для iOS (первый запуск)
ITUNES IN_APP_PURCHASE Действие в приложении для iOS
ANDROID_MARKET DOWNLOAD Установка приложения для Android (из Google Play)
ANDROID_MARKET FIRST_OPEN Установка приложения для Android (первый запуск)
ANDROID_MARKET IN_APP_PURCHASE Действие в приложении Android

Если в поле FIRST_OPEN указано значение appConversionType, то можно задать параметр appPostbackUrl, чтобы мгновенно получать оповещения, когда пользователи впервые запускают приложение. Подробнее об этом читайте в руководстве по настройке отслеживания конверсий мобильных приложений для Android.

Загрузка данных о конверсиях по кликам

Тип конверсий UploadConversion в API соответствует источнику конверсий Импорт с подтипом Конверсии по кликам в AdWords. При создании такой конверсии в интерфейсе AdWords для аккаунта включается функция автоматической пометки, но этого не происходит при создании объекта для отслеживания конверсий через API. В таком случае нужно включить ее с помощью сервиса CustomerService. Без автоматической пометки вы не сможете получать параметр GCLID, необходимый для загрузки данных о конверсиях, соответствующих клику.

Создав объект UploadConversion, вы можете загружать данные о конверсиях по кликам с помощью сервиса OfflineConversionFeedService. Подробнее об этом читайте в разделе Импорт конверсий по кликам.

Загрузка данных о звонках-конверсиях

Тип конверсий UploadCallConversion в API соответствует источнику конверсий Импорт с подтипом Звонки-конверсии в AdWords.

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

Создав объект UploadCallConversion, вы можете загружать данные о звонках-конверсиях с помощью сервиса OfflineCallConversionFeedService. Подробнее об этом рассказано в разделе Импорт звонков-конверсий.

Звонки по номеру телефона на сайте

Тип WebsiteCallMetricsConversion соответствует источнику Звонки по номеру телефона на веб-сайте в интерфейсе AdWords.

В отличие от типа AdCallMetricsConversion, для работы с ним нужно добавить на сайт фрагмент кода googleEventSnippet и тег googleGlobalSiteTag, которые получают динамические номера Google для переадресации, используемые для отслеживания звонков по номерам, указанным на сайте. Кроме того, необходимо настроить расширение "Номер телефона" в кампаниях или группах объявлений, для которых вы хотите отслеживать звонки.

Конверсии типа "Продажи в магазине (прямая загрузка)"

Вариант "Продажи в магазине (прямая загрузка)" позволяет импортировать в AdWords данные об офлайн-транзакциях самостоятельно или с помощью внешнего партнера. Сопоставление ваших данных о клиентах с информацией Google о кликах позволяет узнать, какие показы объявлений принесли те или иные продажи в обычном магазине. Данные об офлайн-транзакциях можно загружать с помощью объекта OfflineDataUpload через службу OfflineDataUploadService.

Системные сервисы отслеживания конверсий по умолчанию

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

Если вы хотите изменить настройки сервиса отслеживания конверсий по умолчанию, создайте новый объект ConversionTracker того же подтипа, указав идентификатор conversionTypeId системного сервиса в поле originalConversionTypeId нового объекта ConversionTracker. По сути, вы изменяете копию системного сервиса отслеживания конверсий, сохраненную в вашем аккаунте. Теперь в вашем аккаунте вместо системного сервиса будет автоматически использоваться созданный вами, а идентификатор исходного системного сервиса будет указан в поле originalConversionTypeId. Новый сервис будет использоваться в том числе для создания статистики конверсий в отчетах.

В аккаунте можно создать только один объект ConversionTracker на основе системного типа. Если вы попытаетесь создать ещё один объект ConversionTracker, указав системный сервис в поле originalConversionTypeId, операция завершится с ошибкой. Другими словами, если вы изменили системный сервис отслеживания конверсий, вы стали владельцем измененной копии, а не оригинала.

Например, если вы измените системный сервис AdCallMetricsConversion, то все расширения "Номер телефона" в вашем аккаунте будут связаны с созданным вами объектом. В прежней статистике конверсий, где раньше был указан системный тип, теперь будет новый.

В этой таблице приведены названия и идентификаторы всех системных сервисов отслеживания конверсий:

ConversionTracker Name conversionTypeId
AdCallMetricsConversion Звонки по объявлениям 179
AppConversion Скачивания приложения для Android 214

Особенность системного сервиса AppConversion заключается в том, что для него нельзя задать идентификатор приложения. Этот сервис отслеживает конверсии всех приложений из Google Play Маркета, для которых отсутствует объект AppConversion с более конкретными параметрами.

Отслеживание конверсий в аккаунте Центра клиентов

Если вы отслеживаете конверсии в аккаунте Центра клиентов, то сервис ConversionTrackerService возвращает следующие типы конверсий:

  1. Все типы конверсий, настроенные в управляющем аккаунте, используемом для отслеживания.
  2. Все типы конверсий, по которым в клиентских аккаунтах накоплена статистика, в том числе системные типы и типы, принадлежащие управляющим аккаунтам (даже в случаях, когда связь с управляющим аккаунтом была отменена после получения конверсии).
  3. Все типы конверсий, которые клиенты самостоятельно настроили в своих аккаунтах, в том числе цели и транзакции из связанных аккаунтов Google Analytics. В том числе это типы, не импортированные в AdWords (они получают статус HIDDEN), – их можно импортировать только через веб-интерфейс AdWords.

Сервисы для отслеживания конверсий в аккаунте Центра клиентов можно создавать и опрашивать через API, но для этого необходимо включить отслеживание конверсий в управляющем аккаунте. Подробные сведения приведены в этой статье Справочного центра.

Раньше в столбце Конверсии указывались только конверсии, совершенные на одном устройстве. Теперь в нем также можно учитывать конверсии в результате взаимодействия на нескольких устройствах. Для этого нужно задать свойство optimizeOnEstimatedConversions в настройках отслеживания конверсий в аккаунте клиента. Тогда статистика этих конверсий будет использоваться автоматическими стратегиями назначения ставок, где оптимизация выполняется по конверсиям (такими как "Целевая цена за конверсию", "Целевая рентабельность инвестиций" и "Оптимизированная цена за клик").

Поля с информацией о конверсиях, доступные в отчетах

Информацию о конверсиях в аккаунтах, кампаниях и группах объявлений можно получать с помощью соответствующих полей отчетов.

В таблице ниже приведены наиболее часто используемые поля отчетов, связанные с конверсиями.

Поле Conversions и производные от него

Название поля Описание
Conversions Главное поле с данными о конверсиях. Это конверсии, по которым вы хотите оптимизировать ставки. Здесь учитываются только те действия-конверсии (ConversionTracker), для которых поле excludeFromBidding имеет значение false.
ConversionRate Значение поля Conversions, разделенное на общее число кликов, по которым могут отслеживаться конверсии. Оно показывает, как часто (в среднем) взаимодействие пользователя с объявлением приводит к конверсии, для которой поле excludeFromBidding имеет значение false.
ConversionValue Общая ценность всех действий-конверсий (ConversionTracker), для которых поле excludeFromBidding имеет значение false.
CostPerConversion Общая стоимость, разделенная на значение поля Conversions.
ValuePerConversion Значение поля ConversionValue, разделенное на значение поля Conversions.

Поле AllConversions и производные от него

Название поля Описание
AllConversions Здесь учитываются все конверсии AdWords, независимо от значений поля excludeFromBidding, из всех возможных источников (таких как действия на веб-сайте, взаимодействия на нескольких устройствах, телефонные звонки и т. д.).
AllConversionRate Значение поля AllConversions, разделенное на общее число кликов, по которым могут отслеживаться конверсии. Оно показывает, как часто (в среднем) взаимодействие пользователя с объявлением приводит к конверсии.
AllConversionValue Общая ценность всех действий-конверсий. Учитываются все действия-конверсии (ConversionTracker), представляющие конверсии на веб-сайте, взаимодействия на нескольких устройствах и телефонные звонки, независимо от значения поля excludeFromBidding.
CostPerAllConversion Общая стоимость, разделенная на значение поля AllConversions.
ValuePerAllConversion Значение поля AllConversionValue, разделенное на значение поля AllConversions.

CrossDeviceConversions

Название поля Описание
CrossDeviceConversions Конверсии в результате взаимодействий на нескольких устройствах. Это количество случаев, когда пользователь взаимодействует с рекламой (например, нажимает на текстовое объявление или просматривает видео) с помощью одного устройства или браузера, а конверсию совершает с помощью другого. Конверсии из поля CrossDeviceConversions также учитываются в общем числе конверсий (AllConversions).

Столбцы, связанные с конверсиями (для текущей модели атрибуции)

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

Название поля Описание
CostPerCurrentModelAttributedConversion Статистические данные поля CostPerConversion, полученные при текущей модели атрибуции.
CurrentModelAttributedConversionValue Статистические данные поля ConversionValue, полученные при текущей модели атрибуции.
CurrentModelAttributedConversions Статистические данные поля Conversions, полученные при текущей модели атрибуции.
ValuePerCurrentModelAttributedConversion Статистические данные поля ValuePerConversion, полученные при текущей модели атрибуции.

Атрибуция конверсий в отчетах

Дата конверсии и дата загрузки данных о конверсиях никак не влияют на дату и значения в отчетах. Все показатели соотносятся с датой показа для каждого клика.

Предположим, что 21 октября 2017 г. вы загрузили следующие конверсии с параметром conversionTime, в котором указана дата 20171020:

ImpressionDate Conversions ConversionValue
18 октября 2017 г. 500 1000 долл. США
19 октября 2017 г. 250 200 долл. США
20 октября 2017 г. 100 150 долл. США

В этом случае параметры Conversions и ConversionValues в отчете за 20 октября 2017 г. изменятся на 100 и 150 долларов соответственно. Чтобы увидеть изменения параметров Conversions и ConversionValues для всех загруженных конверсий, нужно расширить диапазон дат с 18 октября по 20 октября 2017 г.

Аналогичным образом показатели Conversions и ConversionValue за 21 октября 2017 г. (день, когда вы загрузили конверсии) не изменятся после загрузки.

Импорт конверсий по кликам

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

В этом разделе рассказывается, как создать фид для импорта офлайн-конверсий с помощью API AdWords.

Настройка

Сначала необходимо создать типы конверсий, которые вы хотите импортировать. Это можно сделать в интерфейсе AdWords или с помощью кода:

Java

// Create an upload conversion for offline conversion imports.
UploadConversion uploadConversion = new UploadConversion();
// Set an appropriate category. This field is optional, and will be set to
// DEFAULT if not mentioned.
uploadConversion.setCategory(ConversionTrackerCategory.LEAD);
uploadConversion.setName("Upload Conversion #" + System.currentTimeMillis());
uploadConversion.setViewthroughLookbackWindow(30);
uploadConversion.setCtcLookbackWindow(90);

// Optional: Set the default currency code to use for conversions
// that do not specify a conversion currency. This must be an ISO 4217
// 3-character currency code such as "EUR" or "USD".
// If this field is not set on this UploadConversion, AdWords will use
// the account's currency.
uploadConversion.setDefaultRevenueCurrencyCode("EUR");

// Optional: Set the default revenue value to use for conversions
// that do not specify a conversion value. Note that this value
// should NOT be in micros.
uploadConversion.setDefaultRevenueValue(2.50);
// Optional: To upload fractional conversion credits, mark the upload conversion
// as externally attributed. See
// https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
// to learn more about importing externally attributed conversions.

// uploadConversion.setIsExternallyAttributed(true);

conversionTrackers.add(uploadConversion);

PHP

// Create an upload conversion for offline conversion imports.
$uploadConversion = new UploadConversion();
// Set an appropriate category. This field is optional, and will be set to
// DEFAULT if not mentioned.
$uploadConversion->setCategory(ConversionTrackerCategory::LEAD);
$uploadConversion->setName('Upload Conversion # ' . uniqid());
$uploadConversion->setViewthroughLookbackWindow(30);
$uploadConversion->setCtcLookbackWindow(90);

// Optional: Set the default currency code to use for conversions
// that do not specify a conversion currency. This must be an ISO 4217
// 3-character currency code such as "EUR" or "USD".
// If this field is not set on this UploadConversion, AdWords will use
// the account's currency.
$uploadConversion->setDefaultRevenueCurrencyCode('EUR');

// Optional: Set the default revenue value to use for conversions
// that do not specify a conversion value. Note that this value
// should NOT be in micros.
$uploadConversion->setDefaultRevenueValue(2.50);

// Optional: To upload fractional conversion credits, mark the upload
// conversion as externally attributed. See
// https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
// to learn more about importing externally attributed conversions.

// uploadConversion->setIsExternallyAttributed(true);

$conversionTrackers[] = $uploadConversion;

Python

upload_conversion = {
    'xsi_type': 'UploadConversion',
    'name': 'Upload Conversion #%s' % uuid.uuid4(),
    # Optional fields.
    # Set an appropriate category. This will be set to DEFAULT if not
    # specified.
    'category': 'LEAD',
    'viewthroughLookbackWindow': '30',
    'ctcLookbackWindow': '90',
    # Set the default currency code to use for conversions that do
    # not specify a conversion currency. This must be an ISO 4217 3-character
    # code such as "EUR" or "USD".
    # If this field is not set, AdWords will use the account's currency.
    'defaultRevenueCurrencyCode': 'EUR',
    # Set the default revenue value to use for conversions that do not specify
    # a converison value. Note that this value should NOT be in micros.
    'defaultRevenueValue': '2.50',
    # To upload fractional conversion credits, mark the upload conversion as
    # externally attributed. To learn more about importing externally
    # attributed conversions, see:
    # https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
    # 'isExternallyAttributed': 'true'
}

Ruby

# Prepare for adding upload conversion tracker.
operation2 = {
  :operator => 'ADD',
  :operand => {
    # The 'xsi_type' field allows you to specify the xsi:type of the object
    # being created. It's only necessary when you must provide an explicit
    # type that the client library can't infer.
    :xsi_type => 'UploadConversion',

    # Set an appropriate category. This field is optional, and will be set to
    # DEFAULT if not mentioned.
    :category => 'LEAD',
    :name => "Upload Conversion #%d" % (Time.new.to_f * 1000).to_i,
    :viewthrough_lookback_window => 30,
    :ctc_lookback_window => 90,

    # Optional: Set the default currency code to use for conversions that do
    # not specify a conversion currency. This must be an ISO 4217 3-character
    # currency code such as "EUR" or "USD".
    # If this field is not set on this UploadConversion, AdWords will use the
    # account currency.
    :default_revenue_currency_code => 'EUR',

    # Optional: Set the default revenue value to use for conversions that do
    # not specify a conversion value.
    # Note: that this value should NOT be in micros.
    :default_revenue_value => 2.50,

    # Optional: To upload fractional conversion credits, mark the upload
    # conversion as externally attributed. See
    # https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
    # to learn more about importing externally attributed conversions.
    #:is_externally_attributed => true
  }
}

Perl

# Create an upload conversion for offline conversion imports.
my $upload_conversion_tracker =
  Google::Ads::AdWords::v201802::UploadConversion->new({
    # Set an appropriate category. This field is optional, and will be set to
    # DEFAULT if not mentioned.
    category                             => "LEAD",
    name                                 => "Upload Conversion #" . uniqid(),
    viewthroughLookbackWindow            => 30,
    ctcLookbackWindow                    => 90,
    # Optional: Set the default currency code to use for conversions
    # that do not specify a conversion currency. This must be an ISO 4217
    # 3-character currency code such as "EUR" or "USD".
    # If this field is not set on this UploadConversion, AdWords will use
    # the account's currency.
    defaultRevenueCurrencyCode => "EUR",
    # Optional: Set the default revenue value to use for conversions
    # that do not specify a conversion value. Note that this value
    # should NOT be in micros.
    defaultRevenueValue => 2.50,
    # Optional: To upload fractional conversion credits, mark the upload conversion
    # as externally attributed. See
    # https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
    # to learn more about importing externally attributed conversions.
    # isExternallyAttributed => true
  });
push @conversion_trackers, $upload_conversion_tracker;

C#

// Create an upload conversion for offline conversion imports.
UploadConversion uploadConversion = new UploadConversion();
// Set an appropriate category. This field is optional, and will be set to
// DEFAULT if not mentioned.
uploadConversion.category = ConversionTrackerCategory.LEAD;
uploadConversion.name = "Upload Conversion #" + ExampleUtilities.GetRandomString();
uploadConversion.viewthroughLookbackWindow = 30;
uploadConversion.ctcLookbackWindow = 90;

// Optional: Set the default currency code to use for conversions
// that do not specify a conversion currency. This must be an ISO 4217
// 3-character currency code such as "EUR" or "USD".
// If this field is not set on this UploadConversion, AdWords will use
// the account's currency.
uploadConversion.defaultRevenueCurrencyCode = "EUR";

// Optional: Set the default revenue value to use for conversions
// that do not specify a conversion value. Note that this value
// should NOT be in micros.
uploadConversion.defaultRevenueValue = 2.50;

// Optional: To upload fractional conversion credits, mark the upload conversion
// as externally attributed. See
// https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
// to learn more about importing externally attributed conversions.

// uploadConversion.isExternallyAttributed = true;

conversionTrackers.Add(uploadConversion);

VB

' Create an upload conversion for offline conversion imports.
Dim uploadConversion As New UploadConversion()
' Set an appropriate category. This field is optional, and will be set to
' DEFAULT if not mentioned.
uploadConversion.category = ConversionTrackerCategory.LEAD
uploadConversion.name = "Upload Conversion #" + ExampleUtilities.GetRandomString()
uploadConversion.viewthroughLookbackWindow = 30
uploadConversion.ctcLookbackWindow = 90

' Optional: Set the default currency code to use for conversions
' that do not specify a conversion currency. This must be an ISO 4217
' 3-character currency code such as "EUR" or "USD".
' If this field is not set on this UploadConversion, AdWords will use
' the account's currency.
uploadConversion.defaultRevenueCurrencyCode = "EUR"

' Optional: Set the default revenue value to use for conversions
' that do not specify a conversion value. Note that this value
' should NOT be in micros.
uploadConversion.defaultRevenueValue = 2.5

' Optional: To upload fractional conversion credits, mark the upload conversion
' as externally attributed. See
' https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
' to learn more about importing externally attributed conversions.

' uploadConversion.isExternallyAttributed = True

conversionTrackers.Add(uploadConversion)

Этот фрагмент кода создает объект UploadConversion, используя ConversionTrackerService. Значение поля conversionName является идентификатором события-конверсии, и оно должно быть уникальным.

Ваш сайт и система отслеживания потенциальных клиентов должны регистрировать GCLID – уникальные идентификаторы AdWords, связанные с каждым показом объявления, которые отправляются на сервер AdWords после клика по объявлению. Также необходимо включить функцию автоматической пометки, чтобы сайт получал GCLID в качестве параметра URL. Подробнее об этом рассказано в руководстве по отслеживанию офлайн-конверсий.

Загрузка данных об офлайн-конверсиях

После создания объекта UploadConversion нужно связать с ним офлайн-конверсии. Для этого передайте сервису OfflineConversionFeedService следующие данные: GCLID, время конверсии (с идентификатором часового пояса), название и (необязательно) ценность и валюту конверсии:

Java

/**
 * Runs the example.
 *
 * @param adWordsServices the services factory.
 * @param session the session.
 * @param conversionName the name of the conversion tracker.
 * @param gClid the GCLID for the conversion.
 * @param conversionTime the date and time of the conversion.
 * @param conversionValue the value of the conversion.
 * @throws ApiException if the API request failed with one or more service errors.
 * @throws RemoteException if the API request failed due to other errors.
 */
public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session,
    String conversionName, String gClid, String conversionTime,
    double conversionValue) throws RemoteException {

  // Get the OfflineConversionFeedService.
  OfflineConversionFeedServiceInterface offlineConversionFeedService =
      adWordsServices.get(session, OfflineConversionFeedServiceInterface.class);

  // Associate offline conversions with the existing named conversion tracker. If this tracker
  // was newly created, it may be a few hours before it can accept conversions.
  OfflineConversionFeed feed = new OfflineConversionFeed();
  feed.setConversionName(conversionName);
  feed.setConversionTime(conversionTime);
  feed.setConversionValue(conversionValue);
  feed.setGoogleClickId(gClid);

  OfflineConversionFeedOperation offlineConversionOperation =
      new OfflineConversionFeedOperation();
  offlineConversionOperation.setOperator(Operator.ADD);
  offlineConversionOperation.setOperand(feed);

  OfflineConversionFeedReturnValue offlineConversionReturnValue = offlineConversionFeedService
      .mutate(new OfflineConversionFeedOperation[] {offlineConversionOperation});

  OfflineConversionFeed newFeed = offlineConversionReturnValue.getValue(0);

  System.out.printf(
      "Uploaded offline conversion value of %.4f for Google Click ID '%s' to '%s'.%n",
      newFeed.getConversionValue(), newFeed.getGoogleClickId(), newFeed.getConversionName());
}

PHP

$offlineConversionService = $adWordsServices->get($session, OfflineConversionFeedService::class);

// Associate offline conversions with the existing named conversion tracker.
// If this tracker was newly created, it may be a few hours before it can
// accept conversions.
$feed = new OfflineConversionFeed();
$feed->setConversionName($conversionName);
$feed->setConversionTime($conversionTime);
$feed->setConversionValue($conversionValue);
$feed->setGoogleClickId($gclid);

// Optional: To upload fractional conversion credits, set the external
// attribution model and credit. To use this feature, your conversion
// tracker should be marked as externally attributed. See
// https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
// to learn more about importing externally attributed conversions.

// $feed->setExternalAttributionModel('Linear');
// $feed->setExternalAttributionCredit(0.3);

$offlineConversionOperation = new OfflineConversionFeedOperation();
$offlineConversionOperation->setOperator(Operator::ADD);
$offlineConversionOperation->setOperand($feed);
$offlineConversionOperations = [$offlineConversionOperation];

$result = $offlineConversionService->mutate($offlineConversionOperations);

$feed = $result->getValue()[0];
printf(
    "Uploaded offline conversion value of %d for Google Click ID = '%s' to '%s'.\n",
    $feed->getConversionValue(),
    $feed->getGoogleClickId(),
    $feed->getConversionName()
);

Python

# Initialize appropriate services.
offline_conversion_feed_service = client.GetService(
    'OfflineConversionFeedService', version='v201802')

# Associate offline conversions with the existing named conversion tracker. If
# this tracker was newly created, it may be a few hours before it can accept
# conversions.
feed = {
    'conversionName': conversion_name,
    'conversionTime': conversion_time,
    'conversionValue': conversion_value,
    'googleClickId': click_id,
    # Optional: To upload fractional conversion credits, set the external
    # attribution model and credit. To use this feature, your conversion
    # tracker should be marked as externally attributed. To learn more about
    # importing externally attributed conversins, see:
    # https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
    # 'externalAttributionCredit': 0.3,
    # 'externalAttributionModel': 'Linear'
}

offline_conversion_operation = {
    'operator': 'ADD',
    'operand': feed
}

offline_conversion_response = offline_conversion_feed_service.mutate(
    [offline_conversion_operation])
new_feed = offline_conversion_response['value']

print ('Uploaded offline conversion value of "%s" for Google Click ID '
       '"%s" to "%s".' % (new_feed['conversionValue'],
                          new_feed['googleClickId'],
                          new_feed['conversionName']))

Ruby

conversion_feed_srv =
    adwords.service(:OfflineConversionFeedService, API_VERSION)

# Associate offline conversions with the existing named conversion tracker. If
# this tracker was newly created, it may be a few hours before it can accept
# conversions.
feed = {
  :conversion_name => conversion_name,
  :google_click_id => google_click_id,
  :conversion_time => conversion_time,
  :conversion_value => conversion_value
}

# Optional: To upload fractional conversion credits, set the external
# attribution model and credit. To use this feature, your conversion tracker
# should be marked as externally attributed. See
# https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
# to learn more about importing externally attributed conversions.
#
# feed[:external_attribution_model] = "Linear"
# feed[:external_attribution_credit] = 0.3

return_feeds = conversion_feed_srv.mutate([
  {:operator => 'ADD', :operand => feed}])
return_feeds[:value].each do |return_feed|
  puts ("Uploaded offline conversion value %.2f for Google Click ID '%s', " +
      'to %s') % [return_feed[:conversion_value],
                  return_feed[:google_click_id],
                  return_feed[:conversion_name]]
end

Perl

sub upload_offline_conversions {
  my $client                        = shift;
  my $conversion_name               = shift;
  my $gclid                         = shift;
  my $conversion_time               = shift;
  my $conversion_value              = shift;
  my @offline_conversion_operations = ();

  # Associate offline conversions with the existing named conversion tracker. If
  # this tracker was newly created, it may be a few hours before it can accept
  # conversions.
  my $feed = Google::Ads::AdWords::v201802::OfflineCallConversionFeed->new({
      conversionName  => $conversion_name,
      conversionTime  => $conversion_time,
      conversionValue => $conversion_value,
      googleClickId   => $gclid
  });

  my $offline_conversion_operation =
    Google::Ads::AdWords::v201802::OfflineCallConversionFeedOperation->new({
      operator => "ADD",
      operand  => $feed
    });

  push @offline_conversion_operations, $offline_conversion_operation;

  # Add the upload conversion.
  my $feed_result =
    $client->OfflineCallConversionFeedService()
    ->mutate({operations => \@offline_conversion_operations});

  # Display results.
  if ($feed_result->get_value()) {
    foreach my $oc_feed (@{$feed_result->get_value()}) {
      printf "Uploaded offline conversion value of \"%s\" for Google Click " .
        "ID \"%s\" was created.\n",
        $oc_feed->get_conversionName(),
        $oc_feed->get_googleClickId();
    }
  } else {
    print "No offline conversion were added.\n";
    return;
  }

  return 1;
}

C#

public void Run(AdWordsUser user, String conversionName, String gClid, String conversionTime,
    double conversionValue) {
  using (OfflineConversionFeedService offlineConversionFeedService =
      (OfflineConversionFeedService) user.GetService(
          AdWordsService.v201802.OfflineConversionFeedService)) {

    try {
      // Associate offline conversions with the existing named conversion tracker. If
      // this tracker was newly created, it may be a few hours before it can accept
      // conversions.
      OfflineConversionFeed feed = new OfflineConversionFeed();
      feed.conversionName = conversionName;
      feed.conversionTime = conversionTime;
      feed.conversionValue = conversionValue;
      feed.googleClickId = gClid;

      // Optional: To upload fractional conversion credits, set the external attribution model
      // and credit. To use this feature, your conversion tracker should be marked as externally
      // attributed. See
      // https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
      // to learn more about importing externally attributed conversions.

      // feed.externalAttributionModel = "Linear";
      // feed.externalAttributionCredit = 0.3;

      OfflineConversionFeedOperation offlineConversionOperation =
          new OfflineConversionFeedOperation();
      offlineConversionOperation.@operator = Operator.ADD;
      offlineConversionOperation.operand = feed;

      OfflineConversionFeedReturnValue offlineConversionRetval =
          offlineConversionFeedService.mutate(
              new OfflineConversionFeedOperation[] { offlineConversionOperation });

      OfflineConversionFeed newFeed = offlineConversionRetval.value[0];

      Console.WriteLine("Uploaded offline conversion value of {0} for Google Click ID = " +
          "'{1}' to '{2}'.", newFeed.conversionValue, newFeed.googleClickId,
          newFeed.conversionName);
    } catch (Exception e) {
      throw new System.ApplicationException("Failed upload offline conversions.", e);
    }
  }
}

VB

''' <summary>
''' Runs the code example.
''' </summary>
''' <param name="user">The AdWords user.</param>
''' <param name="conversionName">The name of the upload conversion to be
''' created.</param>
''' <param name="gClid">The Google Click ID of the click for which offline
''' conversions are uploaded.</param>
''' <param name="conversionValue">The conversion value to be uploaded.
''' </param>
''' <param name="conversionTime">The conversion time, in yyyymmdd hhmmss
''' format.</param>
Public Sub Run(ByVal user As AdWordsUser, ByVal conversionName As String,
    ByVal gClid As String, ByVal conversionTime As String, ByVal conversionValue As Double)
  Using offlineConversionFeedService As OfflineConversionFeedService = CType(user.GetService(
      AdWordsService.v201802.OfflineConversionFeedService),
          OfflineConversionFeedService)

    Try
      ' Associate offline conversions with the existing named conversion tracker. If
      ' this tracker was newly created, it may be a few hours before it can accept
      ' conversions.
      Dim feed As New OfflineConversionFeed()
      feed.conversionName = conversionName
      feed.conversionTime = conversionTime
      feed.conversionValue = conversionValue
      feed.googleClickId = gClid

      ' Optional: To upload fractional conversion credits, set the external attribution model
      ' and credit. To use this feature, your conversion tracker should be marked as externally
      ' attributed. See
      ' https://developers.google.com/adwords/api/docs/guides/conversion-tracking#importing_externally_attributed_conversions
      ' to learn more about importing externally attributed conversions.

      ' feed.externalAttributionModel = "Linear"
      ' feed.externalAttributionCredit = 0.3

      Dim offlineConversionOperation As New OfflineConversionFeedOperation()
      offlineConversionOperation.operator = [Operator].ADD
      offlineConversionOperation.operand = feed

      Dim offlineConversionRetval As OfflineConversionFeedReturnValue =
        offlineConversionFeedService.mutate(
            New OfflineConversionFeedOperation() {offlineConversionOperation})

      Dim newFeed As OfflineConversionFeed = offlineConversionRetval.value(0)

      Console.WriteLine("Uploaded offline conversion value of {0} for Google Click ID = " &
          "'{1}' to '{2}'.", newFeed.conversionValue, newFeed.googleClickId,
          newFeed.conversionName)
    Catch e As Exception
      Throw New System.ApplicationException("Failed to upload offline conversions.", e)
    End Try
  End Using
End Sub

Импорт конверсий со сторонней атрибуцией

Если вы используете сторонние или собственные инструменты отслеживания конверсий, вам может понадобиться указать долю ценности конверсии, которая принадлежит AdWords. Кроме того, иногда возникает необходимость распределить ценность конверсии между несколькими кликами AdWords. Импорт конверсий со сторонней атрибуцией позволяет загружать данные о конверсиях и указывать долю ценности конверсии для каждого идентификатора GCLID.

Чтобы загрузить данные о конверсиях с указанием доли ценности, следуйте этим инструкциям, а также выполните следующие дополнительные действия:

  1. Создавая объект UploadConversion, укажите, что для него использовалась сторонняя атрибуция, присвоив свойству isExternallyAttributed значение true.

  2. При загрузке данных о конверсиях укажите свойства externalAttributionModel и externalAttributionCredit объекта OfflineConversionFeed.

Правила проверки данных

Чтобы загрузка данных через объект OfflineConversionFeed прошла успешно, должны выполняться перечисленные ниже требования.

Чтобы избежать ошибки OfflineConversionError.INVALID_CONVERSION_TYPE, поле conversionName должно указывать на объект UploadConversion, соответствующий следующим условиям:

  • Поле UploadConversion объекта status должно иметь значение ENABLED на момент клика.

  • Объект UploadConversion должен существовать в аккаунте AdWords, где учитывается конверсия, на момент клика. Если на момент клика не использовалось отслеживание конверсий в аккаунте Центра клиентов, то объект UploadConversion берется из аккаунта, в который загружаются конверсии. Чтобы узнать, в каком аккаунте учитываются конверсии, войдите в аккаунт AdWords и выберите в главном меню Инструменты > Конверсии. Впрочем, учтите, что здесь показывается, в каком аккаунте конверсии учитываются сейчас, а не в момент звонка.

Также должны выполняться следующие условия:

  • Время, указанное в поле conversionTime, должно быть более поздним, чем время клика. Иначе вы получите ошибку OfflineConversionError.Ошибка CONVERSION_PRECEDES_CLICK.

  • Время, указанное в поле conversionTime, должно быть в пределах периода ретроспективного анализа, указанного в объекте UploadConversion. Иначе вы получите ошибку OfflineConversionError.Ошибка EXPIRED_CLICK.

  • Значение поля conversionValue должно быть положительным или нулевым.

  • В поле conversionTime должен быть указан идентификатор часового пояса (он может отличаться от часового пояса аккаунта).

Советы

При создании фида OfflineConversionFeed необходимо учитывать следующее:

  • Загружаемые данные о конверсиях обрабатываются как единое целое: если хотя бы одна конверсия устарела или имеет недействительный идентификатор GCLID, то все остальные конверсии не будут загружены. Этого можно избежать с помощью функции частичного отказа.

  • Если обнаруживаются дублирующиеся конверсии (с одинаковым GCLID, названием и временем конверсии), импортируется только первая из них.

  • Для загруженных данных о конверсиях в отчетах будет отображаться дата показа по исходному клику, а не дата запроса на загрузку или дата, соответствующая параметру conversionTime в объекте OfflineConversionFeeds.

  • После создания объекта UploadConversion рекомендуется подождать 6 часов и только потом импортировать данные.

  • При атрибуции по последнему клику может пройти до 3 часов после импорта данных, прежде чем статистика появится в аккаунте AdWords. Если вы используете другие модели атрибуции для поисковых объявлений, может понадобиться более 3 часов.

  • При загрузке данных о конверсиях по кликам для нескольких аккаунтов можно указать параметр clientCustomerId общего управляющего аккаунта и добавить операции с идентификаторами GCLID из разных аккаунтов. Конверсия регистрируется для того аккаунта, к которому относится идентификатор GCLID.

  • Если вы загружаете данные о конверсиях по кликам и у вас включено отслеживание в аккаунте Центра клиентов, тип конверсии должен относиться к управляющему аккаунту, а не аккаунту, связанному с идентификатором GCLID.

Примеры кода

В папке Remarketing клиентской библиотеки вы найдете пример кода для загрузки данных об офлайн-конверсиях:

Импорт звонков-конверсий

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

В этом разделе рассказывается, как создать фид для импорта данных о звонках-конверсиях с помощью AdWords API.

Настройка

Сначала нужно создать сервис для отслеживания импортируемых звонков-конверсий. Это можно сделать в интерфейсе AdWords или программным способом, создав объект UploadCallConversion. Настройка выполняется точно так же, как и для импорта конверсий по кликам, но вместо класса UploadCallConversion используется UploadConversion.

Загрузка данных о звонках-конверсиях

После создания объекта UploadCallConversion необходимо связать с ним данные о звонках-конверсиях, передав сервису OfflineCallConversionFeedService следующие значения: телефонный номер абонента, время конверсии (с идентификатором часового пояса), название конверсии и (необязательно) ценность и валюта конверсии.

Java

/**
 * Runs the example.
 *
 * @param adWordsServices the services factory.
 * @param session the session.
 * @param callerId the caller ID of the call.
 * @param callStartTime the call start time of the call.
 * @param conversionName the name of the conversion tracker.
 * @param conversionTime the date and time of the conversion.
 * @param conversionValue the value of the conversion.
 * @throws ApiException if the API request failed with one or more service errors.
 * @throws RemoteException if the API request failed due to other errors.
 */
public static void runExample(
    AdWordsServicesInterface adWordsServices,
    AdWordsSession session,
    String callerId,
    String callStartTime,
    String conversionName,
    String conversionTime,
    double conversionValue)
    throws RemoteException {

  // Get the OfflineCallConversionFeedService.
  OfflineCallConversionFeedServiceInterface offlineCallConversionFeedService =
      adWordsServices.get(session, OfflineCallConversionFeedServiceInterface.class);

  // Associate offline call conversions with the existing named conversion tracker. If this
  // tracker was newly created, it may be a few hours before it can accept conversions.
  OfflineCallConversionFeed feed = new OfflineCallConversionFeed();
  feed.setCallerId(callerId);
  feed.setCallStartTime(callStartTime);
  feed.setConversionName(conversionName);
  feed.setConversionTime(conversionTime);
  feed.setConversionValue(conversionValue);

  OfflineCallConversionFeedOperation offlineCallConversionOperation =
      new OfflineCallConversionFeedOperation();
  offlineCallConversionOperation.setOperator(Operator.ADD);
  offlineCallConversionOperation.setOperand(feed);

  // This example uploads only one call conversion, but you can upload multiple call conversions
  // by passing additional operations.
  OfflineCallConversionFeedReturnValue offlineCallConversionReturnValue =
      offlineCallConversionFeedService.mutate(
          new OfflineCallConversionFeedOperation[] {offlineCallConversionOperation});

  // Display results.
  for (OfflineCallConversionFeed feedResult : offlineCallConversionReturnValue.getValue()) {
    System.out.printf(
        "Uploaded offline conversion value of %.4f for caller ID '%s'.%n",
        feedResult.getConversionValue(), feedResult.getCallerId());
  }
}

PHP

public static function runExample(
    AdWordsServices $adWordsServices,
    AdWordsSession $session,
    $callerId,
    $callStartTime,
    $conversionName,
    $conversionTime,
    $conversionValue
) {
    $offlineCallConversionService = $adWordsServices->get(
        $session,
        OfflineCallConversionFeedService::class
    );

    // Associate offline call conversions with the existing named conversion
    // tracker. If this tracker was newly created, it may be a few hours before
    // it can accept conversions.
    $feed = new OfflineCallConversionFeed();
    $feed->setCallerId($callerId);
    $feed->setCallStartTime($callStartTime);
    $feed->setConversionName($conversionName);
    $feed->setConversionTime($conversionTime);
    $feed->setConversionValue($conversionValue);

    $offlineCallConversionOperations = [];
    $offlineCallConversionOperation = new OfflineCallConversionFeedOperation();
    $offlineCallConversionOperation->setOperator(Operator::ADD);
    $offlineCallConversionOperation->setOperand($feed);
    $offlineCallConversionOperations[] = $offlineCallConversionOperation;

    // This example uploads only one call conversion, but you can upload
    // multiple call conversions by passing additional operations.
    $result = $offlineCallConversionService->mutate($offlineCallConversionOperations);

    $feed = $result->getValue()[0];
    printf(
        "Uploaded offline call conversion value of '%s' for caller ID '%s'.\n",
        $feed->getConversionValue(),
        $feed->getCallerId()
    );
}

Python

def main(client, caller_id, call_start_time, conversion_name, conversion_time,
         conversion_value):
  # Initialize appropriate services.
  occ_feed_service = client.GetService(
      'OfflineCallConversionFeedService', version='v201802')

  # Associate offline call conversions with the existing named conversion
  # tracker. If this tracker was newly created, it may be a few hours before it
  # can accept conversions.
  feed = {
      'callerId': caller_id,
      'callStartTime': call_start_time,
      'conversionName': conversion_name,
      'conversionTime': conversion_time,
      'conversionValue': conversion_value,
  }

  occ_operations = [{'operator': 'ADD', 'operand': feed}]

  occ_response = occ_feed_service.mutate(occ_operations)
  values = occ_response['value']

  if values:
    for occ_feed in values:
      print ('Uploaded offline call conversion value of "%s" for caller ID '
             '"%s".\n' % (occ_feed['conversionName'], occ_feed['callerId']))
  else:
    print 'No offline call conversions were added.'

Ruby

occ_feed_srv =
    adwords.service(:OfflineCallConversionFeedService, API_VERSION)

# Associate offline conversions with the existing named conversion tracker. If
# this tracker was newly created, it may be a few hours before it can accept
# conversions.
feed = {
  :caller_id => caller_id,
  :call_start_time => call_start_time,
  :conversion_name => conversion_name,
  :conversion_time => conversion_time,
  :conversion_value => conversion_value
}

occ_operations = [{
  :operator => 'ADD',
  :operand => feed
}]

occ_response = occ_feed_srv.mutate(occ_operations)

if occ_response[:value]
  occ_response[:value].each do |occ_feed|
    puts 'Uploaded offline call conversion value "%s" for caller ID "%s"' %
        [occ_feed[:conversion_name], occ_feed[:caller_id]]
  end
end

Perl

sub upload_offline_call_conversions {
  my $client                             = shift;
  my $caller_id                          = shift;
  my $call_start_time                    = shift;
  my $conversion_name                    = shift;
  my $conversion_time                    = shift;
  my $conversion_value                   = shift;
  my @offline_call_conversion_operations = ();

  # Associate offline call conversions with the existing named
  # conversion tracker. If this tracker was newly created, it may be a
  # few hours before it can accept conversions.
  my $feed = Google::Ads::AdWords::v201802::OfflineCallConversionFeed->new({
    callerId        => $caller_id,
    callStartTime   => $call_start_time,
    conversionName  => $conversion_name,
    conversionTime  => $conversion_time,
    conversionValue => $conversion_value
  });

  my $offline_call_conversion_operation =
    Google::Ads::AdWords::v201802::OfflineCallConversionFeedOperation->new({
      operator => "ADD",
      operand  => $feed
    });

  push @offline_call_conversion_operations, $offline_call_conversion_operation;

  # This example uploads only one call conversion, but you can upload multiple
  # call conversions by passing additional operations.
  my $result =
    $client->OfflineCallConversionFeedService()
    ->mutate({operations => \@offline_call_conversion_operations});

  # Display results.
  if ($result->get_value()) {
    foreach my $feed_result (@{$result->get_value()}) {
      printf "Uploaded offline call conversion value of \"%s\" for caller ID " .
        "\"%s\".\n",
        $feed_result->get_conversionValue(),
        $feed_result->get_callerId();
    }
  } else {
    print "No offline call conversions were added.\n";
    return;
  }

  return 1;
}

C#

public void Run(AdWordsUser user, String conversionName, String callStartTime, String callerId,
    String conversionTime, double conversionValue) {
  using (OfflineCallConversionFeedService offlineCallConversionFeedService =
       (OfflineCallConversionFeedService) user.GetService(
           AdWordsService.v201802.OfflineCallConversionFeedService)) {

    // Associate offline call conversions with the existing named conversion tracker. If this
    // tracker was newly created, it may be a few hours before it can accept conversions.
    OfflineCallConversionFeed feed = new OfflineCallConversionFeed();
    feed.callerId = callerId;
    feed.callStartTime = callStartTime;
    feed.conversionName = conversionName;
    feed.conversionTime = conversionTime;
    feed.conversionValue = conversionValue;

    OfflineCallConversionFeedOperation offlineCallConversionOperation =
        new OfflineCallConversionFeedOperation();
    offlineCallConversionOperation.@operator = Operator.ADD;
    offlineCallConversionOperation.operand = feed;

    try {
      // This example uploads only one call conversion, but you can upload
      // multiple call conversions by passing additional operations.
      OfflineCallConversionFeedReturnValue offlineCallConversionReturnValue =
          offlineCallConversionFeedService.mutate(
              new OfflineCallConversionFeedOperation[] { offlineCallConversionOperation });

      // Display results.
      foreach (OfflineCallConversionFeed feedResult in
          offlineCallConversionReturnValue.value) {
        Console.WriteLine("Uploaded offline call conversion value of {0} for caller ID '{1}'.",
            feedResult.conversionValue, feedResult.callerId);
      }
    } catch (Exception e) {
      throw new System.ApplicationException("Failed to upload offline call conversions.", e);
    }
  }
}

VB

Using offlineCallConversionFeedService As OfflineCallConversionFeedService =
    CType(user.GetService(AdWordsService.v201802.OfflineCallConversionFeedService),
        OfflineCallConversionFeedService)

  ' Associate offline call conversions with the existing named conversion tracker. If this
  ' tracker was newly created, it may be a few hours before it can accept conversions.
  Dim feed As New OfflineCallConversionFeed()
  feed.callerId = callerId
  feed.callStartTime = callStartTime
  feed.conversionName = conversionName
  feed.conversionTime = conversionTime
  feed.conversionValue = conversionValue

  Dim offlineCallConversionOperation As New OfflineCallConversionFeedOperation()
  offlineCallConversionOperation.operator = [Operator].ADD
  offlineCallConversionOperation.operand = feed

  Try
    ' This example uploads only one call conversion, but you can upload
    ' multiple call conversions by passing additional operations.
    Dim offlineCallConversionReturnValue As OfflineCallConversionFeedReturnValue =
      offlineCallConversionFeedService.mutate(
          New OfflineCallConversionFeedOperation() {offlineCallConversionOperation})

    ' Display results.
    For Each feedResult As OfflineCallConversionFeed In
        offlineCallConversionReturnValue.value
      Console.WriteLine("Uploaded offline call conversion value of {0} for caller ID '{1}'.",
          feedResult.conversionValue, feedResult.callerId)
    Next
  Catch e As Exception
    Throw New System.ApplicationException("Failed to upload offline call conversions.", e)
  End Try
End Using

Правила проверки данных

Чтобы можно было загрузить данные с помощью объекта OfflineCallConversionFeed, должны выполняться следующие требования:

Чтобы не возникла ошибка OfflineCallConversionError.INVALID_CONVERSION_TYPE, поле conversionName должно указывать на объект UploadCallConversion, соответствующий следующим условиям:

  • Поле status объекта UploadCallConversion должно иметь значение ENABLED на момент звонка.

  • Объект UploadCallConversion на момент звонка существовал в аккаунте AdWords, где учитывается конверсия. Если в нем в это время не использовалось отслеживание конверсий в аккаунте Центра клиентов, то объект UploadCallConversion берется из аккаунта, в который загружаются конверсии. Чтобы узнать, в каком аккаунте учитываются конверсии, войдите в AdWords и выберите в главном меню Инструменты > Конверсии. Учтите, что здесь показывается, в каком аккаунте конверсии учитываются сейчас, а не в момент звонка.

Также должны выполняться следующие условия:

  • Значение поля conversionValue должно быть положительным или нулевым.

  • В поле conversionTime должен быть указан идентификатор часового пояса (он может отличаться от часового пояса аккаунта).

Советы

При создании фида OfflineCallConversionFeed необходимо учитывать следующее:

  • Мы рекомендуем импортировать данные не раньше чем через 6 часов после создания объекта UploadCallConversion.

  • После импорта данных может пройти до 3 часов, прежде чем статистика появится в аккаунте AdWords.

  • Если обнаруживаются дублирующиеся конверсии (с одинаковым телефонным номером, названием и временем конверсии), импортируется только первая из них.

Примеры кода

В папке Remarketing клиентской библиотеки вы найдете пример кода для загрузки данных о звонках-конверсиях:

Как импортировать данные типа "Продажи в магазине (прямая загрузка)"

С помощью AdWords API можно загружать данные о конверсиях типа "Продажи в магазине (прямая загрузка)".

Настройка

Сначала необходимо создать типы конверсий, которые вы хотите импортировать. Это можно сделать только в интерфейсе AdWords. Присвоенное конверсии название (conversionName) – это ее уникальный идентификатор. После создания типов импортируемых конверсий вы можете загружать данные о продажах в магазине через интерфейс AdWords или через API.

Как отправить данные типа "Продажи в магазине (прямая загрузка)"

После создания объекта отслеживания конверсий conversionTracker нужно связать с ним данные о продажах в магазине, передав в объект OfflineDataUpload название конверсии и транзакции в магазине через сервис OfflineDataUploadService.

Правила проверки данных

Чтобы загрузка данных через объект OfflineDataUpload прошла успешно, должны выполняться перечисленные ниже требования.

Чтобы избежать ошибки OfflineDataUploadError.INVALID_CONVERSION_TYPE, в названии конверсии (conversionName) нужно указать объект отслеживания конверсий conversionTracker, соответствующий следующим условиям:

  • Отслеживание конверсий на момент клика должно быть включено.

  • Объект отслеживания конверсий conversionTracker должен существовать на момент клика в аккаунте AdWords, где учитывается конверсия. Если на момент клика не использовалось отслеживание конверсий в аккаунте Центра клиентов, то объект conversionTracker берется из аккаунта, в который загружаются конверсии. Чтобы узнать, в каком аккаунте учитываются конверсии, войдите в аккаунт AdWords и выберите в главном меню Инструменты > Конверсии. Впрочем, учтите, что здесь показывается, в каком аккаунте конверсии учитываются сейчас, а не в момент звонка.

Также должны выполняться следующие условия:

  • Значение transactionAmount должно быть больше нуля.

  • В поле transactionTime должен быть указан идентификатор часового пояса (он может отличаться от часового пояса аккаунта).

Примеры кода

В папке Remarketing клиентской библиотеки вы найдете пример кода для загрузки офлайн-данных:

Оставить отзыв о...

Текущей странице
Нужна помощь? Обратитесь в службу поддержки.