惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
J
Java Code Geeks
有赞技术团队
有赞技术团队
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
G
Google Developers Blog
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
腾讯CDC
V
Visual Studio Blog
博客园 - 【当耐特】
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
L
LangChain Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром T-TOPS: Как распутать гордиев узел проекта после выхода в прод (меч не понадобится) Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты
Карта событий как фундамент аналитики: практический кейс ...
2026-04-15 · via Все публикации подряд на Хабре

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

Предыстория

Изначально для передачи событий в системы аналитики использовался Google Tag Manager (GTM). Однако из-за изменений в законодательстве и требований безопасности заказчика было решено перейти на Яндекс Тег Менеджер (YTM). Также мы рассматривали Matomo Tag Manager, но установка на сервер и настройка показались лишними.

При внедрении Яндекс Тег Менеджера мы столкнулись с ограничением: на тот момент сервис не поддерживал передачу переменных, поэтому мы не могли передавать ID и стоимость товаров. А это был важный момент, так как одной из задач являлось внедрение электронной торговли Яндекс Метрики.

Поэтому в итоге мы выбрали комбинированную схему с привлечением разработчиков.

Процесс внедрения у нас выглядел следующим образом:

  1. Составил карту событий Написал ТЗ на кастомные события разработчикам

  2. Далее разработчики настроили кастомные события и передали их в dataLayer.

  3. После этого я подготовил дополнительное ТЗ для внедрения Электронной торговли Яндекс Метрики.

  4. На следующем шаге проверил реализованные события

  5. И уже дальше через Яндекс Тег Менеджер (YTM) по событиям из dataLayer настроил передачу нужных событий в Яндекс Метрику.

Конечно, технически передать цели в Яндекс Метрику можно как напрямую из кода сайта, так и с использованием тег-менеджеров, минуя dataLayer.

Однако в нашем случае такой подход оказался менее надёжным. Сайт был реализован на JavaScript, и тег-менеджер не всегда корректно отслеживал пользовательские действия. Кроме того, как я упоминал ранее, на тот момент Яндекс Тег Менеджер был ещё достаточно сырым и имел ограничения в работе с переменными.

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

Алгоритм разработки карты событий

Проработка структуры карты событий

На первом этапе я начал определять структуру будущей карты событий.

Для этого создал таблицу (Google Sheets), в которой фиксировал:

  • Категорию событий

  • Описания событий

  • Логику срабатывания

  • Так же фиксировал куда передаётся событие (например, Яндекс Метрика или datalayer)

  • Проставлял статусы: где событие уже фиксируется а где еще нет

Эта информация очень помогла на этапах:

  • Тестирования событий

  • Постановки ТЗ разработчикам

Аудит точек касания

На этом этапе я провел анализ сайта:

  • Изучил страницы, разделы и пользовательские сценарии

  • Проанализировал формы, виджеты и элементы интерфейса

  • Оформил несколько тестовых заказов с целью изучения логики процесса оформления, отправки форм и их расположения по разделам сайта

Все это помогло понять:

  • Какие формы существуют

  • В какой момент они и отправляются

  • Зафиксировать полученную информацию в карте событий

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

Составление списка событий

В результате изучения и тестирования сайта я составил список целевых действий / событий и зафиксировал их в карте.

При составлении списка событий я старался придерживаться нескольких принципов:

  • Использовать понятные и логичные названия

  • Придерживаться единого стиля именования событий

  • При необходимости использовал переводчик или транслит

Пример:

  • view_catalog_1

  • fast_order_send

Главное чтобы названия были читаемыми и понятными участникам проекта.

Результат

В результате я получил карту событий в виде таблицы (пример ниже). Она позволяет:

  • Фиксировать настроенные события

  • Взаимодействовать с разработчиками

  • Тестировать аналитику

  • Не путаться в том, что уже настроено, а что нет

Эта таблица станет основой для постановки задач разработчикам и настройки аналитики.

Категория события

Описание

Активация

Event_Name Метрика

Фиксируется в Метрике

Название в Метрике

Передается в DataLayer

Событие в DataLayer

Каталог / подкаталог 1

Просмотр каталога 1

Активация в момент просмотра каталога 1 и всех подкатегорий

view_catalog_1

Да

Просмотр каталога 1

Да

view_catalog_1

Каталог / подкаталог 2

Просмотр каталога 2

Активация в момент просмотра каталога 2

view_catalog_2

Да

Просмотр каталога 2

Да

view_catalog_2

Каталог / подкаталог 3

Просмотр каталога 3

Активация в момент просмотра каталога 3

view_catalog_3

Да

Просмотр каталога 3

Да

view_catalog_3

Форма быстрого заказа (открыли форму)

Открытие формы быстрого заказа

