Перейти до вмісту
GetProfit

← Усі матеріали

Enhanced Conversions for Leads — налаштування через Google Tag Manager

Коли угода закривається не на сайті, а в CRM через 2 тижні — звичайний Enhanced Conversions не допомагає. Покрокова настройка EC for Leads через GTM з імпортом офлайн-конверсій.

Навіщо це взагалі потрібно

Типова ситуація для B2B і lead-gen:

  • Людина клікнула по рекламі в Google → залишила заявку на сайті «отримати прорахунок»
  • 4 дні менеджер їй телефонує, готує пропозицію, надсилає КП
  • Через 2 тижні клієнт підписує договір — або в офісі, або в CRM, але не на сайті

Google Ads бачить тільки перший крок — submit форми. Smart Bidding оптимізується на «заявку» як на кінцеву мету. Але дешева заявка ≠ закрита угода. Алгоритм вчиться приносити багато дешевих лідів, з яких закривається, скажімо, кожен 8-й. І тобі здається, що реклама стала ефективною, хоча гроші ти ловиш тільки з кожного восьмого.

Раніше цю проблему вирішували через Offline Conversion Import (OCI) — вивантажував з CRM список закритих угод з GCLID, завантажував у Google Ads. Але GCLID часто гублюється: Safari ITP стирає cookies, блокувальники ріжуть параметри, UTM обривається при переходах. Match rate падав до 40–50%.

Enhanced Conversions for Leads замінює цей підхід. Різниця така: замість нестабільного GCLID передаєш у Google хешований email або телефон у момент заповнення форми. Пізніше, коли угода закрилася — вивантажуєш з CRM closed deals з тим самим email. Google матчить дві точки і відновлює ланцюжок «клік → заявка → закрита угода».

EC for Web vs EC for Leads — не плутати

Це дві різні штуки. Перед налаштуванням переконайся, що тобі треба саме Leads-варіант.

EC for WebEC for Leads
Конверсія відбувається на сайті (покупка в інтернет-магазині)Конверсія відбувається офлайн (закриття в CRM, дзвінок, підпис договору)
Доповнює існуючий Google Ads Conversion Tracking тег — додає user data до тієї ж подіїОкремий тег Google Ads User-Provided Data Event + пізніший імпорт офлайн-конверсій
Працює одразу після налаштуванняПрацює тільки коли регулярно вивантажуєш closed deals
E-commerceB2B, lead-gen, high-ticket, курси, медицина, будівництво

Якщо в тебе e-commerce — іди в попередню статтю про EC for Web. Ця — для лідогенерації з довгим циклом.

Коли використовувати саме EC for Leads

  • Lead magnet → nurturing → закриття в CRM
  • B2B, де від заявки до контракту проходить 1–8 тижнів
  • Agent-based sales: клієнт залишає заявку, угоду закриває менеджер
  • High-ticket: курс, медична послуга, будівельна послуга, авто

На практиці це дає:

  • Smart Bidding оптимізується на закриті угоди, а не на заявки → менше «сміттєвих» лідів
  • +15–30% точність атрибуції — бо матчинг іде не через GCLID, а через email/phone
  • Прозорий LTV воронки — бачиш від кліку до грошей, а не до submit

Що має бути до початку

  • ✅ Google Ads акаунт з конверсією типу Lead (не Purchase, не Website Action — саме Lead)
  • ✅ Google Tag Manager на сайті
  • ✅ CRM або таблиця, куди записуються закриті угоди з email клієнта (це критично — без цього EC for Leads не має сенсу)
  • ✅ На thank-you сторінці (або відразу після submit форми) у dataLayer лежать дані клієнта — email обов’язково, телефон бажано
  • ✅ Прийнята Customer Data Terms в Google Ads — зазвичай робить власник акаунту, не агентство

Скільки часу займе

Сама настройка в GTM — 30–40 хвилин. Плюс окремо треба налаштувати імпорт офлайн-конверсій з CRM — це ще 1–2 години (Google Ads Data Manager або Zapier). Перші дані в Diagnostics побачиш через 24–72 години після того, як через сайт пройде ≥20 конверсій.


