lamapixel
0%
E-commerce · 9 min читання

Чому в GA4 не збігається виручка: шар даних, згода і дублікати

Відсутній шар даних, цінність без валюти, дублювальний purchase, згода і порогові значення. Шість причин різниці між GA4 і бухгалтерією і як їх розрізнити.

Чому в GA4 не збігається виручка: шар даних, згода і дублікати

Різниця між виручкою в Google Analytics і виручкою в бухгалтерії - нормальний стан, а не поломка. Поломка - її величина. Пара відсотків це похибка вимірювання, тридцять і більше відсотків означають, що щось не вимірюється взагалі, вимірюється двічі або викидається дорогою.

Причин шість, і відрізнити їх одна від одної можна за двадцять хвилин, не торкаючись коду. Порядок дій описаний нижче. Але спершу найнеприємніша можливість, бо вона ж найчастіша.

Спершу з'ясуйте, чи відбувалося вимірювання хоч колись

Експорт контейнера Google Tag Manager описує намір, а не поведінку. Він не містить і не може містити жодного факту про те, що тег колись спрацьовував. Контейнер може бути зібраний зразково і при цьому цілий рік мовчати.

Останнього дня серпня 2026 ми розбирали два контейнери живих акаунтів, і в обох була поломка саме такого роду.

Перший контейнер був наш власний. Одинадцять тегів, десять подій GA4, базовий тег на правильному тригері, форма поділена на form_start і form_submission_success, а кваліфікація заявки надсилається просто в події. Налаштування краще за середній акаунт, який приходить до нас на аудит. І при цьому: цінність конверсії не надсилається в жодній із десяти подій, тегів Google Ads у контейнері нуль, а згода в усіх одинадцяти тегів має значення «не задано». Форма при цьому питає про бюджет, і відповідь доходить до GA4, де й закінчується.

Другий контейнер належав клієнту, і його поломка була ще тихішою. Тег конверсії був налаштований правильно, ціль і умова мали сенс. Тільки от на сайті виклик dataLayer.push не трапляється жодного разу на жодній із семи перевірених сторінок. Контейнер чекає на дані, які немає кому надіслати, а в інтерфейсі при цьому все зелене.

Перевірка, яка це вирішує, займає дві хвилини: GA4, Звіти > Взаємодії > Події, період три місяці назад, і подивитися на кількість у purchase, add_to_cart і begin_checkout. Нуль означає, що всі інші міркування сенсу не мають.

У шару даних шість кроків, а не один

Більшість магазинів вимірює purchase і нічого до нього. Це як мати касу без торгової зали: ви знаєте, скільки продали, і не знаєте, де люди пішли.

Рекомендована послідовність подій для e-commerce довша: view_item_list, view_item, add_to_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase (документація Google Analytics для розробників, вимірювання e-commerce).

Практичний мінімум - чотири: view_item, add_to_cart, begin_checkout, purchase. Лише з них виникає співвідношення між кроками, тобто єдине число, з яким можна працювати. Саме по собі число покупок каже, яким вийшов місяць, але не каже, що з цим робити.

Цінність без валюти - не цінність

Дві речі, які виглядають формальністю і нею не є:

Валюта надсилається разом із цінністю. Документація каже прямо: параметр currency задається на рівні події, коли ви надсилаєте value. Без валюти цінність - число без одиниці вимірювання, і звіт про виручку перестане мати сенс у момент, коли ви продасте перше замовлення за кордон.

transaction_id обов'язковий у покупок і кредит-нот. Без нього не працює видалення дублікатів, про яке наступний розділ.

І одна пастка з практики, яку в інтерфейсі не розгледіти: «цінність не надсилається» і «надсилається нуль» виглядають у звітах однаково. У другому контейнері вище стовпець із цінністю конверсії був нульовим в усіх рядках, і лише погляд у контейнер показав, що параметра з цінністю там немає взагалі. Діагноз ставиться в контейнері, а не у звіті.

Дублювальні покупки: GA4 їх відфільтрує, але в цього дві умови

