MaryProject
Верейская улица, 17 121357 Москва,
+74950155855, info@maryproject.ru
SEO продвижение
сайтов

Уровень данных dataLayer в Google Tag Manager как построить надежную аналитику

Марина Лыкова
Опубликовано 26.10.26
Обновлено 26.10.26
Опубликовано 26.10.26
Обновлено 26.10.26

Содержание статьи:

  1. Зачем сайту отдельный уровень данных
  2. Как dataLayer работает вместе с Google Tag Manager
  3. Проектирование измерений до написания кода
  4. Какие данные передавать
  5. Правила устойчивой структуры
  6. Настройка переменных триггеров и тегов
  7. Особенности интернет магазинов и одностраничных приложений
  8. Проверка внедрения
  9. Ошибки которые искажают отчеты
  10. Порядок внедрения и поддержки

Счетчик может быть установлен правильно, а отчеты все равно будут расходиться с реальными продажами. Частая причина — сайт передает в систему аналитики неполные, несогласованные или преждевременные данные. dataLayer решает эту проблему: он создает контролируемый канал между логикой сайта и маркетинговыми тегами.

В статье разберем dataLayer как часть измерительной архитектуры бизнеса: какие события описывать, как согласовать структуру данных с разработкой, где возникают потери и как принять внедрение до публикации контейнера.

Схема передачи событий сайта через уровень данных в системы веб аналитики

Для кого эта статья

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

Зачем сайту отдельный уровень данных

Без dataLayer аналитика нередко извлекает сведения прямо из интерфейса: текста кнопок, CSS-классов, адресов страниц или элементов корзины. Такая настройка работает до первого заметного изменения верстки. После переименования кнопки или перестройки компонента событие исчезает, начинает срабатывать дважды либо получает неверный параметр.

Уровень данных отделяет бизнес-событие от внешнего вида страницы. Сайт сообщает, что произошло: заявка успешно создана, товар добавлен в корзину, заказ оплачен. Контейнер тегов решает, куда передать это сообщение. Благодаря такому разделению дизайн можно менять без постоянной переделки измерений, а одно событие использовать для нескольких систем.

Для бизнеса это дает три практических результата:

  • отчеты опираются на состояние системы, а не на косвенные признаки в интерфейсе;
  • разные рекламные и аналитические платформы получают согласованные значения;
  • ошибку легче локализовать: отдельно проверяются сайт, dataLayer, контейнер и конечная система.

dataLayer не исправляет слабый план аналитики. Если команда не определила, что считать лидом, покупкой или качественным обращением, технически безупречная передача лишь закрепит спорную логику.

Как dataLayer работает вместе с Google Tag Manager

На веб-странице dataLayer обычно представляет собой массив JavaScript. Сайт помещает в него объекты с событиями и параметрами. Google Tag Manager последовательно обрабатывает сообщения: распознает ключ event, обновляет доступные значения, проверяет триггеры и при выполнении условий запускает теги.

Базовая инициализация выполняется до загрузки контейнера:

window.dataLayer = window.dataLayer || [];

После этого новые сообщения добавляются методом push. Переопределять массив после загрузки контейнера нельзя: вместе со старым объектом можно потерять ранее переданные сведения и механизм обработки событий.

window.dataLayer.push({​
event: 'lead_success',
form_id: 'consultation',
page_type: 'service'
});

Ключ event задает момент, к которому должны привязываться теги. Остальные поля описывают контекст. Лучше отправить событие после подтвержденного результата — например, после успешного ответа сервера, — чем считать конверсией нажатие на кнопку. Клик показывает намерение, но не доказывает, что заявка создана.

Проектирование измерений до написания кода

Работа начинается не с интерфейса GTM, а с карты измерений. Команда описывает путь пользователя и выбирает действия, которые влияют на управленческие решения. Если показатель не будут анализировать, использовать в рекламе или контролировать при тестировании, его не стоит включать только ради полноты.

Сформулируйте бизнес вопрос