Як це працює — схема за 1 хвилину

  1. Користувач клікає по рекламі → Conversion Linker у GTM зберігає GCLID у first-party cookie
  2. Користувач заповнює форму → на thank-you сторінку пушиться dataLayer з email/phone
  3. Тег Google Ads User-Provided Data Event спрацьовує → хешує email локально і надсилає в Google разом із GCLID
  4. Google тимчасово зберігає хеш на своєму боці, чекає на сигнал про закриту угоду
  5. Менеджер 1–8 тижнів працює з лідом, угода закривається в CRM
  6. Ти вивантажуєш з CRM closed deals з полями: email, conversion_name, conversion_time, conversion_value
  7. Завантажуєш у Google Ads через Data Manager / Zapier / API
  8. Google матчить: «А, цей email тиждень тому клікнув по рекламі і залишив заявку» → атрибутує конверсію до первинного кліку

Крок 1. Прийняти Customer Data Terms у Google Ads

1. Зайди в Goals (не Conversions!)

Заходиш у Google Ads → іконка «ключ» (Tools and settings) → розділ MeasurementGoals.

Це інший розділ, ніж Conversions. Goals — це саме те місце, де активується EC for Leads.

2. Увімкни Enhanced Conversions for Leads

У Goals знайди блок Enhanced conversions for leads. Перемкни toggle на ON.

3. Вибери метод Google Tag Manager

З’явиться вибір методу імплементації. Три варіанти:

  • Google Tag (gtag.js) — якщо немає GTM
  • Google Tag Manager — наш варіант
  • Google Ads API — server-side, не тема цієї статті

4. Прочитай і прийми Customer Data Terms

Google покаже текст policy. Читаєш → ставиш галочку «I agree to the Customer Data Terms»Save. Статус має змінитися на Accepted.

Що ти підтверджуєш: у тебе є законна підстава передавати дані користувача (consent у формі або legitimate interest), а в політиці приватності написано, що дані можуть передаватись у Google у хешованому вигляді.

⚠️ Якщо Terms не приймаються

«If you aren’t able to view terms, it’s because your account conversions are tracked by a manager account» — значить конверсії керуються з MCC. У такому разі Terms треба прийняти з parent MCC акаунту, а не з дитячого. Зайди в MCC → Goals → Accept Terms. Це часто треба зробити саме власнику бізнесу, агентство без доступу не зможе.


Крок 2. Conversion Linker у GTM

Conversion Linker детектить GCLID у URL і зберігає його у first-party cookie домену. Без нього Google не зможе прив’язати хеш email до конкретного кліку по рекламі.

Якщо в тебе вже стоїть Google Ads Conversion Tracking — Conversion Linker скоріш за все вже є. Перевір у Tags. Якщо немає — створюй:

1. Створи Conversion Linker tag

  • GTM → Tags → New
  • Tag Type: Conversion Linker
  • Trigger: All Pages
  • Назва: Conversion Linker
  • Save

Крок 3. Перевір dataLayer після submit форми

Перш ніж лізти в налаштування тегу — переконайся, що після submit форми дані клієнта реально пушаться у dataLayer. Якщо їх там немає — дальше робити нема чого.

1. Відкрий свій сайт у Chrome DevTools

Заходь на сторінку з формою заявки. F12 (або Cmd+Option+I на Mac) → вкладка Console.

2. Заповни тестову заявку

Своїм реальним email і телефоном (пізніше можна видалити з CRM). Натискаєш Submit.

3. Подивись dataLayer

У Console набери: window.dataLayer → Enter. Знайди у відповіді об’єкт з подією після submit. Бажаний формат:

{
  event: "lead_submit",
  user_data: {
    email_address: "[email protected]",
    phone_number: "+380501234567",
    address: {
      first_name: "Ivan",
      last_name: "Petrenko",
      postal_code: "01001",
      country: "UA"
    }
  }
}

Імена полів у тебе можуть бути інші — це нормально. Головне щоб email був обов’язково, телефон бажано. Запам’ятай точні ключі — вони знадобляться у Кроку 5.

⚠️ Якщо даних у dataLayer немає

