Перейти до контенту

Серверний GTM для Google Ads — діагностичний плейбук

playbook google ads оновлено 2026.05.20 9 хв читання

Серверний теггінг (server-side) перестав бути «опцією для просунутих» — у 2025-26 це базовий вимірювальний шар для будь-якого акаунта Google Ads, якому важлива якість сигналу Smart Bidding. Після часткового розвороту Chrome щодо third-party cookies, посилення EEA Consent Mode v2 та зростання тиску ITP/ATT питання вже не «чи переходити на серверний», а «чому наші конверсії досі фаяться на клієнті».

Що насправді означає «серверний GTM для Google Ads»

У серверній архітектурі браузер надсилає один перший-сторонній запит на теггінг-сервер (ваш піддомен, напр. sgtm.example.com) замість десятків сторонніх пікселів. На цьому сервері крутиться контейнер Tag Manager, який парсить вхідну подію, збагачує її (user_data, стан консенту, пошук GCLID/GBRAID/WBRAID) і пересилає чистий payload до конверсійного ендпойнта Google Ads через server-to-server HTTP (Google Tag Manager Help — Server-side tagging overview, 2025).

Google tag (gtag.js) у браузері НЕ зникає — він діє як клієнт, що відправляє потік подій або на стандартний ендпойнт збору Google, або, коли налаштовано transport_url + first_party_collection: true, у ваш серверний контейнер (Google Tag Manager Help — Configure the Google tag for server-side, 2025). Лише серверний хоп спілкується з Google Ads.

Чому це важливо саме для Google Ads:

  • Стійкі ідентифікатори. GCLID/GBRAID/WBRAID можна захопити на лендингу, зберегти у перший-сторонній cookie, виставлений серверним контейнером (HttpOnly, 1P, максимум 400 днів), і програвати на кожній конверсії — переживаючи 7-денний ліміт ITP на JS-cookie.
  • Enhanced Conversions у режимі API. Серверний контейнер може хешувати email/phone/name/address на сервері та POST-ити безпосередньо у Google Ads, повністю прибираючи PII з браузера (Google Ads Help — Enhanced Conversions implementation options, 2025).
  • Нормалізація Consent Mode v2. Стан консенту застосовується на сервері, а не у кожному пікселі; редакція (ad_storage=denied) централізована.
  • Регіональна стійкість. Хостинг сервера в EEA задовольняє вимоги резидентності даних для частини клієнтів без переписування тегів.

Індустрійний контекст: референсна архітектура Simo Ahava та керований хостинг Stape.io де-факто стали доставочними засобами sGTM в агентських воркфлоу (Simo Ahava — Server-side tagging in Google Tag Manager, 2024-11; Stape.io — Google Ads server-side tracking setup, 2025).

Топ причин аудитних знахідок

Ранжовано за частотою появи в аудитах Google Ads, де ми піднімаємо прапорець якості вимірювання.

  1. Серверного контейнера немає взагалі. Конверсії на 100% фаяться на клієнті через gtag.js → вразливі до ITP/ATT-втрат, відмов Consent Mode, ad blockers — за звітами практиків спостерігаються нетривіальні двозначні втрати конверсій на ринках EEA та DACH (частка ad-blocker суттєво варіюється за гео та пристроєм).
  2. sGTM є, але конверсії Google Ads досі на клієнті. Команда першою мігрувала GA4 («найбільший піксель») і не перенесла тег конверсії Google Ads. Smart Bidding продовжує вчитися лише на клієнтському сигналі.
  3. Подвійне фаярення без дедуплікації. І клієнтський, і серверний тег конверсії Google Ads спрацьовують на одну подію без спільного transaction_id → Google Ads не може дедуплікувати → конверсії можуть суттєво роздуватися, коли серверний стек не має dedup-логіки на рівні Ads-пікселя + GA4 server tags + measurement protocol пінгів.
  4. Enhanced Conversions досі у JS-режимі після розгортання sGTM. Хешування відбувається у браузері, а не на сервері — це нівелює половину сенсу sGTM.
  5. Consent Mode не пробросено у серверний контейнер. Сервер пересилає хіти незалежно від стану ad_storage → ризик порушення політик у EEA.
  6. Серверний контейнер хоститься на дефолтному домені *.run.app. Браузери трактують його як сторонній → втрачається довговічність перших-сторонніх cookie.
  7. Немає шару capture-and-replay для GCLID/GBRAID/WBRAID. Навіть із sGTM, якщо click-IDs з лендингу не зберігаються у server-set cookie, пізні конверсії (>7 днів) втрачають атрибуцію.

