Trektik

Session Replay

Записывайте сессии, находите фрустрацию автоматически, храните до 90 дней. Как видеокамера для продукта — видите всё, что происходит, с уважением к приватности.

Видите, а не гадаете

Смотрите, что делает пользователь на самом деле. Как камера в магазине — видите путь покупателя.

Фрустрация видна сразу

4 типа фрустрации детектятся автоматически. Не нужно смотреть 1000 записей — система сама покажет проблемные.

Приватность по умолчанию

Пароли и ввод маскируются автоматически. Блокировка элементов через CSS-селекторы. 152-ФЗ и GDPR.

Как это работает

От записи до воспроизведения — четыре шага. Как видеонаблюдение: камера снимает, сервер хранит, вы смотрите.

1

SDK записывает сессию

TrektikReplay инициализирует rrweb. Каждое DOM-изменение попадает в буфер. Буфер flush-ится каждые 10 секунд или при 50 событиях. Максимальная длительность — 30 минут.

2

Чанки сжимаются и отправляются

Каждый чанк проходит через gzip (CompressionStream) и отправляется на POST /v1/replay/chunks. API-ключ в заголовке X-API-Key. Лимит 2 МБ на чанк.

3

Фрустрация детектится параллельно

TrektikFrustration слушает клики, ошибки и движения мыши. При обнаружении фрустрации — событие $frustration с типом, селектором и координатами.

4

Воспроизведение в плеере

GET /v1/replay/sessions/{session_id}/chunks — получаете все чанки. Плеер на rrweb-player воспроизводит DOM как видео. Timeline с событиями для навигации.

Как выглядит плеер

app.example.com/checkout
click
Оформить заказ
2:34 / 3:45
page_viewscroll 50%click: Каталог$frustration: dead_clickclick: Добавитьpage_view: /cartclick: Оформить

Пример плеера. Красные события — фрустрация (dead click). Данные демонстрационные.

Frustration Detection: 4 типа фрустрации

SDK автоматически ловит сигналы раздражения. Каждый тип — отдельное событие $frustration с координатами и селектором.

Rage Click

Триггер: 3+ кликов за 1 секунду на одном элементе

Значит: Пользователь злится — кнопка не работает или слишком медленная

Как стучать в закрытую дверь

Dead Click

Триггер: Клик без DOM-изменений за 500мс

Значит: Элемент выглядит кликабельным, но ничего не делает

Как нажимать на нарисованную кнопку

Error Click

Триггер: Клик + JavaScript-ошибка в течение 2 секунд

Значит: Действие пользователя вызывает баг

Как включить свет и получить короткое замыкание

Thrashed Cursor

Триггер: 3+ смены направления мыши за 500мс

Значит: Пользователь потерялся — не может найти нужный элемент

Как метаться по незнакомому городу

Все возможности

Запись через rrweb

Полная запись DOM-изменений: клики, скроллы, ввод, навигация. Не видеофайл, а лёгкий лог изменений — как стенограмма вместо видео. Воспроизводится в браузере один-в-один.

Gzip-сжатие чанков

Каждый чанк сжимается через CompressionStream перед отправкой. Размер трафика уменьшается в 3-5 раз. Как zip-архив — то же содержимое, меньше места. Лимит 2 МБ на чанк.

Маскирование ввода

maskTextInput: true по умолчанию — все текстовые поля маскируются. maskAllText — заменяет весь текст звёздочками. blockSelector — полностью скрывает элементы. Как матовое стекло — видно движение, не видно содержимое.

Frustration Detection (4 типа)

Rage clicks — 3+ кликов за 1 секунду на одном элементе. Dead clicks — клик без DOM-изменений за 500мс. Error clicks — клик, после которого JavaScript-ошибка. Thrashed cursor — хаотичное метание мыши. Каждый тип — событие $frustration.

Sampling Rate

Записываете не всех — только нужный процент. samplingRate: 50 запишет половину сессий. Решается один раз при инициализации. Как выборочная проверка на заводе — не каждую деталь, но достаточно для контроля качества.

Retention до 90 дней

Настраиваемый срок хранения через API: PUT /v1/replay/retention. По умолчанию 30 дней. Автоматическая очистка — ежедневный воркер удаляет просроченные чанки и сессии. Как холодильник с таймером — само выбрасывает просроченное.

Фильтрация сессий

Ищите по user_id, диапазону дат, фильтруйте по событиям. Нашли аномалию в аналитике — переходите к конкретным записям. Как детектив — от улики к записи камеры.

Чанковая архитектура

Запись разбита на чанки (до 50 событий или 10 секунд). Каждый чанк — отдельный POST /v1/replay/chunks. Плеер собирает чанки обратно. Как пазл — части приходят по отдельности, картинка собирается целиком.

API-эндпоинты

МетодЭндпоинтЧто делает
POST/v1/replay/chunksОтправить чанк записи (SDK)
GET/v1/replay/sessionsСписок записей (фильтр по user_id, дате)
GET/v1/replay/sessions/{id}/chunksВсе чанки для воспроизведения
GET/v1/replay/storageСтатистика хранилища (сессий, чанков, размер)
PUT/v1/replay/retentionНастроить retention (1-90 дней)
POST/v1/replay/cleanupРучная очистка просроченных записей

Trektik vs конкуренты

ВозможностьTrektikHotjarFullStory
Frustration Detection (4 типа)
Gzip-сжатие чанков
Маскирование ввода по умолчанию
Настраиваемый retention (API)
Sampling rate (% сессий)
Интеграция с аналитикой и heatmaps
Dead click + Error click detection
Thrashed cursor detection
Хранение данных в РФ
Единая платформа (analytics+replay+flags)

Когда что использовать

Пользователи бросают корзину — почему?

Отфильтруйте сессии с событием add_to_cart без purchase. Посмотрите 10 записей. Часто оказывается: кнопка «Оплатить» не видна на мобилке, или форма слишком длинная. 30 минут просмотра заменяют неделю гаданий.

Баг, который не воспроизводится?

Найдите сессии с $frustration: error_click. Увидите точную последовательность действий до ошибки. Как чёрный ящик самолёта — восстанавливаете события по записи.

Где пользователи «застревают» на странице?

Ищите $frustration: rage_click и dead_click. Эти события точно указывают на проблемные элементы — с координатами и CSS-селектором. Не нужно угадывать.

Хотим записывать только 10% сессий (экономия)?

samplingRate: 10 при инициализации TrektikReplay. Решение принимается один раз — пользователь либо записывается, либо нет. Retention: 30 дней по умолчанию, настройка через PUT /v1/replay/retention.

Увидьте своих пользователей глазами пользователей

Бесплатный тариф — до 1 000 записей в месяц. Frustration detection и 30 дней хранения включены.