Активация в момент открытия формы (Быстрый заказ)

fast_order_open

Да

Форма быстрого заказа (открыли)

Да

fast_order_open

Форма быстрого заказа (отправили)

Отправка формы быстрого заказа

Активация в момент успешной отправки формы (Быстрый заказ)

fast_order_send

Да

Форма быстрого заказа (отправили)

Да

fast_order_send

Корзина

Добавить в корзину

Активация после успешного добавления товара в корзину

basket_step_1

Да

Добавить в корзину

Да

basket_step_1

Корзина

Начало оформления заказа

Активация после того как пользователь начал оформлять заказ

basket_step_2

Да

Начало оформления заказа

Да

basket_step_2

Корзина

Успешное оформление заказа

Активация после успешного оформления заказа

basket_step_2

Да

Успешное оформление заказа

Да

basket_step_3

Ecommerce (ЕТ)

Просмотр товара

Активация в момент открытия страницы с карточкой товара

Да

Да

detail

Ecommerce (ЕТ)

Добавление товара в корзину

Активация в момент добавления заказа в корзину

Да

Да

add

Ecommerce (ЕТ)

Удаление товара из корзины

Активация в момент удаления заказа из корзины

Да

Да

remove

Ecommerce (ЕТ)

Покупка

Активация в момент подтверждения заказа

Да

Да

purchase

Теперь можно приступать в подготовке технического задания для разработчиков.

Пример ТЗ для разработчиков

Подготовка ТЗ для разработчиков (кастомные события)

Далее я создал документ (Google Docs) с возможностью комментирования.

В документе я описал:

  • Что нужно реализовать.

  • Зачем это нужно.

  • Список событий.

  • Логика их вызова.

  • Пример кода.

Пример описания:
Для передачи информации о целевых действиях пользователя на сайте необходимо реализовать отправку событий в dataLayer с использованием метода dataLayer.push().

Пример событий:

Просмотр каталога 1
Событие: view_catalog_1
Срабатывает при просмотре каталога 1 и всех его подкатегорий.

dataLayer.push({
  event: 'view_catalog_1'
});


Форма быстрого заказа (успешная отправка)
Событие: fast_order_send
Срабатывает при успешной отправке формы.

dataLayer.push({
  event: 'fast_order_send'
});

Таким образом я описал все необходимые события.

Важно: Часть событий может дублироваться с событиями электронной торговли, поэтому для ЕТ Метрики необходимо отдельное техническое задание.

Подготовка ТЗ для электронной торговли (Ecommerce)

Тут я так же создал отдельный документ (Google Docs), в котором указал:

  • Что нужно реализовать.

  • Зачем это нужно.

  • Список событий.

  • Логика их вызова.

  • Пример кода.

Пример описания:
Необходимо настроить передачу данных с сайта в электронную торговлю («Ecommerce») Яндекс Метрики. Это даст возможность собирать и анализировать следующие метрики:

  • Анализировать товары, заказы и суммы продаж.

  • Рассчитывать средний чек.

  • Отслеживать конверсии в целевые действия.

  • Определять популярные товары, частоту добавлений в корзину и совершенные покупки

Для внедрения необходимо:

  • Включить опцию «Электронная коммерция» в настройках счётчика.

  • После включения опции обновить код счётчика (если используется старая версия).

  • Настроить передачу данных через dataLayer.

Важно соблюдать формат данных для Яндекс Метрики. Подробные требования к структуре Ecommerce-объектов и описание всех полей приведены в официальной справке: https://yandex.ru/support/metrica/ru/ecommerce/data

Основные поля которые необходимо использовать.
products — список товаров
id — ID товара
name — название
price — цена
brand — бренд
category — категория

Пример события:

Просмотр товара
Событие: detail
Активация в момент открытия карточки товара

javascript
dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    detail: {
      products: [
        {
          id: "P15432",
          name: "Футболка",
          price: 477.60,
          brand: "Яндекс",
          category: "Одежда / Мужская одежда / Футболки",
          variant: "Красный",
          list: "Результаты поиска",
          position: 1
        }
      ]
    }
  }
});

Сложности с которыми столкнулся в процессе

Некорректный вызов события purchase

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

Путаница с параметрами события для электронной торговли

В процессе настройки передачи данных в электронную торговлю, разработчики заменили название параметров id, name и тд на собственные item.id, item.name а так же изменили структуру объекта ecommerce. Это привело к тому что Яндекс Метрика не смогла корректно принимать данные в Электронную Торговлю и параметры заказов были недоступны в отчетах. Таким образом как я уже писал выше, для ecommerce-событий необходимо соблюдать формат передачи данных указанный в справке Яндекс Метрики. В результате мы исправили наименования параметров, скорректировали структуру объекта ecommerce и все заработало.

P.S.

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