Значить розробник не зробив push. Дай йому ось цей фрагмент — його треба вставити у обробник успішного submit форми (або на thank-you сторінку):

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: "lead_submit",
  user_data: {
    email_address: "{{email_from_form}}",
    phone_number: "{{phone_from_form}}",  // формат E.164: +380...
    address: {
      first_name: "{{first_name}}",
      last_name: "{{last_name}}",
      postal_code: "{{postal_code}}",
      country: "UA"
    }
  }
});

Важливо: передавай дані у plain text, без хешування. Google сам захешує їх у браузері перед надсиланням.


Крок 4. Вибір способу збору даних

Google дає три варіанти збору user data. Ось порівняння:

МетодСкладністьКоли обирати
AutomaticМінімальнаПрості форми. Але phone не збирається автоматом — тільки email і address
Manual (CSS Selectors)СередняКоли треба phone, але немає dev для dataLayer. Треба знати CSS-селектори полів форми
Code (Data Layer)Висока (треба dev)Рекомендовано — найстабільніший варіант, максимальний Match rate

Далі я показую Code (Data Layer) — саме цей варіант Google рекомендує для максимальної точності. Якщо CSS-селектори змінюються при редизайнах — Manual «зламається тихо» і ти цього не помітиш. Data Layer — стабільний, якщо dev його зробив.


Крок 5. Створи Data Layer Variables

У GTM: VariablesUser-Defined VariablesNew.

1. Змінна для email

  • Name: DLV - user email
  • Variable Type: Data Layer Variable
  • Data Layer Variable Name: user_data.email_address (або твій ключ)
  • Save

2. Повтори для всіх полів

Створюєш такі ж змінні для:

  • DLV - user phoneuser_data.phone_number
  • DLV - first nameuser_data.address.first_name
  • DLV - last nameuser_data.address.last_name
  • DLV - postal codeuser_data.address.postal_code
  • DLV - countryuser_data.address.country

Чим більше полів передаєш — тим вищий Match rate у Google. Мінімум = email. Ідеал = email + phone + address.


Крок 6. Створи Trigger для події lead_submit

1. Custom Event Trigger

  • GTM → TriggersNew
  • Trigger Type: Custom Event
  • Event Name: lead_submit — точно як у твоєму dataLayer push
  • This trigger fires on: All Custom Events
  • Name: CE - lead_submit
  • Save

Крок 7. Створи User-Provided Data Variable

1. Нова змінна типу User-Provided Data

  • Variables → New → Variable Type: User-Provided Data
  • Type: Code

2. Прив’яжи поля до DLV-змінних

  • Email: {{DLV - user email}}
  • Phone Number: {{DLV - user phone}}
  • First Name: {{DLV - first name}}
  • Last Name: {{DLV - last name}}
  • Postal Code: {{DLV - postal code}}
  • Country: {{DLV - country}}

Назви змінну UPD - Lead User Data → Save.

Якщо data вже захешована на стороні сайту

Якщо з якоїсь причини розробник хешує дані до того, як вони потрапляють у dataLayer (буває в параноїчних setups), треба:

  • Використовувати Hex-encoded SHA256 (не Base64)
  • Префіксувати поля: sha256_email_address, sha256_phone_number, sha256_first_name тощо
  • postal_code та countryне хешувати, залишати plain text

У 99% випадків цього робити не треба — нехай хешує Google. Простіше і стабільніше.


Крок 8. Google Ads User-Provided Data Event Tag

⚠️ Це НЕ Google Ads Conversion Tracking tag

EC for Leads використовує окремий тип тегу — Google Ads User-Provided Data Event. Не плутай з існуючим Conversion Tracking тегом, який у тебе вже є. Той працює окремо і його чіпати не треба.

1. Створи тег

  • GTM → Tags → New
  • Tag Type: Google Ads User-Provided Data Event
  • Conversion ID: твій Google Ads Customer ID у форматі AW-1234567890 (береться з адреси акаунту — прибираєш дефіси)
  • User-Provided Data: {{UPD - Lead User Data}}

2. Прив’яжи trigger

