Отслеживание конверсий является краеугольным камнем успешных кампаний в Google Рекламе. Оно позволяет связать действия пользователей после клика по объявлению с самими кликами, давая возможность измерять рентабельность инвестиций и оптимизировать кампании на основе данных о реальных бизнес-результатах.
Традиционный подход к отслеживанию конверсий основан на работе клиентского кода (пикселя Google Рекламы или тега Google Analytics) в браузере пользователя. Однако этот метод сталкивается с растущими ограничениями, связанными с блокировщиками рекламы, ограничениями браузеров на использование файлов cookie и общей тенденцией к повышению приватности пользователей. Server-Side Tracking (SST), или отслеживание между серверами, предлагает альтернативу, при которой сбор и отправка данных о событиях происходит не непосредственно из браузера пользователя в рекламные системы, а через ваш собственный сервер.
Объяснение принципа работы отслеживания конверсий между серверами
При использовании SST, когда на сайте пользователя происходит конверсионное событие (например, покупка, заполнение формы), информация об этом событии сначала отправляется с браузера пользователя на ваш собственный сервер. Это может быть реализовано с помощью клиентского тега (например, в обычном GTM Web-контейнере или напрямую из кода сайта), который отправляет данные на определенный URL вашего сервера или серверного контейнера GTM.
Ваш сервер или серверный контейнер GTM принимает эти данные. Затем, на стороне сервера происходит их обработка и валидация. После этого обработанные данные о конверсии отправляются с вашего сервера напрямую в Google Рекламу через соответствующий API (например, Google Ads API Conversion Upload Service или Google Analytics Measurement Protocol, который может быть использован для отправки данных в связанный ресурс Google Analytics 4, который затем экспортирует конверсии в Google Рекламу). Таким образом, передача критически важных данных о конверсиях обходит потенциальные ограничения на стороне браузера пользователя.
Преимущества использования Server-Side Tracking перед традиционным отслеживанием через пиксель
Переход на SST предоставляет ряд существенных преимуществ для профессионалов в области рекламы и аналитики:
Повышенная точность данных: SST менее подвержено влиянию блокировщиков рекламы и ограничений браузеров на файлы cookie, что ведет к более полному и точному сбору данных о конверсиях. Это особенно важно для точной оценки эффективности кампаний и работы алгоритмов машинного обучения Google Рекламы.
Улучшенная производительность сайта: Клиентская часть сайта загружается быстрее, так как меньше скриптов выполняется непосредственно в браузере пользователя. Обработка и отправка данных переносится на сервер.
Больший контроль над данными: Вы полностью контролируете данные, которые собираются, обрабатываются и отправляются в рекламные системы. Это позволяет более гибко управлять чувствительной информацией и соблюдать политики конфиденциальности (например, GDPR, CCPA).
Обогащение данных: На сервере вы можете объединять данные из разных источников (например, данные из CRM) с данными о веб-событиях до их отправки в Google Рекламу, что позволяет передавать более полную информацию о ценности конверсий или других важных параметрах.
Когда следует использовать отслеживание конверсий между серверами
Применение SST целесообразно и рекомендовано в следующих сценариях:
Когда точность отслеживания критически важна, и вы сталкиваетесь с потерями данных из-за блокировщиков или ограничений браузеров (например, ITP в Safari).
Для бизнесов с высоким объемом конверсий, где даже небольшой процент потери данных может существенно исказить картину эффективности.
При необходимости передачи конфиденциальных данных, которые нежелательно обрабатывать напрямую в браузере пользователя.
Если требуется объединять данные из онлайн- и офлайн-источников или других сторонних систем.
Для повышения производительности загрузки клиентской части вашего веб-ресурса.
Подготовка к настройке отслеживания конверсий между серверами
Настройка SST – это более сложный процесс по сравнению с установкой стандартного клиентского тега. Он требует тщательного планирования и наличия определенных технических ресурсов.
Необходимые инструменты и ресурсы (Google Tag Manager, сервер, API)
Для успешной настройки SST вам потребуется:
Google Tag Manager (GTM): Основной инструмент для управления серверными тегами. Вам потребуется создать серверный контейнер в GTM.
Серверная среда: Среда, где будет размещен ваш серверный контейнер GTM. Это может быть управляемый сервис (например, Google Cloud Run, Google App Engine, AWS ECS, AWS Lambda) или ваш собственный сервер/виртуальная машина. Этот сервер будет обрабатывать входящие запросы и выполнять логику GTM.
Доступ к Google Ads API: Для отправки данных о конверсиях напрямую в Google Рекламу с сервера вам потребуется настроить доступ к API Google Ads Conversion Upload Service. Это включает создание проекта в Google Cloud Platform, включение Google Ads API и настройку учетных данных (например, OAuth 2.0 или сервисный аккаунт).
Технические специалисты: Для настройки серверной среды, интеграции с GTM и реализации логики работы с API потребуется участие backend-разработчиков или специалистов по DevOps.
Планирование структуры данных и параметров конверсий
До начала настройки определите, какие именно данные о конверсиях и связанных с ними параметрах вам необходимо отслеживать и передавать. Это могут быть:
Идентификатор транзакции (transaction_id)
Ценность конверсии (value)
Валюта (currency)
Время события (event_time)
Параметры пользователя для Enhanced Conversions (хешированный email, телефон, адрес)
Информация о товарах (для отслеживания электронной торговли)
Другие кастомные параметры, важные для вашего бизнеса.
Четкое понимание структуры данных поможет правильно настроить переменные в GTM и реализовать обработку на сервере.
Определение событий, которые необходимо отслеживать
Составьте список всех ключевых конверсионных событий, которые происходят на вашем сайте или в приложении и имеют значение для оценки эффективности рекламных кампаний. Для каждого события определите:
Название события (например, purchase, lead, sign_up)
Условия его возникновения (например, "загрузка страницы ‘Спасибо за заказ’", "клик по кнопке ‘Отправить заявку’")
Какие параметры должны быть связаны с этим событием (например, для purchase – transaction_id, value, currency, items).
Этот список станет основой для настройки триггеров и тегов как в клиентском (если используется для отправки данных на сервер), так и в серверном контейнере GTM.
Настройка отслеживания конверсий между серверами через Google Tag Manager (GTM)
Google Tag Manager предлагает серверный контейнер как централизованный инструмент для управления потоками данных в SST.
Создание и настройка контейнера сервера в Google Tag Manager
В интерфейсе GTM создайте новый контейнер, выбрав тип "Сервер". GTM предложит два варианта настройки сервера: автоматическая подготовка в Google Cloud Platform (рекомендуется) или ручная настройка на вашем собственном сервере. Выберите подходящий вариант и следуйте инструкциям GTM для развертывания серверной среды.
После развертывания у вас появится URL вашего серверного контейнера GTM (например, analytics.yourdomain.com). Именно на этот URL будут отправляться данные с клиентской стороны.
Настройка тегов, триггеров и переменных для отправки данных о конверсиях на сервер
В клиентском (Web) контейнере GTM (если вы используете его для сбора данных) настройте тег, который будет отправлять данные о событиях на URL вашего серверного контейнера. Часто для этого используется тег Google Analytics 4 Configuration/Event, направленный на ваш серверный URL, или специальный кастомный тег.
В серверном контейнере GTM:
Клиенты (Clients): Настройте "Клиент" для приема входящих запросов. Если вы отправляете данные из GA4 тега на клиенте, используйте Google Analytics 4 Client. Он сможет корректно парсить входящие запросы формата Measurement Protocol.
Переменные (Variables): Создайте переменные для извлечения нужных данных из входящих запросов, принятых клиентом. Например, переменные для извлечения event_name, transaction_id, value, currency из данных, полученных от клиента GA4.
// Пример кастомной переменной в GTM Server Container
// Извлечение transaction_id из входящего запроса GA4
function getData(request) {
// request представляет входящий запрос, обработанный Клиентом
const eventData = request.getEventData(); // Получаем данные события из запроса
// Проверяем наличие данных и нужного параметра
if (eventData && eventData.ecommerce && eventData.ecommerce.transaction_id) {
return eventData.ecommerce.transaction_id; // Возвращаем идентификатор транзакции
}
return undefined; // Если данных нет или они некорректны
}Триггеры (Triggers): Создайте триггеры, которые будут срабатывать при получении определенных событий от клиентов. Например, триггер типа "Custom" или "GA4 Event" для события с именем purchase.
Теги (Tags): Настройте тег для отправки данных в Google Рекламу. Используйте стандартный тег "Google Ads Conversion Tracking" или "Google Ads Remarketing" (для аудиторий). В этом теге вы будете использовать переменные, созданные на предыдущем шаге, для динамической подстановки Conversion ID, Conversion Label, Value, Transaction ID и Currency. Для Enhanced Conversions используйте соответствующие поля в теге Google Ads.
// Абстрактный пример логики тега Google Ads Conversion в Server Container
// (реализация внутри GTM происходит через UI или Custom Tag Templates)
function sendConversionToGoogleAds(eventData, googleAdsConfig) {
// eventData: Обработанные данные о событии из переменных
// googleAdsConfig: Данные конфигурации (Conversion ID, Label и т.п.)
// Формирование payload для Google Ads API Conversion Upload
const conversionPayload = {
'conversion_action_resource_name': googleAdsConfig.conversionActionResourceName, // RENAME в формате 'customers/CID/conversionActions/CAID'
'conversion_date_time': eventData.event_time, // Время события в формате ISO 8601
'conversion_value': eventData.value, // Ценность конверсии
'currency_code': eventData.currency, // Код валюты (ISO 4217)
'order_id': eventData.transaction_id, // Идентификатор заказа
// Дополнительные поля для Enhanced Conversions
'user_identifiers': [
// Хешированный Email
{ 'hashed_email': eventData.hashed_email }
// Другие идентификаторы...
]
};
// Здесь происходит вызов Google Ads API
// Пример: GoogleAdsAPI.uploadConversion(conversionPayload);
// В GTM Server Container это абстрагировано стандартным тегом
console.log('Sending conversion data to Google Ads API:', conversionPayload);
}Интеграция GTM с вашим сервером
Если вы выбрали ручную настройку серверной среды, вам потребуется развернуть код серверного контейнера GTM на вашем сервере. GTM предоставляет код для различных сред (Node.js, Java и др.). Этот код будет принимать входящие HTTP-запросы, обрабатывать их с использованием настроенных вами Клиентов, Переменных, Триггеров и Тегов, и отправлять исходящие запросы (например, в Google Рекламу).
Убедитесь, что ваш сервер доступен из интернета по выбранному вами поддомену (например, analytics.yourdomain.com) и настройте DNS A-запись для этого поддомена, указывающую на IP-адрес вашего сервера.
Настройка сервера для приема и отправки данных о конверсиях в Google Рекламу
Если вы не используете управляемое развертывание GTM (например, в GCP App Engine), а настраиваете собственный сервер, или если вам требуется более сложная логика обработки данных до передачи в GTM или напрямую в Google Ads API, потребуется дополнительная разработка.
Выбор платформы для серверной части (например, Google Cloud Functions, AWS Lambda, собственный сервер)
Выбор платформы зависит от ваших текущих инфраструктурных решений, ожидаемого трафика и требуемой гибкости:
Функции как сервис (FaaS): Google Cloud Functions, AWS Lambda. Идеально подходят для обработки отдельных событий без необходимости управления серверами. Масштабируются автоматически. Хороший выбор для приема данных от клиентского GTM.
Контейнеризированные приложения: Google Cloud Run, AWS Fargate, Docker на VM. Предоставляют больше контроля над средой, подходят для запуска серверного контейнера GTM или кастомных приложений. Легче масштабируются.
Собственные серверы/VM: Требуют полного управления, но дают максимальный контроль. Могут быть оправданы при наличии существующей инфраструктуры или специфических требований.
Реализация логики обработки данных и формирования запросов к API Google Рекламы
Ваш сервер должен быть готов принимать входящие запросы (обычно HTTP POST) от клиентской части (сайта или клиентского GTM). Эти запросы будут содержать информацию о произошедшем событии и связанные с ним параметры.
На стороне сервера необходимо реализовать логику:
Парсинг входящего запроса и извлечение данных о событии (имя, параметры, данные пользователя и т.п.).
Валидация данных.
Обогащение данных (при необходимости), например, добавление информации из CRM.
Формирование запроса к Google Ads API (Conversion Upload Service) в соответствии с его спецификацией.
Авторизация запроса с использованием учетных данных API.
Отправка запроса к Google Ads API.
Обработка ответа от API и логирование результатов (успех/ошибка).
Пример формирования запроса к API Google Ads (псевдокод на Python):
# Псевдокод для отправки конверсии через Google Ads API Conversion Upload
class ConversionData:
"""Структура данных для конверсии"""
def __init__(self,
customer_id: str,
conversion_action_id: str,
event_time: str,
value: float,
currency: str,
order_id: str = None,
email: str = None):
self.customer_id = customer_id
self.conversion_action_id = conversion_action_id
self.event_time = event_time # Время в формате 'YYYY-MM-DD HH:MM:SS+hh:mm'
self.value = value
self.currency = currency
self.order_id = order_id
self.email = email # Email для Enhanced Conversions
def to_google_ads_format(self) -> dict:
"""Преобразует данные в формат API Google Ads"""
payload = {
'conversion_action': f'customers/{self.customer_id}/conversionActions/{self.conversion_action_id}',
'conversion_date_time': self.event_time,
'conversion_value': self.value,
'currency_code': self.currency,
'order_id': self.order_id,
}
if self.email:
import hashlib
# Хеширование email с использованием SHA256
hashed_email = hashlib.sha256(self.email.lower().strip().encode('utf-8')).hexdigest()
payload['user_identifiers'] = [{'hashed_email': hashed_email}]
return payload
# --- Основная логика обработки на сервере ---
def process_web_event(event_payload: dict):
"""Пример обработки входящего веб-события"""
# Извлечение данных из входящего payload (например, от клиентского GTM)
event_name = event_payload.get('event_name')
if event_name == 'purchase':
# Извлечение параметров покупки
transaction_id = event_payload.get('ecommerce', {}).get('transaction_id')
value = event_payload.get('ecommerce', {}).get('value')
currency = event_payload.get('ecommerce', {}).get('currency')
event_time = event_payload.get('event_time') # Время события
user_email = event_payload.get('user_data', {}).get('email') # Для Enhanced
# Проверка обязательных данных
if not all([transaction_id, value, currency, event_time]):
print('Ошибка: Не хватает данных для конверсии покупки')
return
# Конфигурация Google Ads (получается из безопасного хранилища)
google_ads_config = {
'customer_id': 'YOUR_CUSTOMER_ID',
'conversion_action_id': 'YOUR_CONVERSION_ACTION_ID_PURCHASE'
}
# Создание объекта данных конверсии
conversion = ConversionData(
customer_id=google_ads_config['customer_id'],
conversion_action_id=google_ads_config['conversion_action_id'],
event_time=event_time,
value=value,
currency=currency,
order_id=transaction_id,
email=user_email
)
# Формирование и отправка запроса к Google Ads API
google_ads_payload = conversion.to_google_ads_format()
send_to_google_ads_api(google_ads_payload) # Функция отправки через API
elif event_name == 'lead':
# Логика для другого типа конверсии
pass
# Другие типы событий...
def send_to_google_ads_api(payload: dict):
"""Функция отправки запроса к Google Ads API (заглушка)"""
print('Отправка данных в Google Ads API:', payload)
# Здесь происходит реальный вызов API с использованием клиентских библиотек и авторизации
pass
# Пример использования:
# incoming_data = {'event_name': 'purchase', 'ecommerce': {'transaction_id': 'TXN123', 'value': 100.0, 'currency': 'RUB'}, 'event_time': '2023-10-27 10:00:00+03:00', 'user_data': {'email': 'test@example.com'}}
# process_web_event(incoming_data)Этот псевдокод демонстрирует процесс приема данных, их структурирования и подготовки для отправки в Google Ads API, включая пример хеширования email для Enhanced Conversions. Реальная функция send_to_google_ads_api использовала бы клиентские библиотеки Google Ads API и механизмы авторизации (OAuth2).
Обеспечение безопасности передачи данных (шифрование, аутентификация)
Безопасность данных является приоритетом при SST:
Шифрование: Убедитесь, что передача данных между браузером пользователя и вашим сервером, а также между вашим сервером и Google Ads API происходит по защищенному протоколу (HTTPS/SSL).
Аутентификация: Реализуйте механизмы аутентификации для входящих запросов на ваш сервер, чтобы принимать данные только из доверенных источников (например, из вашего клиентского GTM или с вашего сайта). При отправке данных в Google Ads API используйте рекомендуемые методы авторизации (OAuth 2.0) и храните учетные данные API в безопасном месте.
Валидация данных: Всегда валидируйте входящие данные на сервере, чтобы предотвратить обработку некорректной или вредоносной информации.
Доступ к серверу: Ограничьте доступ к вашему серверу только необходимым пользователям и сервисам.
Проверка и отладка отслеживания конверсий между серверами
После настройки SST необходима тщательная проверка, чтобы убедиться в корректности сбора и передачи данных.
Использование инструментов отладки Google Tag Manager для проверки передачи данных
Серверный контейнер GTM имеет собственный режим отладки, похожий на отладку веб-контейнера. Используйте его для:
Проверки получения входящих запросов от клиента (вкладка "Client").
Анализа данных, которые Клиент извлекает из запроса.
Проверки срабатывания Триггеров на основе этих данных.
Анализа данных, которые передаются в Теги (вкладка "Tag"). Вы увидите, какие значения получают переменные и с какими параметрами Тег готовится выполнить действие (например, отправить данные в Google Ads API).
Режим отладки серверного контейнера GTM — первый и самый важный шаг для локализации проблем с передачей данных.
Проверка корректности данных о конверсиях в интерфейсе Google Рекламы
После отправки тестовых конверсий через настроенный SST, проверьте их появление в интерфейсе Google Рекламы:
Перейдите в раздел "Цели" -> "Конверсии" -> "Действия-конверсии".
Найдите действие-конверсию, для которого вы настроили SST (тип источника должен быть API).
Посмотрите статистику за последние часы или выберите соответствующий диапазон дат. Должны отобразиться учтенные конверсии. Учитывайте возможную задержку в отображении данных (до нескольких часов).
Для более детальной проверки можно использовать отчеты по сегментам (например, по Transaction ID) или анализировать столбец "Все конверсии" в отчетах по кампаниям.
Устранение распространенных ошибок и проблем при настройке
При настройке SST могут возникать различные сложности. Некоторые распространенные проблемы и пути их решения:
Данные не приходят на серверный URL GTM: Проверьте DNS-записи вашего поддомена, настройки фаервола на сервере, корректность URL в клиентском теге. Убедитесь, что серверная среда запущена и доступна.
Серверный контейнер GTM не обрабатывает входящие запросы: Проверьте, правильно ли настроен Клиент в серверном контейнере для типа принимаемых данных (например, GA4 Client для данных от GA4 тега). Используйте режим отладки GTM, чтобы увидеть, принимает ли контейнер запрос и какой Клиент его обрабатывает.
Триггер в серверном контейнере не срабатывает: Убедитесь, что условия триггера точно соответствуют данным, извлекаемым переменными из входящего запроса (например, имя события, значение параметра).
Тег Google Ads не срабатывает или срабатывает некорректно: Проверьте настройки тега в серверном GTM. Убедитесь, что используются правильные переменные для подстановки Conversion ID, Label, Value, Transaction ID. Проверьте консоль режима отладки на наличие ошибок, связанных с тегом.
Конверсии не появляются в Google Рекламе после отправки с сервера: Проверьте логи на вашем сервере или в среде GTM (если ручная настройка) на предмет ошибок при вызове Google Ads API. Убедитесь, что используются правильные учетные данные API и Conversion Action Resource Name. Проверьте, что в Google Рекламе создано соответствующее действие-конверсия с типом "API" и что вы используете правильный ID и Label.
Некорректные данные в Google Рекламе (например, нулевая ценность): Используйте режим отладки серверного GTM, чтобы убедиться, что переменные корректно извлекают ценность, валюту и другие параметры из входящих данных и передают их в тег Google Ads.