Каждое событие должно отвечать на конкретный вопрос. Например: какие формы дают квалифицированные заявки, на каком шаге пользователи покидают оформление заказа, какие категории участвуют в продажах, насколько часто внутренний поиск заканчивается просмотром товара.

Опишите событие независимо от интерфейса

Название btn_click_red удобно написать, но оно связано с цветом и элементом. Название request_submitted описывает смысл действия и переживет изменение дизайна. Интерфейсные клики можно собирать как диагностические сигналы, но основные конверсии лучше привязывать к завершенному бизнес-процессу.

Создайте спецификацию

Для каждого события фиксируют момент отправки, обязательные и необязательные параметры, типы значений, допустимые варианты, источник данных и сценарий проверки. Спецификация становится договором между маркетингом, аналитикой и разработкой. Без нее одинаковые сущности быстро получают разные названия, а изменения внедряются без контроля совместимости.

Какие данные передавать

Контекст страницы

Для анализа полезны тип страницы, раздел, язык, региональная версия и идентификатор материала или товара. Эти параметры лучше получать из системы управления сайтом, а не вычислять по заголовку или URL внутри контейнера.

window.dataLayer.push({​
event: 'page_context_ready',
page_type: 'service',
page_category: 'analytics',
content_id: 'service_042'
});

Действия пользователя

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

Лиды и формы

Событие успешной заявки должно появляться только после того, как система приняла данные. В параметры можно добавить идентификатор формы, тип обращения, категорию услуги и обезличенный номер заявки. Номер телефона, адрес электронной почты, имя, свободный комментарий и другие персональные сведения передавать в аналитические и рекламные теги нельзя.

window.dataLayer.push({​
event: 'lead_success',
form_id: 'price_request',
lead_type: 'estimate',
request_id: 'REQ-58341'
});

Электронная торговля

Для интернет-магазина важна единая цепочка событий: просмотр списка, выбор товара, просмотр карточки, добавление в корзину, начало оформления и покупка. Названия и параметры следует сопоставить с рекомендованной моделью той аналитической системы, куда уйдут данные. Это позволяет использовать готовые отчеты и снижает объем нестандартной настройки.

При покупке особенно нужны уникальный идентификатор транзакции, валюта, итоговая сумма и массив товаров. Уникальный transaction_id помогает распознавать повторную отправку одной покупки, например при обновлении страницы подтверждения.

window.dataLayer.push({​
event: 'purchase',
ecommerce: {​
transaction_id: 'ORDER-10458',
value: 18490,
currency: 'RUB',
items: [{​
item_id: 'SKU-317',
item_name: 'Product name',
price: 18490,
quantity: 1
}]
}
});

Внутренний поиск и ошибки

Поиск по сайту показывает сформированный спрос, а технические ошибки объясняют разрывы в воронке. Можно передавать обезличенный поисковый запрос, число найденных результатов, тип ошибки и этап процесса. Не включайте содержимое полей, в которых пользователь способен случайно указать персональные или конфиденциальные данные.

Правила устойчивой структуры

Согласуйте словарь имен

Выберите один стиль — например, snake_case — и применяйте его ко всем собственным событиям и параметрам. Регистр имеет значение: formId и formid воспринимаются как разные ключи. Словарь должен объяснять не только написание, но и смысл каждого поля.

Сохраняйте типы данных

Цена должна оставаться числом, количество — целым числом, логический признак — значением true или false. Если в одном событии сумма передается числом, а в другом строкой с пробелом и обозначением валюты, агрегация и проверка усложняются. Форматирование для человека выполняют в отчетах, а dataLayer хранит машинно обрабатываемые значения.

Передавайте событие и его контекст одним сообщением

Если сначала отправить параметры, а затем отдельный event, между сообщениями может возникнуть другое действие или измениться состояние приложения. Самодостаточный объект проще тестировать и безопаснее использовать. Он показывает, какие значения относятся к конкретному событию.

Не используйте dataLayer как постоянную базу

