Назад в блог

Блог

Google Ads и серверный тегинг: как каждая конверсия находит свой клик

Опубликовано · 5 мин чтения

Настройка отслеживания конверсий в Google Ads заканчивается двумя просьбами: связать ваш существующий тег Google и вставить фрагмент события на страницу покупки. При серверном тегинге первое — в порядке, а второе — ошибка. Эта статья прослеживает один клик по объявлению от целевой страницы до конверсии в Google Ads: что проходит через ваш сервер тегинга, что уходит прямо в Google и о чём по пути заботится SignalHost. Мы сами используем Google Ads для signalhost.io, так что всё описанное здесь измерено на нашем собственном сайте.

Что меняется, когда вы связываете тег Google

Когда вы создаёте действие-конверсию, Google Ads ищет на вашем сайте тег Google и предлагает его использовать. Если согласиться, ваш тег Google — тот, что с идентификатором измерения G-, — получит ваш аккаунт Ads (AW-…) как второе место назначения. Google предупреждает, что это обновит настройки тега. Изменение происходит в настройках тега на стороне Google, а не в вашем контейнере Tag Manager, но с этого момента каждая страница, загружающая тег, общается и с Google Ads.

Каждый просмотр страницы теперь отправляет несколько запросов из браузера посетителя прямо в Google — на googleads.g.doubleclick.net и www.google.com — для ваших списков ремаркетинга и собственных измерений Google. Они не проходят через ваш сервер тегинга, и это сделано намеренно: при пересылке через сервер все они приходили бы с адреса сервера вместо адреса посетителя, а это не то, что стоит показывать рекламной платформе. Данные GA4 по-прежнему идут через ваш собственный домен.

Впервые сталкиваетесь с серверным тегингом? Как настроить серверный Google Tag Manager: пошаговое руководство.

Не ставьте фрагмент конверсии Google на свою страницу

Затем Google Ads предлагает фрагмент события для страницы покупки. Он отправляет конверсию из браузера прямо в Google Ads, в обход вашего сервера тегинга, — со значением 1.0 и пустым идентификатором транзакции, пока их никто не заполнит.

// Google's event snippet: not for your page.
// Paste it into the Conversion ID box in SignalHost instead.
gtag('event', 'conversion', {
  'send_to': 'AW-123456789/AbC-D_efGh12_34',
  'value': 1.0,
  'currency': 'EUR',
  'transaction_id': ''
});

С SignalHost конверсию отправляет ваш серверный контейнер. Откройте контейнер, разверните «Назначения конверсий» и введите идентификатор и ярлык конверсии в разделе Google Ads. С этого момента каждая покупка, о которой ваш сайт уже сообщает, — событие GA4 purchase — уходит в Google Ads с сервера, со значением, валютой и идентификатором транзакции. В вашем Tag Manager ничего менять не нужно.

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

Выписывать идентификатор и ярлык из фрагмента вручную не нужно. Вставьте весь фрагмент или только его значение send_to в поле «Идентификатор конверсии» — заполнятся оба поля. Идентификатор подходит в обоих вариантах: AW-123456789 или 123456789.

Как клик доживает до покупки

Конверсия полезна Google Ads, только если её можно связать с кликом, который к ней привёл. Связующее звено — идентификатор клика: Google добавляет его к адресу целевой страницы как gclid=…, и при следующем клике посетителя он исчезает из адреса.

Для этого в каждом контейнере SignalHost есть серверный Conversion Linker. Он считывает идентификатор клика из хита целевой страницы и сохраняет его в собственном файле cookie FPGCLAW на вашем домене. Когда приходит покупка — через три страницы или через три дня, — тег Google Ads в вашем серверном контейнере читает этот cookie и отправляет конверсию вместе с кликом.

Должны выполняться два условия. Посетитель должен разрешить рекламу в вашем баннере cookies: без этого согласия линкер ничего не сохраняет, а тег Ads ничего не отправляет. И браузер должен принять cookie, а это зависит от адреса, на котором работает ваш сервер тегинга.

Почему Google Ads нужен ваш собственный домен