Діагностичний чекліст

Йдіть згори вниз. Кожен рядок незалежно тестується на одній тестовій конверсії.

#ПеревіркаДе / якОчікуваний сигнал
1Чи існує серверний контейнер?GTM → перемикач контейнерів → шукати тип ServerОдин серверний контейнер на бренд/регіон
2gtag transport_url вказує на перший-сторонній серверПерегляд сирця сторінки / вкладка Network → пошук transport_urlЗначення = https://sgtm.example.com (ваш перший-сторонній піддомен), не дефолт Google
3Серверний контейнер має тег Google Ads Conversion TrackingСерверний контейнер → Tags≥1 тег «Google Ads Conversion Tracking» (server template)
4Клієнтський тег конверсії Google Ads досі фаяться паралельноDevTools браузера → Network → фільтр googleadservices або doubleclick на конверсійній сторінціЯкщо фаяться і клієнт, і сервер, а dedup ID немає → знахідка
5transaction_id присутній і однаковий на обох хітахПанель Network → payload конверсійного запитуОднаковий непрозорий ID з обох боків; відсутність = дедуплікація зламана
6Режим Enhanced ConversionsGoogle AdsGoalsSettings → Enhanced ConversionsMethod = «Google tag» з sGTM або «Google API» — НЕ сирий JS
7Прапорці Consent Mode пробросено на серверСерверний контейнер → Preview → тригернути подію в браузері → інспектувати дані подіїconsent.ad_storage присутній у вхідному запиті
8Домен теггінг-сервера є першим-стороннімDNS-lookup ендпойнта sGTMCNAME під вашим apex-доменом, не *.run.app / *.stape.io

Шляхи виправлення

