🔥 DataLayer в консоли: шпаргалка QA
DataLayer — это глобальный массив window.dataLayer, куда фронт складывает события для аналитики (GA4, GTM). Тестировать его удобно прямо в консоли DevTools👇
📋 Смотрим историю
dataLayer // весь массив console.table(dataLayer) // читаемая таблица dataLayer[dataLayer.length - 1] // последнее событие dataLayer.filter(e => e.event === ‘add_to_cart’) // найти конкретное
⚡ Ловим события в реальном времени Подменяем push, не ломая работу GTM:
const origPush = dataLayer.push; dataLayer.push = function(obj) { console.log(‘🚀 Новый push:’, obj); return origPush.call(this, obj); }; // Вернуть как было: dataLayer.push = origPush;
🛒 E-commerce проверки (самое важное)
Проверить состав события view_item:
dataLayer.filter(e => e.event === ‘view_item’).forEach(i => { console.log(i.ecommerce?.items[0]?.item_name, i.ecommerce?.value); });
Убедиться, что в purchase есть ID транзакции:
const pur = dataLayer.find(e => e.event === ‘purchase’); console.assert(pur?.ecommerce?.transaction_id, ‘❌ Нет ID заказа!’);
Вручную запушить тестовый add_to_cart (без кликов):
dataLayer.push({ event: ‘add_to_cart’, ecommerce: { currency: ‘RUB’, value: 1000, items: [{ item_id: ‘123’, item_name: ‘Тест’, price: 1000 }] } });
🛠️ Полезные сниппеты
Экспорт лога в JSON (для баг-репорта):
const a = document.createElement(‘a’); a.href = URL.createObjectURL(new Blob([JSON.stringify(dataLayer, null, 2)], {type: ‘application/json’})); a.download = ‘dl_dump.json’; a.click();
Очистить историю перед стартом сценария:
dataLayer.length = 0; // Только так! dataLayer = [] сломает GTM.
🧩 Инструменты в помощь
· DataLayer Inspector+ — визуализация прямо в панели Chrome. · Google Analytics Debugger — включает debug_mode GA4.
⚡️ Чек-лист
1. Есть ли поле event в новых пушах? 2. Нет ли дублей? 3. В ecommerce.items заполнены item_id и item_name? 4. Передаётся ли currency?