Уровень данных — канал обмена для текущей страницы или сессии интерфейса, а не долговременное хранилище. Значения, которые нужны после перехода, сайт должен заново сформировать из надежного источника. При необходимости очистки ранее заданных полей правила нужно описать явно, иначе старый товар, категория или статус могут попасть в следующее событие.

Версионируйте изменения схемы

Добавление необязательного параметра обычно не ломает текущую настройку. Переименование события, изменение типа или перенос поля во вложенный объект может нарушить теги и отчеты. Существенные изменения сначала проверяют в тестовой среде, затем синхронно обновляют сайт, контейнер и документацию.

Настройка переменных триггеров и тегов

После реализации на сайте для нужных ключей создают переменные уровня данных. Если значение вложено, путь указывают через точки, например ecommerce.transaction_id. Затем настраивают триггер пользовательского события с точным именем из спецификации и связывают его с тегом.

Логика должна быть прозрачной:

1. Сайт фиксирует подтвержденное действие и выполняет dataLayer.push.

2. GTM получает сообщение и делает параметры доступными переменным.

3. Триггер проверяет имя события и дополнительные условия.

4. Тег формирует запрос в аналитическую или рекламную систему.

5. Система принимает событие и отображает его в диагностическом отчете.

Не стоит переносить в контейнер бизнес-логику, которой уже владеет сервер или приложение. GTM удобен для маршрутизации и преобразования данных, но он не должен угадывать, был ли заказ действительно создан или оплачен.

Согласие пользователя и защита данных

dataLayer может хранить техническое сообщение о выборе пользователя, однако сам по себе не заменяет механизм управления согласием. Порядок загрузки и работы тегов должен соответствовать применимым требованиям и настройкам платформ. Состояние согласия задают до отправки событий, которым оно необходимо, а изменение выбора пользователя корректно обновляют.

Минимизируйте состав передаваемых сведений. Для сегментации чаще достаточно категории клиента или обезличенного идентификатора. Не помещайте в dataLayer секреты, платежные реквизиты, медицинские сведения, содержимое обращения и данные, по которым человека можно прямо определить.

Особенности интернет магазинов и одностраничных приложений

Интернет магазины

Основной риск электронной торговли — устаревшее состояние ecommerce. Товар из предыдущего просмотра может перейти в следующее событие, а покупка — отправиться повторно после перезагрузки. Каждый объект должен собираться из актуальных данных операции. Для purchase нужна защита от повторов на стороне приложения или сервера, а не только условие в контейнере.

Также заранее определяют правила расчета value: входит ли доставка, как учитывается скидка, какая цена передается на уровне товара. Один и тот же показатель должен рассчитываться одинаково на всех шагах, иначе сумма корзины и выручка перестают сопоставляться.

Одностраничные приложения

В SPA переход между экранами часто происходит без полной перезагрузки документа. Поэтому обычного запуска контейнера при первом открытии недостаточно. Приложение должно отправлять событие виртуального просмотра после завершения маршрутизации и подготовки нового контента. Одновременно обновляются адрес, заголовок, тип страницы и другие параметры контекста.

События компонентов также привязывают к подтвержденному изменению состояния. Если интерфейс повторно монтирует блок, один пользовательский жест может вызвать несколько обработчиков. Дубли выявляются только при тестировании полной последовательности действий, а не одной кнопки в изоляции.

Проверка внедрения

Приемка должна идти по цепочке от сайта до отчета. Успешный push в консоли еще не означает, что тег сработал, запрос ушел и конечная система приняла параметры.

1. Откройте тестовый сценарий и зафиксируйте ожидаемые события в правильном порядке.

2. Проверьте в инструментах разработчика содержимое каждого объекта: имена, типы, обязательные поля и отсутствие персональных данных.

3. В режиме предварительного просмотра GTM убедитесь, что событие появилось один раз, а переменные получили нужные значения именно в этот момент.

4. Проверьте условия триггера и список тегов: какие сработали, а какие были заблокированы.

5. В сетевых запросах подтвердите отправку и отсутствие явной технической ошибки.

