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 Web EC for Leads Конверсія відбувається на сайті (покупка в інтернет-магазині) Конверсія відбувається офлайн (закриття в CRM, дзвінок, підпис договору) Доповнює існуючий Google Ads Conversion Tracking тег — додає user data до тієї ж події Окремий тег Google Ads User-Provided Data Event+ пізніший імпорт офлайн-конверсійПрацює одразу після налаштування Працює тільки коли регулярно вивантажуєш closed deals E-commerce B2B, 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 хвилину
- Користувач клікає по рекламі → Conversion Linker у GTM зберігає GCLID у first-party cookie
- Користувач заповнює форму → на thank-you сторінку пушиться
dataLayerз email/phone - Тег Google Ads User-Provided Data Event спрацьовує → хешує email локально і надсилає в Google разом із GCLID
- Google тимчасово зберігає хеш на своєму боці, чекає на сигнал про закриту угоду
- Менеджер 1–8 тижнів працює з лідом, угода закривається в CRM
- Ти вивантажуєш з CRM closed deals з полями:
email,conversion_name,conversion_time,conversion_value - Завантажуєш у Google Ads через Data Manager / Zapier / API
- Google матчить: «А, цей email тиждень тому клікнув по рекламі і залишив заявку» → атрибутує конверсію до первинного кліку
Крок 1. Прийняти Customer Data Terms у Google Ads
1. Зайди в Goals (не Conversions!)
Заходиш у Google Ads → іконка «ключ» (Tools and settings) → розділ Measurement → Goals.
Це інший розділ, ніж 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: Variables → User-Defined Variables → New.
1. Змінна для email
- Name:
DLV - user email - Variable Type: Data Layer Variable
- Data Layer Variable Name:
user_data.email_address(або твій ключ) - Save
2. Повтори для всіх полів
Створюєш такі ж змінні для:
DLV - user phone→user_data.phone_numberDLV - first name→user_data.address.first_nameDLV - last name→user_data.address.last_nameDLV - postal code→user_data.address.postal_codeDLV - country→user_data.address.country
Чим більше полів передаєш — тим вищий Match rate у Google. Мінімум = email. Ідеал = email + phone + address.
Крок 6. Створи Trigger для події lead_submit
1. Custom Event Trigger
- GTM → Triggers → New
- 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 emailpn=— hash phonefn=,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 (рекомендовано)
- Google Ads → Tools → Data Manager → Connect product
- Вибираєш джерело: Google Sheets / BigQuery / Salesforce / HubSpot / SFTP / Cloud Storage / HTTP
- Налаштовуєш розклад (щодня / щогодини)
- Маппиш поля: email → User-Provided → Email, value → Conversion Value, timestamp → Conversion Time, currency → Currency
- 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 заявок):
- Google Ads → Tools → Conversions → клік на свою Lead конверсію
- Вкладка Diagnostics
- Розділ Enhanced conversions for leads
| Метрика | Що означає | Мета |
|---|---|---|
| Data received | % конверсій, з якими прийшов user data з сайту | > 70% |
| Match rate | % конверсій, де Google зміг зматчити email з акаунтом Google | > 50% |
| Status | Recording / Not recording | Recording |
Якщо Status = Not recording через 72 години — тег взагалі не fires або dataLayer пустий. Повертайся у Preview.
Якщо Data received низький (< 50%) — EC підключено не на всіх конверсійних точках (можливо, у тебе кілька форм — кожна має push user_data).
Якщо Data received високий, Match rate низький — проблема у форматі даних (див. нижче).
Часті проблеми
| Проблема | Причина | Як фіксити |
|---|---|---|
| Status = Not recording | Тег не fires | GTM 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 | Користувач відмовився від cookies | By 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%
Ще за темою
Google Tag Gateway через Cloudflare — докладна інструкція
Як за 10–15 хвилин увімкнути Google Tag Gateway через Cloudflare і повернути 11–25% втрачених конверсій у Google Ads і GA4. Крок за кроком, українською.
Enhanced Conversions — покрокове налаштування для Google Ads і GA4
Дані з форми вже збираються на сайті, але не потрапляють у Google Ads і GA4? Покроково — куди клікати, що побачиш, як перевірити. Налаштування через Google Tag Manager.
Як налаштувати конверсії в Google Ads через Google Tag Manager
Проста і швидка інструкція з налаштування конверсій.