Метрики
Метрики определяют, что именно измеряется в ваших виджетах. Metriox поддерживает четыре метрики, которые покрывают большинство аналитических сценариев.
Основные метрики
1. Events (События)
Подсчитывает общее количество событий.
Формула: COUNT(events)
Когда использовать:
- Общая активность в боте
- Частота выполнения действия
- Объём использования функции
Примеры:
| Вопрос | Метрика | Фильтр | Результат |
|---|---|---|---|
| Сколько раз нажали на кнопку «Купить»? | Events | Event equals "button_click" AND props.button_name equals "buy" | 1,542 события |
| Сколько сообщений отправлено за день? | Events | Event equals "message_sent" | 12,345 событий |
Особенности:
- Один пользователь может создать много событий
- Не показывает уникальность пользователей
- Полезна для измерения интенсивности использования
Виджеты:
- Series: динамика количества событий
- Top: самые частые события
- KPI: общее количество за период
- Table: детализация по категориям
2. Users (Пользователи)
Подсчитывает количество уникальных людей, которые сами что-то сделали за период.
Не считаются: получатели сообщений, отправленных ботом (рассылка не делает человека активным), сам бот и записи без определимого автора. В группе считается каждый писавший участник, а не группа целиком. Подробнее — Vitals.
Формула: COUNT(DISTINCT автор события), где автор берётся из $tg.from_id, а при его отсутствии — из platform_user_id
Когда использовать:
- Количество активных пользователей (DAU, MAU)
- Охват аудитории
- Уникальность действия
Примеры:
| Вопрос | Метрика | Фильтр | Временной диапазон | Результат |
|---|---|---|---|---|
| Сколько пользователей купили подписку? | Users | (prop) tg.callback_data (op) equals "purchase_completed" | — | 342 пользователя |
| DAU (Daily Active Users) | Users | любые события | выбранный вами диапазон | 3,542 пользователя |
| Активность пользователей | Events per User | любые события | последние 24 часа | 12,51 события на пользователя |
Особенности:
- Каждый пользователь считается только один раз
- Основа для расчёта конверсий
- Важна для оценки размера аудитории
Виджеты:
- KPI: активных пользователей
- Series: динамика DAU/MAU
- Funnel: конверсия между шагами
- Top: самые активные пользователи (по user_id)
3. Events per User (События на пользователя)
Вычисляет среднее количество событий на одного уникального пользователя.
Формула: COUNT(events) / COUNT(DISTINCT platform_user_id)
Когда использовать:
- Интенсивность использования
- Вовлечённость (engagement)
- Сравнение активности сегментов
Примеры:
| Вопрос | Метрика | Фильтр | Результат |
|---|---|---|---|
| Сколько в среднем сообщений отправляет пользователь? | Events per User | Event equals "message_sent" | 8.7 события на пользователя |
Особенности:
- Показывает глубину вовлечения
- Нормализует метрики между сегментами
- Может быть дробным числом
Виджеты:
- KPI: средняя активность
- Series: динамика вовлечения
- Table: сравнение сегментов
- Top: группы по активности
4. Sum (Сумма свойства)
Складывает значения одного числового свойства — например, сумму платежей.
Формула: SUM(значение свойства) по событиям одного источника
В отличие от остальных метрик, Sum требует указать два параметра:
- Свойство — какое числовое поле складывать, например
$tg.total_amount. В выпадающем списке показываются только числовые свойства: сумма по текстовому полю не выдала бы ошибку, она просто вернула бы ноль. - Источник — события какого именно источника учитывать (Bot API, MTProto-воркер, Mini App).
Почему источник обязателен. Если бот подключён и через SDK, и через MTProto-воркер, один и тот же платёж записывается дважды — это разные источники, и они не схлопываются в одну запись. Без привязки к одному источнику сумма денег удвоилась бы. Причём на боте с одним источником всё выглядело бы правильно, поэтому ошибку было бы почти невозможно заметить. Из-за этого сервер отклоняет запрос без указанного источника, а не подставляет значение по умолчанию.
Списывается такое событие один раз — но в хранилище остаются обе строки, именно чтобы отчёт, привязанный к одному источнику, находил свои данные. Дедупликация касается квоты, а не строк, поэтому указывать источник в денежных метриках по-прежнему обязательно.
Значения не преобразуются. Суммы возвращаются ровно в том виде, в каком их присылает Telegram — в
минимальных единицах (звёзды, копейки), без конвертации между валютами. Чтобы не смешивать валюты,
группируйте по $tg.currency: несколько корректных чисел полезнее одного бессмысленного.
Примеры:
| Вопрос | Метрика | Настройки | Результат |
|---|---|---|---|
| Сколько звёзд потратили за неделю? | Sum | $tg.total_amount, источник Bot API | 48 250 |
| Выручка по валютам | Sum | $tg.total_amount, группировка по $tg.currency | несколько строк |
Виджеты: Series, Top, Table, KPI. В Histogram и Heatmap метрика недоступна — там нечем задать свойство и источник, поэтому такой запрос отклоняется, а не считается молча по всем источникам.
Сравнение метрик
| Метрика | Что считает | Когда использовать |
|---|---|---|
| Events | Общее количество событий | Объём, частота, интенсивность |
| Users | Уникальные пользователи | Охват, DAU/MAU, конверсия |
| Events per User | Среднее событий на пользователя | Вовлечённость, engagement |
| Sum | Сумму числового свойства | Деньги, суммы заказов, любые числовые поля |
Пример сравнения
Событие button_click, период — 7 дней:
| Метрика | Значение |
|---|---|
| Events | 10,000 событий |
| Users | 2,500 пользователей |
| Events per User | 4.0 события на пользователя |
Интерпретация:
- Было 10,000 кликов
- Кликнули 2,500 уникальных пользователей
- В среднем каждый пользователь кликнул 4 раза
Применение в виджетах
Top виджет
Доступные метрики:
- Events — топ событий по частоте
- Users — топ событий по охвату
- Events per User — топ событий по вовлеченности
- Sum — топ по сумме числового свойства (например, выручка по валютам)
Пример — топ-5 событий по Users:
| Событие | Users |
|---|---|
bot_started | 3,542 пользователя |
screen_view | 2,987 пользователей |
button_click | 2,314 пользователей |
purchase_viewed | 1,234 пользователя |
message_sent | 876 пользователей |
Funnel виджет
Доступная метрика:
- Users (только)
Почему только Users?
- Воронка отслеживает путь пользователей
- События могут повторяться
- Конверсия измеряется в пользователях
Пример:
| Шаг | Пользователи | Конверсия |
|---|---|---|
1. bot_started | 10,000 | — |
2. view_pricing | 3,500 | 35% конверсия |
3. purchase_completed | 850 | 8.5% от начала |
Table виджет
Доступные метрики:
- Все четыре метрики одновременно
Пример:
| Событие | Events | Users | Events/User |
|---|---|---|---|
| button_click | 10,000 | 2,500 | 4.0 |
| screen_view | 15,000 | 3,000 | 5.0 |
| message_sent | 8,000 | 1,000 | 8.0 |
KPI виджет
Доступные метрики:
- Любая одна метрика
Примеры:
| Показатель | Значение | Изменение | Метрика |
|---|---|---|---|
| DAU | 3,542 | ↑ 8% к вчерашнему дню | Users |
| Средняя активность | 12.7 событий/польз. | ↑ 5% к прошлой неделе | Events per User |
Histogram виджет
Доступные метрики:
- Events
- Users
Метрика Sum здесь недоступна: у Histogram нет места, где задать свойство и источник.
Пример — распределение активности по часам суток с метрикой Users.
Series виджет
Доступные метрики:
- Все четыре метрики (можно несколько линий)
Практические примеры
DAU, WAU, MAU
| Показатель | Метрика | Фильтр | Временной диапазон |
|---|---|---|---|
| DAU (Daily Active Users) | Users | любые события | сутки |
| WAU (Weekly Active Users) | Users | любые события | неделя |
| MAU (Monthly Active Users) | Users | любые события | месяц |
На странице Vitals эти три показателя считаются за последний завершённый календарный день, неделю и месяц, а не за скользящие 24 часа / 7 / 30 дней. В собственном виджете диапазон задаёте вы.
Конверсия в покупку
Воронка по метрике Users:
| Шаг | Пользователи | Доля от начала |
|---|---|---|
1. bot_started | 10,000 | 100% |
2. view_pricing | 3,500 | 35% |
3. purchase_completed | 850 | 8.5% |
Конверсия = 850 / 10,000 = 8.5%
Engagement метрики
Среднее количество экранов на пользователя:
| Метрика | Фильтр | Результат |
|---|---|---|
| Events per User | Event equals "screen_view" | 7.2 экрана на пользователя |
Сравнение активности premium vs free:
| Сегмент | Events | Users | Events/User |
|---|---|---|---|
| Premium | 5,000 | 250 | 20.0 |
| Free | 8,000 | 2,000 | 4.0 |
Premium-пользователи в 5 раз активнее.
Retention анализ
Количество возвращающихся пользователей:
| Метрика | Фильтр | Временной диапазон |
|---|---|---|
| Users | props.days_since_signup greater than 7 | последние 24 часа |
Результат:
| Период | Пользователи |
|---|---|
| День 0 | 1,000 новых пользователей |
| День 7 | 350 активных (35% retention) |
Лучшие практики
Выбор метрики
Events:
- Сколько раз выполнено действие
- Общий объём активности
- Не подходит для подсчёта пользователей
Users:
- Сколько пользователей выполнило действие
- DAU, MAU, охват
- Воронки конверсии
- Не показывает интенсивность использования
Events per User:
- Насколько активны пользователи
- Сравнение вовлечённости сегментов
- Изменение поведения во времени
- Может искажаться при малом количестве пользователей
Комбинирование метрик
Используйте несколько метрик для полной картины:
- KPI-дашборд
- DAU (Users)
- Общая активность (Events)
- Средняя активность (Events per User)
- Series-график
- Линия 1 — Users (масштаб слева)
- Линия 2 — Events per User (масштаб справа)
Интерпретация результатов
- Events растут, Users стабильны — существующие пользователи стали активнее
- Users растут, Events per User падает — приток новых, менее активных пользователей
- Events и Users растут пропорционально — здоровый рост продукта
Технические детали
Вычисление в ClickHouse
Events:
SELECT COUNT(*) FROM events WHERE ...
Users:
SELECT COUNT(DISTINCT platform_user_id) FROM events WHERE ...
Events per User:
SELECT
COUNT(*) / COUNT(DISTINCT platform_user_id)
FROM events WHERE ...
Производительность
- Events: самая быстрая метрика
- Users: требует дедупликации (медленнее)
- Events per User: две операции (самая медленная)
Оптимизация:
- Используйте фильтры для уменьшения объёма данных
- Ограничивайте временной диапазон
- Кешируйте часто используемые запросы