6. Проверьте событие в диагностическом или отладочном отчете конечной системы.

7. Повторите сценарий для разных устройств, способов навигации, вариантов формы, отказа сервера и изменения согласия.

Отдельно тестируют негативные сценарии. Невалидная форма, отказ платежа или ошибка API не должны создавать успешную конверсию. Повторный клик не должен умножать заявки, если сервер создал только одну запись.

Ошибки которые искажают отчеты

Переопределение массива. Конструкция window.dataLayer = [] после загрузки GTM разрывает установленную связь и может привести к потере событий. Используйте существующий массив и метод push.

Конверсия по клику. Кнопка нажата, но форма не прошла проверку или сервер вернул ошибку. Для основной цели используйте событие подтвержденного успеха.

Разные названия одного параметра. leadType, lead_type и type_of_lead создают несколько несовместимых полей. Единый словарь и автоматические проверки предупреждают расхождение.

Смешение чисел и строк. Значения '18 490 руб.' и 18490 нельзя безусловно использовать как один показатель. Передавайте число и отдельный код валюты.

Дубли событий. Повторная отправка возникает из-за нескольких обработчиков, перезагрузки страницы благодарности или одновременной настройки через код и GTM. Проверяйте источник и используйте уникальные идентификаторы операций.

Зависимость от DOM. Считывание названия товара или цены из верстки ломается при редизайне и может брать уже округленное значение. Передавайте данные из модели приложения.

Отсутствие владельца схемы. Разработчик меняет поле, аналитик узнает об этом после падения отчетов, маркетолог продолжает оптимизировать рекламу по неполным данным. Нужны ответственный, журнал изменений и регламент приемки.

Порядок внедрения и поддержки

1. Определите бизнес-вопросы и ключевые этапы воронки.

2. Проведите инвентаризацию уже работающих счетчиков, целей и событий.

3. Составьте список событий без привязки к цветам, кнопкам и текущей верстке.

4. Для каждого события задайте момент отправки, параметры, типы и допустимые значения.

5. Исключите персональные, конфиденциальные и лишние данные.

6. Согласуйте спецификацию с маркетингом, аналитикой и разработкой.

7. Реализуйте передачу из надежных источников приложения или сервера.

8. Настройте переменные, триггеры и теги в тестовом контейнере.

9. Проверьте положительные, отрицательные и повторные сценарии.

10. Опубликуйте изменения и отметьте версию схемы и контейнера.

11. Сверьте события с заявками, заказами и оплатами в учетных системах.

12. Включите проверку аналитики в приемку релизов, затрагивающих формы, корзину и навигацию.

Что контролировать после запуска

  • резкие изменения числа событий при стабильном трафике;
  • долю событий без обязательных параметров;
  • соотношение кликов, успешных заявок и записей в CRM;
  • повторные transaction_id и request_id;
  • значения undefined, пустые строки и неожиданные типы;
  • расхождение выручки с учетной системой;
  • изменения схемы после релизов сайта.

Краткие выводы

Надежный dataLayer начинается с модели бизнеса, а не с настройки тегов. Сайт должен передавать подтвержденные события и их контекст в согласованном формате, GTM — направлять эти данные в нужные системы, а команда — проверять всю цепочку до конечного отчета.

Основные принципы просты: не считывать критичные данные из верстки, не переопределять массив, не смешивать типы, не отправлять персональные сведения и не считать клик готовой конверсией. Спецификация, тестовая среда и регулярная сверка с CRM превращают уровень данных из технической детали в устойчивую основу маркетинговой аналитики.

Узнайте стоимость продвижения
SEO, PPC, CRO, SERM!

Другие статьи автора

Закажите продвижение
Мы с Вами обязательно свяжемся!

Оставить заявку

Наш менеджер свяжется с вами в ближайшее время

Откликнуться на вакансию

Наш менеджер свяжется с вами в ближайшее время

Заказать звонок

Наш менеджер свяжется с вами в ближайшее время

На нашем сайте мы используем cookie-файлы и рекомендательные технологии.