Triggering: CE - lead_submit (створений у Кроці 6).

Назва: GAds - EC for Leads → Save.


Крок 9. Preview + Publish

1. Preview

Натисни Preview угорі справа. Відкриється Tag Assistant. Введи URL свого сайту → Connect.

2. Пройди воронку з submit форми

У відкритому Tag Assistant-вікні зайди на сторінку з формою, заповни її, натисни Submit. У Tag Assistant з’явиться подія lead_submit.

3. Перевір що тег спрацював

  • Відкрий подію lead_submit у Tag Assistant
  • Секція Tags Fired → має бути GAds - EC for Leads
  • Клікни на нього → вкладка Properties
  • Перевір User-Provided Data: email, phone і решта полів мають бути непусті

У Preview дані показуються у plain text — це нормально. Хешування відбувається пізніше, на льоту, перед надсиланням у Google.

4. Якщо тег у Tags Not Fired

Значить trigger CE - lead_submit не співпадає. Перевір:

  • Event name у dataLayer і Custom Event Trigger повністю однакові (регістр має значення)
  • Custom Event Trigger стоїть на All Custom Events, а не на якийсь фільтр
  • У тегу Triggering = CE - lead_submit, а не випадковий All Pages

5. Publish

Коли все працює — повертайся у GTM → Submit → опиши версію («EC for Leads setup») → Publish. EC починає працювати на проді.


Крок 10. Верифікація через Network requests

Головна швидка перевірка — що дані реально летять у Google. Preview показує локальну картину, а Network показує реальні HTTP-запити.

1. Відкрий DevTools → Network

Зайди на сторінку з формою (у звичайному режимі, не Preview). F12 → вкладка Network. Постав галочку Preserve log.

2. Очисти логи і заповни форму

Натисни «кошик» у Network щоб почистити. Заповни форму → Submit.

3. Знайди запит на google.com/pagead/form-data/

Відфільтруй Network за form-data або pagead. Має бути запит на адресу https://google.com/pagead/form-data/....

У Query String Parameters (або Payload) шукай параметри:

  • em= — hash email
  • pn= — hash phone
  • fn=, ln=, pc=, co= — інші поля

Якщо бачиш непусті значення цих параметрів — дані реально летять у Google ✅. Якщо запит є, але параметри пусті — user_data десь обривається (повернись у GTM і перевір DLV-змінні).


Крок 11. Імпорт офлайн-конверсій (критичний крок)

⚠️ Без цього кроку EC for Leads не працює

Весь зміст EC for Leads у тому, щоб зв’язати submit форми (який в GTM) із закритою угодою (яка в CRM). Якщо ти шлеш user data в Google, але ніколи не вивантажуєш closed deals — Google ніколи не дізнається про закриті угоди, і атрибуція не оновиться.

Є три способи імпорту:

Варіант A. Google Ads Data Manager (рекомендовано)

  1. Google Ads → Tools → Data ManagerConnect product
  2. Вибираєш джерело: Google Sheets / BigQuery / Salesforce / HubSpot / SFTP / Cloud Storage / HTTP
  3. Налаштовуєш розклад (щодня / щогодини)
  4. Маппиш поля: email → User-Provided → Email, value → Conversion Value, timestamp → Conversion Time, currency → Currency
  5. Save → Test import

Формат CSV (для Google Sheets / SFTP):

email,conversion_name,conversion_time,conversion_value,conversion_currency
[email protected],Lead Closed,2026-04-24 14:30:00+00:00,5000,UAH
[email protected],Lead Closed,2026-04-24 15:12:00+00:00,12000,UAH

Варіант B. Zapier

Якщо у CRM немає нативної інтеграції з Data Manager — бери Zapier. Trigger — «New Closed Deal in CRM», Action — «Google Ads: Upload Offline Conversion». Маппиш поля, запускаєш. Працює миттєво.

Варіант C. Google Ads API

Якщо в тебе є dev і ти хочеш повний контроль — через ConversionUploadService + UserIdentifier. Складніше, але гнучкіше. Рекомендую тільки якщо інші два варіанти чимось не підходять.