Класичний сценарій: покупець оновлює сторінку подяки або повертається на неї з історії браузера, і покупка зараховується знову.

Google Analytics дедуплікує події purchase з однаковим ID транзакції. Але дві умови, на яких це тримається, випускають з уваги (довідка Analytics):

  1. Дедуплікація працює лише у вебпотоків даних, а не в застосунків.
  2. Порожній transaction_id гірший, ніж жодного. Google Analytics дедуплікує всі події purchase зі значенням transaction_id="", тож із тисячі замовлень лишиться одне, і числа проваляться так, що це виглядає зупинкою продажів.

Другий пункт - тиха поломка в чистому вигляді. Вона настає завжди, коли шаблон сторінки подяки не може дістатися номера замовлення і надсилає порожній рядок замість того, щоб не надсилати подію взагалі.

Що з цим роблять: ID транзакції беруть з номера замовлення, а не з випадкового числа, згенерованого на сторінці. Надсилають один раз під час створення замовлення, а не за кожного показу сторінки. І якщо номера замовлення немає, подія не надсилається.

Згода зрізає дані тихо, і моделювання цю діру не закриє

У режиму згоди дві форми, і різниця між ними грошова.

Базовий режим: теги до взаємодії з банером не спрацьовують узагалі, і Google не отримує нічого, навіть інформації про стан згоди. Заповнення відсутніх конверсій тоді спирається на загальну модель.

Розширений режим: теги завантажуються одразу зі статусом «відхилено» і до рішення користувача надсилають пінги без cookie. З них виникає модель, специфічна для конкретного рекламодавця, тобто точніша (довідка Google Ads).

А тепер число, яке змінює все міркування для звичайного чеського магазину. Щоб моделювання конверсій узагалі запустилося, потрібно 700 кліків по рекламі за сім днів, причому окремо для кожної комбінації країни і групи доменів (довідка Google Ads).

Хто в Чехії витрачає на перформанс десятки тисяч на місяць, той перебуває нижче цієї межі. Практично це означає: на невеликому акаунті втрачені конверсії не домоделюються, і діра після відхиленої згоди лишиться дірою. Це не аргумент проти згоди, згода - правовий обов'язок. Це аргумент проти очікування, що Google усе вирівняє сам.

Порогові значення: GA4 частину даних сховає і вголос про це не скаже

Маловідома річ, яка пояснює масу «зниклих» рядків у звітах.

Google Analytics застосовує порогові значення, щоб із демографічних сигналів і сигналів інтересів не можна було вивести особу людини. Дані можуть бути затримані, коли у вас увімкнені сигнали Google і в цьому періоді мало користувачів. Пороги системні і не налаштовуються. Коли ви розширите період, кількість користувачів зросте, і раніше затримані дані з'являться (довідка Analytics).

Звідси звичка, що заощаджує масу зайвих пошуків: перш ніж шукати помилку у вимірюванні, розширте період. Якщо рядки з'явилися, жодної помилки не було.

GA4 і Google Ads не зійдуться ніколи, і це описано

Різниця між кількістю конверсій у Google Ads і в Analytics - не помилка налаштування. Google сам перелічує низку причин (довідка Google Ads), і чотири з них пояснюють більшу частину практики:

  • Google Ads відносить конверсію до дня показу реклами, інші інструменти - до дня конверсії. Коли хтось клікнув у понеділок і купив у четвер, обидва числа правильні і все ж різняться.
  • Конверсія може бути зарахована і за 90 днів після кліка, тож учорашнє число не остаточне і за три тижні буде вищим.
  • Недійсний трафік відфільтровується. Частину конверсій Google видалить, оцінивши джерело як спам.
  • Обробка даних займає 24-48 годин. Порівнювати раніше сенсу немає.

До цього додаються налаштування підрахунку конверсій (кожна проти однієї), конверсії між пристроями і конверсії після перегляду.

Практичний висновок, який варто запам'ятати: кампанії оптимізують за конверсіями в Google Ads. Analytics потрібен, щоб бачити поведінку і шлях, а не щоб сперечатися з Google Ads про число.