Порядок важливий — дедуплікація МАЄ приземлитися ДО перемикання, інакше ви будете подвійно рахувати весь період міграції.

  1. Підняти теггінг-сервер. Два життєздатні маршрути:

    • Керований через Stape.io — найшвидше розгортання, керована CMP-сертифікація, dedup-утиліти; добре підходить для акаунтів середнього ринку, які не хочуть self-host (Stape.io — Google Ads server-side tracking setup, 2025).
    • Self-host на Google Cloud Run через офіційний «1-click» деплой з адмінки GTM — регіонально co-located, повністю під вашим контролем, ~$40-120/міс залежно від трафіку (Google Tag Manager Help — Set up and install tagging server, 2025).

    У будь-якому випадку — направте CNAME (sgtm.example.com) на ендпойнт сервера, щоб браузер бачив перший-сторонній origin.

  2. Мігрувати конверсії Google Ads у серверний контейнер. У серверному контейнері встановіть офіційний шаблон тегу «Google Ads Conversion Tracking», прив'яжіть до Conversion ID + Conversion Label, фаярте на тому ж тригері, що раніше фаяв клієнтський тег. Клієнтський тег поки що залиште увімкненим — дедуплікацію зробите у кроці 3, перш ніж його прибрати.

  3. Додати детермінований transaction_id для дедуплікації. Згенеруйте стабільний ID на момент конверсії (order ID для e-commerce, lead UUID для B2B). Передавайте його В ОБИДВА теги — клієнтський і серверний — щоб Google Ads міг дедуплікувати. Перевірте, тригернувши одну тестову конверсію і впевнившись, що Google Ads показує одну, а не дві, у діагностичному в'ю конверсій.

    // клієнтська конверсія gtag (перехідний період)
    gtag('event', 'conversion', {
      send_to: 'AW-CONV_ID/LABEL',
      transaction_id: '{{ORDER_ID}}',  // <-- dedup-ключ
      value: {{order_value}},
      currency: 'USD'
    });
    

    На серверному боці той самий transaction_id пробросується у payload запиту. Коли ви підтвердите 14 днів чистої дедуплікації — вимкніть клієнтський тег конверсії.

  4. Перевести Enhanced Conversions у режим API (Google Ads Help — Enhanced Conversions implementation options, 2025). З піднятим sGTM хешування має відбуватися на сервері, а не у браузері. Замапте user-provided data (email, phone, ім'я/прізвище, адреса) на параметр user_data серверного тегу; шаблон хешує SHA-256 перед відправкою. Дивіться також enhanced-conversions.

  5. Пробросити Consent Mode v2 через сервер. Передавайте consent.ad_storage та consent.ad_user_data на кожній події. Налаштуйте тег Google Ads у серверному контейнері так, щоб він поважав прапорці (редакція при denied, повний payload при granted). Кросс-лінк: consent-mode-v2.

  6. Зберігати GCLID/GBRAID/WBRAID на сервері. На лендингу серверний контейнер читає URL-параметр і пише перший-сторонній HttpOnly cookie (довший за 7-денний JS-ліміт ITP). На конверсії цей cookie зчитується назад і приєднується до payload конверсії. Схема параметрів — у gclid-gbraid-wbraid.

Методологічна примітка. Модуль аудиту якості вимірювання Whitead перевіряє три сигнали, щоб виявити прогалини sGTM на акаунті Google Ads: (а) наявність посилання на серверний контейнер у теггінг-конфігурації GA4-property (проксі: transport_url у Google tag вказує на не-Google домен), (б) режим реалізації Enhanced Conversions, що віддає Google Ads API (javascript vs google_tag_with_server vs google_api), (в) коефіцієнт дублювання конверсій, обчислений порівнянням стовпчиків «Conversions» vs «All conversions» Google Ads у 30-денному вікні на Smart Bidding кампаніях — стійкий розрив >25% без обсягу offline-conversion-import трактується як сигнал зламаної дедуплікації. Логіка пріоритизації фіксу виносить крок 1 (підняття сервера) лише коли (а) відсутній; в іншому випадку перестрибує до кроку 3 (дедуплікація), бо це далеко найбільший за blast-radius дефект на акаунтах, які вже є серверними.

Коли ескалювати

Ескалюйте до інженера з вимірювання (не до тактичних фіксів), коли:

  • Обсяг конверсій у Google Ads падає >15% протягом 7 днів після перемикання на sGTM — ймовірно, регресія конфігурації тегу або занадто агресивно поважається прапорець Consent Mode; НЕ підвищуйте ставки «для відновлення», поки не з'ясовано root cause.
  • Match rate Enhanced Conversions залишається нижче 50% після міграції в API-режим — проблема якості вхідних даних (відсутні email/phone у формі ліда, неправильний код країни, хешування застосоване двічі).
  • CPU або кількість запитів серверного контейнера упирається в ліміти Cloud Run / тарифу Stape — це розмова про capacity planning; крос-чекніть, чи pmax-channel-performance-timeline показує відповідне зміщення джерел трафіку, що тягне навантаження.

Пов'язані поняття

  • Enhanced Conversions — серверний шар є канонічним транспортом для EC у 2025-26.
  • Consent Mode v2 — sGTM застосовує прапорці консенту централізовано, а не покладається на те, що кожен піксель їх поважатиме.
  • GCLID / GBRAID / WBRAID — шар click-ID, який sGTM зберігає для стійкої атрибуції.
  • Conversion tracking — фундаментальний шар, який sGTM доповнює, а не замінює.
  • ga4-google-ads-import — коли GA4 теж переходить на серверний, проблему подвійного підрахунку імпорту легше виявити.
  • offline-conversion-import — суміжний шлях вимірювання для B2B SaaS, де конверсія відбувається повністю поза браузером.

Джерела

// чи було корисно?
// анонімно · не зберігаємо персональні дані