Частота імпорту — щодня автоматично. Google приймає дані за останні 90 днів. Тобто можеш запустити і назавжди забути.


Крок 12. Перевірка в Google Ads Diagnostics

Через 24–72 години після публікації (і коли через форму пройшло ≥20 заявок):

  1. Google Ads → Tools → Conversions → клік на свою Lead конверсію
  2. Вкладка Diagnostics
  3. Розділ Enhanced conversions for leads
МетрикаЩо означаєМета
Data received% конверсій, з якими прийшов user data з сайту> 70%
Match rate% конверсій, де Google зміг зматчити email з акаунтом Google> 50%
StatusRecording / Not recordingRecording

Якщо Status = Not recording через 72 години — тег взагалі не fires або dataLayer пустий. Повертайся у Preview.

Якщо Data received низький (< 50%) — EC підключено не на всіх конверсійних точках (можливо, у тебе кілька форм — кожна має push user_data).

Якщо Data received високий, Match rate низький — проблема у форматі даних (див. нижче).


Часті проблеми

ПроблемаПричинаЯк фіксити
Status = Not recordingТег не firesGTM Preview → перевір trigger Custom Event = lead_submit
Match rate = 0%Дані пре-хешовані на сайті, але GTM вважає їх plain text (або навпаки)Або шли plain text (рекомендовано), або додай префікс sha256_ до полів
Match rate низький (< 30%)Неправильний формат телефонуФормат E.164: +380501234567 — плюс, без пробілів, дужок, дефісів
Email не матчитьсяПробіли, верхній регістрПеред push у dataLayer: email.toLowerCase().trim()
«Terms are not accepted»Акаунт під MCCПрийми Customer Data Terms з parent MCC акаунту
Conversions не імпортуютьсяEmail у CRM відрізняється від email на сайті (з пробілом, іншим доменом)Перед upload — нормалізуй: lowercase + trim. Перевір чи CRM не додає суфікси типу +sales
EC мовчить, але Consent Mode = deniedКористувач відмовився від cookiesBy design. EC не шле дані без consent. Перевір % granted серед твоїх користувачів.
Смарт-бідінг не змінює поведінкуМало даних (< 30 закритих угод/міс)EC for Leads потребує обсягу. Для маленьких аккаунтів ефект проявиться через 2–3 місяці

Що далі — після 2–3 тижнів

  • Match rate стабілізується на 50–80%. Google починає бачити повну картину від кліку до закритої угоди.
  • Smart Bidding перекалібровується — алгоритм помічає що частина «лідів» реально стає продажами, а частина — ні. Починає витягувати трафік, схожий на перших.
  • Можна переключити стратегію на Maximize Conversion Value з пріоритетом на конверсію «Lead Closed» (а не просто «Lead Submit»). Тепер у Google є дані, щоб це робити.
  • Conversion Value Rules — якщо в тебе є MQL → SQL → Closed з різними ймовірностями, можна призначити різну вагу. Наприклад, Closed Deal = ×10 проти MQL = ×1.

Далі — дзеркало цього на Facebook CAPI: шлеш хешований email у Facebook після form submit, а закриті угоди — через Conversions API Offline Events. Логіка та сама.

✅ Короткий чек-лист

  • Google Ads → Goals → Enhanced conversions for leads = ON, метод GTM
  • Customer Data Terms прийняті (з правильного акаунту, якщо MCC)
  • Conversion Linker tag у GTM + trigger All Pages
  • Після submit форми — у dataLayer є user_data.email_address (plain text)
  • DLV-змінні створені для email, phone, first_name, last_name, postal_code, country
  • Custom Event Trigger CE - lead_submit створений
  • User-Provided Data Variable (Code type) створена і прив’язана до DLV
  • Google Ads User-Provided Data Event tag створений з правильним Conversion ID
  • Preview verified — тег fires, user_data не порожнє
  • Network verified — em=, pn= летять у google.com/pagead/form-data/
  • GTM контейнер опублікований
  • Налаштований регулярний імпорт closed deals з CRM через Data Manager / Zapier
  • Через 24–72 години — Diagnostics: Status = Recording, Data received > 70%, Match rate > 50%