Три пастки, які виглядають дрібницею. Усі три з нашого акаунта

Останній розділ про нас, а не про клієнтів. Це ми знайшли 31. 8. 2026 у власному контейнері, і це повчальніше за чужі приклади.

Подія називається portfolio_view_75, а вимірює 50 відсотків. У тригера задана мінімальна видимість 50 %, а ім'я обіцяє 75 %. За пів року на це число хтось послатиметься як на «дочитали портфоліо на три чверті». Дешевше перейменувати подію, ніж міняти поріг.

Подія engaged_30s спрацьовує на кожній сторінці сайту. У таймера умова, що підходить до будь-якої адреси, тож за тридцять секунд подія йде і зі статті в блозі. Саме по собі не шкодить. Небезпечно це в єдиний момент: якщо таку подію позначити в GA4 як ключову й імпортувати в Google Ads, ставки почнуть оптимізуватися на читачів, які ніколи нічого не запитають.

Cookie з ідентифікатором кліка, яку ніхто не читає. Власний тег зберігає gclid на 90 днів, і жоден інший тег, змінна чи приховане поле форми цю cookie не читає. Виглядає як робоче офлайн-вимірювання, а насправді порожнє місце. Або значення підставляється у форму, або тег видаляється - проміжний стан найгірший.

Правило, яке з цих трьох прикладів випливає: ключовими подіями в GA4 можуть бути лише ті, що справді означають угоду. Залученість, глибина прокручування і показ секції до них не належать ніколи.

Двадцятихвилинна перевірка, після якої ясно, яку з шести причин ви вирішуєте

Порядок за кроками. Ніщо з цього нічого не змінює і нічого не ламає.

  1. GA4, Звіти > Взаємодії > Події, три місяці назад. Чи є там purchase, add_to_cart і begin_checkout з ненульовою кількістю?
  2. Там само кількість purchase проти кількості замовлень в адміністрації за той самий період. Різниця понад двадцять відсотків веде до кроку 3.
  3. Кількість purchase вища за кількість замовлень? Дублікати, див. розділ про transaction_id. Нижча? Відсутнє вимірювання або згода.
  4. Браузер, інструменти розробника, вкладка Console, завершити тестове замовлення і вивести dataLayer. Чи є там подія purchase з value, currency і непорожнім transaction_id?
  5. GA4, Адміністратор > Ключові події. Чи лише ті, що означають угоду?
  6. GA4, розширити період до року і перевірити, чи з'явилися раніше відсутні рядки. Якщо так, це були порогові значення.
  7. Google Ads, Цілі > Конверсії > Зведення, стовпець із цінністю конверсії. Нуль за живих конверсій означає, що цінність не надсилається.

Після цих семи кроків ви знаєте, чи вирішуєте ви відсутній шар даних, дублікати, згоду, порогові значення чи звичайну різницю між інструментами.

Бухгалтерія й Analytics не зійдуться ніколи. Мета не в збігу, мета - знати величину різниці та її причину, бо цим можна керувати, а збігом чисел ні.

Потрібен розбір вашого контейнера

Надішліть нам експорт контейнера Google Tag Manager і адресу магазину. Повернемо перелік того, що вимірюється, що вимірюється хибно і що вдає, що вимірюється. Одразу попередимо, що експорт контейнера не доведе, чи спрацьовував тег колись, - це перевіряється лише в GA4, і це перше, що ми у вас попросимо.

Вимірювання входить у кожен магазин, який ми будуємо; що в нього входить, описано на сторінці розробки інтернет-магазинів. Технічний розбір наявного сайту разом із вимірюванням робимо на сторінці аудиту і пришвидшення сайту; сценарії, що переливають дані далі у ваші системи, на сторінці автоматизації.

Напишіть на info@lamapixel.com або телефонуйте +420 775 599 009.

Потрібна допомога?

Напишіть нам - разом знайдемо рішення.

Призначити консультацію →