Cookie клика устанавливает ваш сервер тегинга, и браузеры принимают его, только если этот сервер относится к вашему собственному сайту — например, поддомен metrics.vashsait.ru. Адрес, с которым начинает каждый контейнер, — поддомен signalhost.io, то есть для браузера чужой сайт, и там cookie отклоняется.

Эта разница нигде не видна. Конверсии по-прежнему доходят до Google Ads, но без своего клика, поэтому Google Ads не может отнести их ни к одной кампании — и это выглядит точь-в-точь как неработающая реклама. Подключите собственный домен, прежде чем судить о кампании по цифрам: нужна одна запись CNAME, а сертификат выпускается автоматически. Пока домен не активен, настройки Google Ads вашего контейнера сообщают об этом. Как направить свой домен на сервер тегинга.

Когда покупка случается через несколько дней

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

Для Google Ads такой покупке нужны ещё две вещи из чекаута, пока посетитель ещё на месте. Сохраните рекламные cookies, которые несёт запрос чекаута, — FPGCLAW, FPAU и cookies _gcl_ от Google, которые появляются только после согласия на рекламу, — и отправьте их обратно как cookies вместе с покупкой, отметив согласие на рекламу как полученное. Без них Google Ads не сможет ни принять конверсию, ни засчитать её.

// At checkout: keep the advertising cookies with the order.
// They only exist once the visitor allowed advertising.
const AD_COOKIES = ['FPGCLAW', 'FPAU', '_gcl_aw', '_gcl_au'];
order.adCookies = pick(req.cookies, AD_COOKIES);

// In the payment webhook: send them back with the purchase.
// gcs=G111 in the params: advertising and analytics consent granted.
await fetch(`https://metrics.yoursite.com/g/collect?${params}`, {
  method: 'POST',
  headers: { cookie: serialize(order.adCookies) },
});

Именно так signalhost.io сообщает о своих подписках: вебхук Stripe отправляет покупку, когда оплачен первый счёт, и несёт с собой клик по объявлению из чекаута.

О чём заботится SignalHost

Вы вводите два значения. Всё остальное есть в каждом контейнере:

  • Conversion Linker и тег конверсий Google Ads. После ввода идентификатора и ярлыка они включаются со следующего запроса.
  • Тег Ads срабатывает на покупки и больше ни на что. Тег, слушающий все события, записывал бы каждый просмотр страницы как продажу.
  • Согласие на рекламу соблюдается на сервере: посетитель, отказавшийся от рекламы, не создаёт ни одной конверсии в Google Ads.
  • Каждый cookie, который устанавливает ваш сервер тегинга, доходит до браузера: идентификатор клика, собственный идентификатор посетителя и рекламный идентификатор пользователя.
  • Идентификатор конверсии отправляется в том виде, какой ожидает тег, как бы вы его ни ввели.
  • Страница вашего контейнера сообщает, когда Google Ads не хватает вашего собственного домена.

signalhost.io работает ровно на такой настройке и с нашим собственным аккаунтом Google Ads. Проверка, на которую мы полагаемся, — тестовый визит с идентификатором клика: в конце cookie клика должен оказаться в браузере.

Как проверить свою настройку

  • Откройте свой сайт с ?gclid=test в конце адреса и разрешите рекламу в баннере cookies. Среди cookies браузера для вашего домена теперь должен появиться FPGCLAW.
  • Запустите сеанс предпросмотра в «Инструментах разработчика» контейнера, нажмите «Предварительный просмотр» у серверного контейнера в Tag Manager и сделайте тестовую покупку. Тег конверсий Google Ads должен сработать — со значением, валютой и идентификатором транзакции.
  • Убедитесь, что фрагмента события Google нет на странице покупки и что ни один тег конверсий Google Ads в вашем веб-контейнере не срабатывает на ту же покупку.
  • Дайте Google Ads сутки: столько может пройти, прежде чем новое действие-конверсия отобразится как активное.

Если конверсии приходят, но никогда не засчитываются ни одной кампании, клик теряется по дороге: сначала проверьте согласие и собственный домен.

Перестаньте терять данные из-за блокировщиков

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