До основного вмісту

WordPress + Google Analytics 4: правильне підключення

WordPress · 27.01.2025 · 4 хв читання
Ілюстрація до статті «WordPress + Google Analytics 4: правильне підключення»

Три способи додати GA4 у WordPress

МетодПеревагиНедоліки
Site Kit by GoogleОфіційний, зручнийВажкий плагін
Вручну (functions.php)ЛегковісноПотрібні знання PHP
Google Tag ManagerГнучкість, усі теги в одному місціСкладніше налаштування

Метод 2: Вручну через functions.php

function add_ga4_tracking() {
    $measurement_id = 'G-XXXXXXXXXX';
    echo "
    <script async src='https://www.googletagmanager.com/gtag/js?id={$measurement_id}'></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', '{$measurement_id}');
    </script>";
}
add_action('wp_head', 'add_ga4_tracking');
💡 Додайте if (!current_user_can('manage_options')) перед echo, щоб не рахувати власні перегляди в аналітиці.

Налаштування цілей GA4

У GA4 цілі називаються Events. Ключові події для сайту хостингу:

  • purchase — оформлення замовлення
  • sign_up — реєстрація
  • generate_lead — заявка з форми
  • page_view — перегляд сторінки
⚠️ GA4 не зберігає IP-адреси за замовчуванням — це відповідає GDPR. Не змінюйте це налаштування без потреби.

Розбір помилок трекінгу GA4

Код лічильника вставлено, а дані у звітах не з'являються. Різниця між GA4 і старим Universal Analytics у тому, що GA4 групує все в події, тому багато «помилок» насправді не баг, а інакше влаштована модель даних. Ось що означають типові симптоми.

СимптомПричинаЩо робити
Звіт Real-Time порожній, хоча код вставленоMeasurement ID вказано з опискою, або скрипт блокується кеш-плагіном як «невикористовуваний JS»Звірити ID у GA4 → Admin → Data Streams, виключити файл із мінифікації
Помилка в консолі: gtag is not definedСкрипт gtag.js не встиг завантажитися до виклику gtag(), зазвичай через порушений порядок підключенняНе змінювати порядок із прикладу: спочатку dataLayer, потім сам скрипт gtag.js
Кількість сесій удвічі більша за очікувануGA4 підключено одночасно через Site Kit і вручну через functions.phpЗалишити лише один спосіб підключення лічильника
Запит до google-analytics.com позначено Blocked by clientНадсилання блокує блокувальник реклами в частини відвідувачівЦе очікувано для частини трафіку; для надійності використовуйте серверне тегування через GTM Server Container

Коли самостійне налаштування GA4 не підходить

  • Сайти з жорсткими вимогами GDPR — потрібен Consent Mode v2 і банер згоди перед будь-яким надсиланням даних у GA4
  • Інтернет-магазини зі звітністю щодо продажів — вручну через functions.php складно передати дані про покупки, зручніше використовувати вбудовану інтеграцію WooCommerce або GTM
  • Компанії з юридичною вимогою зберігати дані всередині Євросоюзу — потрібне окреме налаштування регіону обробки даних у GA4 Admin, а не просто вставка коду
  • Односторінковики з десятками мікроконверсій — ручна розмітка кожної події в коді не масштабується, потрібен Google Tag Manager
  • Сайти з кількома доменами під одним брендом — для наскрізної аналітики між доменами потрібне налаштування cross-domain measurement, а не просто вставка того самого коду на кожен домен

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

Налаштування через Google Tag Manager

GTM зручний тим, що всі теги керуються з одного інтерфейсу без правки коду під час кожної зміни.

<!-- У head, одразу після відкриваючого тега body -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

<!-- Основний контейнер вставляється в head через functions.php,
     як у прикладі з gtag вище -->

Якщо контейнер GTM не завантажується через політику безпеки контенту, розберіться з налаштуванням CSP на сайті.

Як перевірити, що дані йдуть у GA4 коректно

  • У GA4 → Admin → DebugView події з'являються в реальному часі під час активного відлагодження
  • У DevTools → Network запит до домену google-analytics.com/g/collect повертає статус 204
  • Tag Assistant у браузері показує спрацьовані теги без помилок конфігурації
  • Кількість подій page_view приблизно збігається з кількістю унікальних завантажень сторінок за той самий період
// Швидка перевірка в консолі браузера
console.log(window.dataLayer);
// Масив має містити події gtag('config', ...) і gtag('event', ...)

Після перевірки трекінгу варто також звірити базові SEO-налаштування — див. статтю про Yoast SEO.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці