Отслеживание конверсий является краеугольным камнем эффективного управления рекламными кампаниями. Традиционные методы, основанные на браузерных файлах cookie, сталкиваются с растущими ограничениями из-за изменений в политиках конфиденциальности браузеров и пользовательских настроек. Это делает сервер-серверное (server-to-server, S2S) отслеживание все более актуальным подходом, обеспечивающим более точное и надежное связывание кликов по объявлениям с фактическими конверсиями.
Что такое сервер-серверное отслеживание и почему оно важно?
Сервер-серверное отслеживание предполагает, что данные о конверсии передаются непосредственно с вашего сервера на сервер рекламной платформы (в данном случае Google Ads) через API, минуя браузер пользователя на этапе отправки конверсии. Это означает, что когда на вашем сервере происходит событие, которое вы определили как конверсию (например, завершение покупки, заполнение формы), ваш сервер инициирует отправку этой информации в Google Ads.
Важность S2S отслеживания проистекает из его способности преодолевать ограничения клиентского отслеживания:
Надежность: Менее подвержено блокировке сторонних cookie, ограничениям ITP (Intelligent Tracking Prevention) в Safari или аналогичным политикам приватности в других браузерах.
Точность: Позволяет отслеживать конверсии, которые могут произойти через значительное время после клика или на другом устройстве/браузере, если у вас есть механизм связывания пользователя.
Богатые данные: Позволяет передавать более детализированные данные о конверсии, которые могут быть недоступны на клиентской стороне (например, внутренняя маржа заказа, статус лояльности клиента).
Преимущества сервер-серверного отслеживания по сравнению с отслеживанием на основе cookie
Основные преимущества S2S отслеживания над классическим отслеживанием через JavaScript и cookie:
Устойчивость к блокировкам: Обходит ограничения, налагаемые браузерами и блокировщиками рекламы на клиентские скрипты и cookie.
Долговечность: Серверные данные не зависят от срока жизни cookie в браузере пользователя.
Безопасность: Конфиденциальные данные могут обрабатываться на сервере до отправки, а сама передача данных более контролируема.
Производительность: Не добавляет дополнительной нагрузки на браузер пользователя, поскольку отправка данных происходит в фоновом режиме на сервере.
Отслеживание оффлайн-конверсий: Позволяет связывать онлайн-клики с оффлайн-событиями (например, покупка в магазине после клика по онлайн-рекламе), если вы можете связать пользователя между онлайн и оффлайн.
Обзор основных принципов работы сервер-серверной интеграции для Google Ads
Сервер-серверное отслеживание для Google Ads базируется на связывании серверного события конверсии с предыдущим кликом по объявлению. Ключевой идентификатор для этого связывания – Google Click Identifier (GCLID). Процесс выглядит следующим образом:
Пользователь кликает по объявлению Google Ads. URL целевой страницы содержит параметр gclid.
Ваш веб-сервер или скрипт на целевой странице захватывает значение gclid.
gclid сохраняется на вашей стороне и связывается с сессией или профилем пользователя (например, в базе данных, кэше).
Когда пользователь совершает конверсию на вашем сайте или в вашей системе, ваше серверное приложение фиксирует это событие.
Серверное приложение извлекает сохраненный gclid, связанный с этим пользователем.
Серверное приложение отправляет данные о конверсии (тип конверсии, gclid, время конверсии, ценность и валюта, если применимо) в Google Ads Conversion Upload API.
Google Ads обрабатывает эти данные и связывает конверсию с исходным кликом по объявлению.
Подготовка к настройке сервер-серверного отслеживания Google Ads
Успешная настройка S2S отслеживания требует тщательной подготовки и понимания ваших бизнес-процессов и технической архитектуры.
Необходимые условия: аккаунты, инструменты и доступы
Для начала вам потребуются:
Активный аккаунт Google Ads: С правами администратора или достаточными разрешениями для создания действий-конверсий и работы с API.
Доступ к вашему серверному приложению/бэкенду: Где происходит фиксация конверсий и откуда будет осуществляться отправка данных.
Google API Console: Для создания проекта, включения Google Ads API и получения учетных данных (например, OAuth 2.0 credentials) для авторизации API-запросов.
Знания или доступ к разработчикам: Для реализации логики захвата GCLID, хранения его и отправки данных через API.
Идентификатор клиента Google Ads (Customer ID): Нужен для указания аккаунта, в который загружаются конверсии.
Определение ключевых событий конверсии, которые необходимо отслеживать
Четко определите, какие действия пользователей на вашей стороне являются ценными конверсиями для Google Ads. Это могут быть:
Завершение покупки
Регистрация пользователя
Заполнение формы обратной связи
Подписка на рассылку
Достижение определенного уровня в игре
Для каждого типа конверсии необходимо создать соответствующее действие-конверсия в интерфейсе Google Ads. Каждое действие-конверсия будет иметь свой уникальный идентификатор (Conversion Action ID) и, возможно, тег (Conversion Tag). Эти идентификаторы понадобятся при отправке данных через API.
Выбор платформы или решения для сервер-серверной интеграции (например, Zapier, Integromat, собственные API)
Существует несколько подходов к реализации S2S интеграции:
Использование готовых коннекторов/платформ автоматизации: Такие сервисы как Zapier, Make (ранее Integromat) или специализированные CDP (Customer Data Platforms) часто предоставляют готовые интеграции с Google Ads Conversion API. Это может быть более быстрым решением для стандартных сценариев, но может иметь ограничения по гибкости и стоимости.
Собственная разработка: Реализация интеграции непосредственно в вашем серверном приложении с использованием клиентских библиотек Google Ads API для вашего языка программирования. Этот подход дает максимальную гибкость и контроль, но требует значительных ресурсов разработчиков.
Системы управления тегами на стороне сервера (Server-Side Tagging): Использование решений вроде Google Tag Manager Server-Side. Данные собираются на вашем сервере (или в облаке), обрабатываются и отправляются в Google Ads через серверный контейнер. Это компромисс между готовым решением и полной собственной разработкой.
Выбор зависит от вашей технической экспертизы, доступных ресурсов, сложности бизнес-логики конверсий и объема данных.
Пошаговая настройка сервер-серверного отслеживания Google Ads
Этот раздел описывает основные технические шаги для реализации S2S отслеживания.
Настройка обработки данных о кликах (GCLID) на вашем сервере
Первый критический шаг – это корректный захват и сохранение gclid. Когда пользователь переходит по объявлению Google Ads, к URL целевой страницы добавляется параметр ?gclid=.... Ваше приложение должно уметь извлекать это значение при первом посещении и связывать его с текущей сессией или пользователем.
Методы захвата и хранения:
Захват: На стороне сервера (из HTTP-заголовков или параметров запроса) или на клиентской стороне с помощью JavaScript с последующей передачей на сервер.
Хранение: В серверной сессии, в базе данных, связанной с профилем пользователя (если пользователь авторизуется), или даже в серверном HTTP-cookie (хотя это частично возвращает проблемы cookie-зависимости, но может быть резервным вариантом).
Пример псевдокода для захвата GCLID на сервере:
# Пример на Python (Flask framework)
from flask import request, session
def handle_landing_page():
# Получаем значение GCLID из параметров запроса
gclid = request.args.get('gclid')
if gclid:
# Сохраняем GCLID в сессии пользователя
# Сессия должна быть настроена на хранение на стороне сервера (например, с использованием базы данных или кэша)
session['gclid'] = gclid
# Дополнительно можно сохранить в базе данных, если пользователь известен/авторизован
# user = get_current_user()
# if user:
# user.save_gclid(gclid) # Метод для связывания GCLID с пользователем в БД
# ... остальная логика обработки страницы ...
return '...' # Возвращаем ответ страницы
# Пример на PHP
/*
* Функция для захвата и сохранения GCLID
*/
function capture_gclid(): void
{
if (isset($_GET['gclid']) && !empty($_GET['gclid'])) {
$gclid = $_GET['gclid'];
// Сохраняем GCLID в сессии
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
$_SESSION['gclid'] = $gclid;
// Или сохраняем в базе данных, если пользователь аутентифицирован
// global $current_user_id;
// if ($current_user_id) {
// save_gclid_for_user($current_user_id, $gclid); // Ваша функция сохранения в БД
// }
}
}
// Вызываем функцию при загрузке соответствующей страницы
// capture_gclid();Важно сохранять GCLID на достаточно долгий срок, соответствующий вашему окну конверсии в Google Ads (до 90 дней), чтобы учесть отложенные конверсии.
Отправка данных о конверсиях в Google Ads API
Когда происходит событие конверсии на вашей стороне, необходимо извлечь связанный gclid и отправить данные в Google Ads API. Для этого используется метод UploadClickConversions (для конверсий, связанных с кликами) Google Ads API.
API требует аутентификации (обычно OAuth 2.0) и формирования специфического запроса с данными о конверсии. Основные параметры, которые необходимо передать:
customer_id: Идентификатор вашего аккаунта Google Ads.
conversions: Массив объектов конверсий. Для каждой конверсии:
gclid: Сохраненное значение GCLID.
conversion_action: Идентификатор или ресурсное имя действия-конверсии в Google Ads (customers/{customer_id}/conversionActions/{conversion_action_id}).
conversion_date_time: Время совершения конверсии в формате YYYY-MM-DD HH:MM:SS[+-]HH:MM (например, 2023-10-27 10:30:00+03:00).
conversion_value (опционально): Ценность конверсии (число).
currency_code (опционально): Валюта ценности (например, ‘RUB’, ‘USD’).
order_id (опционально): Уникальный идентификатор транзакции.
Настройка параметров конверсии в Google Ads (ценность конверсии, валюта)
Перед отправкой данных убедитесь, что в вашем аккаунте Google Ads корректно настроены действия-конверсии, соответствующие вашим серверным событиям. Для каждого действия:
Укажите, будет ли ценность конверсии фиксированной или переменной. Для транзакций электронной коммерции выберите переменную ценность.
Установите валюту по умолчанию, если вы не планируете передавать ее с каждой конверсией (хотя передавать ее с каждой конверсией надежнее).
Определите окно конверсии (период после клика, в течение которого конверсия будет засчитана).
Укажите модель атрибуции (хотя для S2S загрузок часто используется атрибуция по последнему клику Google Ads).
Примеры кода для отправки данных о конверсиях (с использованием различных языков программирования)
Примеры используют концепцию клиента Google Ads API. Вам потребуется установить клиентскую библиотеку для вашего языка и настроить аутентификацию.
# Пример отправки конверсии на Python с использованием google-ads клиентской библиотеки
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
# Предполагается, что клиент настроен с учетными данными
# client = GoogleAdsClient.load_from_storage('google-ads.yaml')
# Или настройте его программно
# client = GoogleAdsClient.from_oauth2_info(..., refresh_token=...)
def upload_conversion(
client: GoogleAdsClient,
customer_id: str,
conversion_action_id: str,
gclid: str,
conversion_date_time: str,
conversion_value: float = None,
currency_code: str = None,
order_id: str = None
) -> None:
"""Загружает конверсию в Google Ads."""
conversion_upload_service = client.get_service("ConversionUploadService")
# Создаем объект конверсии
click_conversion = client.get_type("ClickConversion")
click_conversion.gclid = gclid
click_conversion.conversion_action = (
f"customers/{customer_id}/conversionActions/{conversion_action_id}"
)
click_conversion.conversion_date_time = conversion_date_time
# Добавляем опциональные поля, если они предоставлены
if conversion_value is not None:
click_conversion.conversion_value = conversion_value
if currency_code:
click_conversion.currency_code = currency_code
if order_id:
click_conversion.order_id = order_id
# Создаем запрос на загрузку
request = client.get_type("UploadClickConversionsRequest")
request.customer_id = customer_id
request.conversions.append(click_conversion)
request.partial_failure = True # Позволяет обработать успешные конверсии даже при наличии ошибок в других
try:
# Отправляем запрос в Google Ads API
response = conversion_upload_service.upload_click_conversions(request=request)
# Обрабатываем ответ
if response.results:
for result in response.results:
print(f"Загружена конверсия для GCLID '{result.gclid}'")
if response.partial_failure_error:
# Обрабатываем ошибки, если partial_failure = True
print("Обнаружены частичные ошибки:")
print(response.partial_failure_error.message)
except GoogleAdsException as ex:
print(f"Произошла ошибка API при загрузке конверсий: {ex}")
# Пример вызова функции:
# customer_id = "1234567890"
# conversion_action_id = "ABCDEFG"
# retrieved_gclid = get_gclid_for_current_user()
# event_time = get_current_time_formatted()
# conversion_value = get_order_total()
# currency = get_order_currency()
# transaction_id = get_order_id()
# if retrieved_gclid:
# upload_conversion(google_ads_client, customer_id, conversion_action_id,
# retrieved_gclid, event_time, conversion_value, currency, transaction_id)getConversionUploadServiceClient();
// Создаем объект конверсии
$clickConversion = new ClickConversion();
$clickConversion->setGclid($gclid);
$clickConversion->setConversionAction(
"customers/{$customerId}/conversionActions/{$conversionActionId}"
);
$clickConversion->setConversionDateTime($conversionDateTime);
// Добавляем опциональные поля, если они предоставлены
if ($conversionValue !== null) {
$clickConversion->setConversionValue($conversionValue);
}
if ($currencyCode !== null) {
$clickConversion->setCurrencyCode($currencyCode);
}
if ($orderId !== null) {
$clickConversion->setOrderId($orderId);
}
// Создаем запрос на загрузку
$request = new UploadClickConversionsRequest();
$request->setCustomerId($customerId);
$request->setConversions(\[$clickConversion\]);
$request->setPartialFailure(true); // Позволяет обработать успешные конверсии даже при наличии ошибок в других
try {
// Отправляем запрос в Google Ads API
/** @var UploadClickConversionsResponse $response */
$response = $conversionUploadServiceClient->uploadClickConversions($request);
// Обрабатываем ответ
if ($response->getResults()) {
foreach ($response->getResults() as $result) {
printf("Загружена конверсия для GCLID '%s'.%s", $result->getGclid(), PHP_EOL);
}
}
if ($response->hasPartialFailureError()) {
// Обрабатываем ошибки, если partial_failure = true
printf("Обнаружены частичные ошибки: %s%s", $response->getPartialFailureError()->getMessage(), PHP_EOL);
}
} catch (GoogleAdsException $googleAdsException) {
printf("Произошла ошибка API при загрузке конверсий: %s%s", $googleAdsException->getMessage(), PHP_EOL);
// Дополнительная обработка ошибок...
}
}
// Пример использования (предполагает, что $googleAdsClient инициализирован):
// $customer_id = '1234567890';
// $conversion_action_id = 'ABCDEFG';
// $retrieved_gclid = get_gclid_for_current_user(); // Ваша функция получения GCLID
// $event_time = (new \DateTime())->format('Y-m-d H:i:sP'); // Текущее время в нужном формате с часовым поясом
// $conversion_value = get_order_total(); // Ваша функция получения стоимости
// $currency = get_order_currency(); // Ваша функция получения валюты
// $transaction_id = get_order_id(); // Ваша функция получения ID транзакции
// if ($retrieved_gclid) {
// upload_conversion($googleAdsClient, $customer_id, $conversion_action_id,
// $retrieved_gclid, $event_time, $conversion_value, $currency, $transaction_id);
// }Реализация должна включать обработку возможных ошибок API и повторные попытки отправки в случае временных проблем с соединением.
Тестирование и отладка сервер-серверной интеграции
После настройки интеграции критически важно провести тщательное тестирование, чтобы убедиться, что данные передаются корректно и засчитываются в Google Ads.
Проверка получения данных о кликах (GCLID)
Начните с проверки того, что ваше серверное приложение успешно захватывает и сохраняет GCLID при переходе пользователя по объявлению. Вы можете использовать:
Логи сервера: Добавьте логирование значения GCLID при его получении.
Инструменты разработчика браузера: Проверьте, что GCLID присутствует в URL при переходе.
База данных/Хранилище: Убедитесь, что GCLID сохраняется и связывается с сессией или пользователем, как предполагалось.
Протестируйте различные сценарии: новый пользователь, вернувшийся пользователь, переход с разных устройств (если это возможно симулировать).
Верификация отправки данных о конверсиях в Google Ads
После срабатывания события конверсии на вашем сервере, проверьте логи вашего приложения или сервиса интеграции, чтобы убедиться, что запрос к Google Ads API был сформирован и отправлен без ошибок. Проверьте:
Статус ответа от API (должен быть успешным).
Формирование полезной нагрузки запроса (наличие GCLID, корректный ID действия-конверсии, время, ценность и т.д.).
Сообщение об ошибках в ответе API (если используется partial_failure).
Использование инструментов отладки Google Ads для выявления и устранения проблем
Google Ads предоставляет инструменты, которые помогают диагностировать проблемы с отслеживанием конверсий, в том числе S2S:
Отчеты по действиям-конверсиям: В разделе "Измерения и отчеты" -> "Конверсии" вы можете видеть сводные данные о засчитанных конверсиях. Обратите внимание на задержку в учете конверсий.
Диагностика конверсий: На странице конкретного действия-конверсии часто доступны диагностические сообщения, указывающие на возможные проблемы (например, низкий уровень совпадения GCLID).
Режим отладки Google Tag Assistant (для Server-Side GTM): Если вы используете Server-Side GTM, его режим отладки позволяет видеть входящие запросы на сервер и исходящие запросы к Google Ads API.
Помните, что может быть некоторая задержка (до нескольких часов) между отправкой конверсии через API и ее появлением в отчетах Google Ads.
Оптимизация и поддержка сервер-серверного отслеживания
Настройка S2S отслеживания – это не разовое действие. Требуется постоянный мониторинг и поддержка.
Регулярный мониторинг данных о конверсиях
Внедрите системы мониторинга, которые отслеживают:
Количество конверсий, отправленных вашим сервером в API.
Количество конверсий, засчитанных в Google Ads (сравнивая с данными вашего сервера и другими системами аналитики).
Частоту ошибок при отправке данных в API.
Резкие расхождения между данными на вашей стороне и в Google Ads могут сигнализировать о проблемах в интеграции.
Внесение изменений в интеграцию при изменении требований Google Ads
Google Ads API может обновляться, и могут появляться новые требования или рекомендации (например, связанные с расширенными конверсиями, согласием пользователя). Регулярно отслеживайте документацию Google Ads API и анонсы изменений. Будьте готовы оперативно вносить правки в вашу интеграцию.
Обработка ошибок и исключений в процессе отслеживания
Реализуйте надежные механизмы обработки ошибок:
Логирование всех ошибок, связанных с API (ошибки аутентификации, некорректные данные, таймауты).
Систему повторных попыток (retry logic) для временных сетевых ошибок или ошибок со стороны API.
Алерты, уведомляющие о критических проблемах, требующих немедленного вмешательства (например, постоянные ошибки авторизации или массовый отказ в приеме конверсий).
Механизм "мертвых писем" (dead-letter queue) для сообщений о конверсиях, которые не удалось отправить после нескольких попыток, для последующего анализа или ручной обработки.
Соответствие требованиям конфиденциальности данных и GDPR
При реализации S2S отслеживания крайне важно соблюдать законодательство о защите данных (например, GDPR в Европе, CCPA в Калифорнии) и политики Google в отношении пользовательских данных. Убедитесь, что:
Вы получаете необходимое согласие пользователя на сбор и обработку данных, включая их использование для персонализированной рекламы (если применимо).
Передаваемые в Google Ads данные соответствуют политикам Google и не содержат запрещенную личную информацию.
Ваша система обработки GCLID и данных о конверсиях соответствует принципам минимизации данных и ограничения хранения.
Внедрение S2S отслеживания для Google Ads – это сложный, но необходимый шаг для поддержания точности данных о конверсиях в условиях меняющегося ландшафта конфиденциальности. Правильная реализация обеспечивает более надежную основу для оптимизации ваших рекламных кампаний.