Real-Time Analytics
Real-Time Analytics — встроенный счётчик веб-аналитики, который собирает данные о посетителях ваших сайтов в реальном времени и отображает их в личном кабинете.
Что отслеживается
| Категория | Данные |
|---|---|
| Страницы | URL, путь, заголовок, реферер |
| Посетитель | IP, страна, город, регион, часовой пояс, язык |
| Устройство | Тип (desktop/mobile/tablet), ОС, версия, браузер, разрешение экрана, пиксельная плотность, тач-поинты |
| Соединение | Тип (wifi/cellular/…), скорость |
| UTM | source, medium, campaign, content, term |
| Поведение | Глубина скролла (25/50/75/100%), время на странице, сессия |
| Производительность | Web Vitals: FCP, LCP, CLS, TTFB |
| Ошибки | JS-ошибки, unhandled promise rejection |
| Другое | Цветовая схема (light/dark), rage-click, отправка форм, видимость вкладки |
Установка
- Откройте раздел Реальное время в личном кабинете.
- Нажмите Добавить сайт, введите название и (опционально) домен.
- Скопируйте однострочный скрипт и вставьте его перед закрывающим тегом
</head>на вашем сайте:
html
<script src="https://back.tgio.app/rt/tracker.js?t=ВАШ_ТОКЕН" async></script>Сразу после установки данные начнут поступать в дашборд.
Дашборд
Дашборд обновляется в реальном времени через SSE-поток и автополинг каждые 15 секунд.
| Виджет | Описание |
|---|---|
| Online сейчас | Посетители за последние 5 минут |
| Событий за 30 мин | Все типы событий |
| Просмотры страниц | Pageview-события |
| Сессии | Уникальные сессии |
| Новые посетители | Первое посещение за 30 мин |
| Ошибки | JS-ошибки |
| Средний скролл | % прокрутки страницы |
| Среднее время | Секунды на странице |
| Web Vitals | FCP, LCP, CLS, TTFB (средние) |
| Live-лента | Поток событий в реальном времени |
| Топ страниц | Самые посещаемые URL |
| Источники | Реферреры |
| Устройства / Браузеры / ОС | Разбивка по платформам |
| Страны | Географическое распределение |
| UTM | Разбивка по utm_source |
| Языки | Языки браузера |
| Цветовая схема | light vs dark |
| Тип соединения | wifi / cellular / … |
API Endpoints
Публичные (без авторизации)
| Метод | Путь | Описание |
|---|---|---|
POST | /rt/event | Приём события от трекера (throttle 200 rps) |
GET | /rt/tracker.js?t=TOKEN | Отдача JS-трекера с вшитым токеном |
Авторизованные (требуют Bearer-токен)
| Метод | Путь | Описание |
|---|---|---|
GET | /rt/sites | Список сайтов пользователя |
POST | /rt/sites | Создать сайт |
DELETE | /rt/sites/:id | Удалить сайт |
POST | /rt/sites/:id/regenerate-token | Пересоздать токен трекера |
GET | /rt/live | Агрегированная статистика всех сайтов (30 мин) |
GET | /rt/live/:siteId | Статистика одного сайта |
GET | /rt/stream | SSE-поток событий (auth через query param ?auth=Bearer%20...) |
Формат события (POST /rt/event)
json
{
"token": "abc123...",
"type": "pageview",
"url": "https://example.com/page",
"path": "/page",
"referrer": "https://google.com",
"title": "Page Title",
"sessionId": "sess-uuid",
"visitorId": "vid-uuid",
"language": "ru",
"colorScheme": "dark",
"screenWidth": 1920,
"screenHeight": 1080,
"viewportWidth": 1440,
"viewportHeight": 900,
"pixelRatio": 2,
"touchPoints": 0,
"connectionType": "wifi",
"utmSource": "google",
"payload": { "fcp": 850 }
}Хранение данных
- События хранятся 7 дней.
- Очистка старых событий — автоматически каждый час (cron).
- Онлайн-метрика считается за последние 5 минут.
- Все агрегаты дашборда — за последние 30 минут.
Ограничения по тарифам
Функция доступна на всех тарифах. Лимит количества сайтов определяется планом пользователя (см. plan-limits.ts).
Безопасность
- Токен трекера используется только для записи событий — он не даёт доступа к данным.
- При компрометации токена его можно пересоздать через кнопку Regenerate Token или API
POST /rt/sites/:id/regenerate-token. - SSE-поток требует авторизации через query-параметр
auth(Bearer-токен личного кабинета).
Локальное тестирование
bash
# Отправить тестовое событие
curl -X POST http://localhost:3000/rt/event \
-H "Content-Type: application/json" \
-d '{"token":"ВАШ_ТОКЕН","type":"pageview","url":"http://localhost","path":"/","sessionId":"test-1","visitorId":"vis-1"}'
# Получить статистику (с авторизацией)
curl http://localhost:3000/rt/live \
-H "Authorization: Bearer ВАШ_JWT"