Три способи додати 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
Код лічильника вставлено, а дані у звітах не з'являються. Різниця між 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.