События группируются в сессии (визиты) прямо в браузере: сервер получает уже готовый номер сессии,
её тип и метки в блоке sess каждого сообщения.
Сессия начинается с первого события и заканчивается, когда с последнего события прошло больше
sessionTimeout секунд (по умолчанию 1800, то есть 30 минут). Временем завершения считается время
последнего события. Сессию инициирует любое событие, не только просмотр страницы: достаточно
activity от движения мыши, поэтому количество взаимодействий считается точнее.
Старт сессии — тоже событие. Оно отправляется вместо события, которое его вызвало, а то уходит
сразу следом. data у него пустой, всё описание в блоке sess. Отправить его принудительно
можно вызовом rstat4('sessionEvent').
Поле sess | Описание |
|---|---|
num | Номер сессии посетителя |
start | Время старта сессии |
pageNum, eventNum | Счётчики страниц и событий внутри сессии |
type | Тип источника, см. ниже |
engine | Поисковая система или соцсеть, если распознана |
refhost | Хост реферера без www |
keyword | Поисковый запрос, если движок передаёт его в реферере |
marks, hasMarks | Рекламные метки из строки запроса и флаг их наличия |
marksHash | Хеш набора меток, по нему определяется новая кампания |
sessionTimeout.page SDK определяет источник, и сессия
перезапускается досрочно, если:
campaign и набор рекламных меток отличается от прошлой сессии, либо изменился реферер;partner и набор партнёрских меток отличается;organic и реферер отличается от прошлой сессии.rstat4('sessionEvent').Прямые входы, реферальные, социальные и внутренние переходы сессию не перезапускают: обновление страницы или возврат на сайт в пределах тайм-аута продолжают текущую сессию.
| Тип | Условие |
|---|---|
campaign | Есть UTM-метки, gclid или yclid, либо реферер — рекламная сеть (googlesyndication.com, googleadservices.com, doubleclick.net) |
partner | Есть партнёрские метки pid, cid, sub1…sub5 |
organic | Реферер — поисковая система без рекламных меток |
social | Реферер — соцсеть или мессенджер без рекламных меток |
referral | Реферер — любой другой сайт |
internal | Реферер — сам сайт, а сессия завершилась по тайм-ауту |
direct | Реферера нет |
webview | В строке запроса есть inWebView=1 — открытие внутри приложения |
Проверки идут в этом порядке приоритета: метки кампании перебивают классификацию по рефереру,
партнёрские метки перебивают кампанию, webview перебивает всё.
Распознаваемые движки: поиск — google, yandex, mailru, rambler, bing, yahoo,
nigma, duckduckgo; соцсети и мессенджеры — fb, instagram, tiktok, vk, ok,
telegram, twitter, linkedin, youtube. Для Яндекса, Mail.ru, Rambler, Bing и Yahoo
из реферера извлекается поисковый запрос в keyword.
В marks попадают utm_source, utm_campaign, utm_medium, utm_content, utm_term,
а также gclid, yclid, fbclid вместе с флагами has_gclid, has_yclid, has_fbclid.
fbclid отмечается, но тип campaign не навязывает: Facebook добавляет его ко всем исходящим
ссылкам. Значения меток декодируются из URL-кодировки, из нескольких одинаковых берётся первое.
Последняя рекламная кампания хранится lastCampaignExpires секунд (по умолчанию 90 дней).
Если в URL есть параметр uid, SDK примет его как идентификатор посетителя. Так можно связать
переход из письма или приложения с уже известным посетителем.
{
"name": "session",
"sess": {
"pageNum": 0, "eventNum": 0, "num": 2,
"type": "campaign",
"engine": "google",
"refhost": "google.com",
"marks": { "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "feb", "gclid": "Cj0K...", "has_gclid": 1 },
"hasMarks": true,
"marksHash": 184467440,
"start": 1757960000000
}
}
{
"name": "session",
"sess": {
"pageNum": 0, "eventNum": 0, "num": 2,
"type": "organic",
"engine": "yandex",
"refhost": "yandex.ru",
"keyword": "купить шторку для ванны",
"marks": {}, "hasMarks": false,
"start": 1757960000000
}
}
{
"name": "session",
"sess": {
"pageNum": 0, "eventNum": 0, "num": 2,
"type": "social",
"engine": "vk",
"refhost": "away.vk.com",
"marks": {}, "hasMarks": false,
"start": 1757960000000
}
}
{
"name": "session",
"sess": {
"pageNum": 0, "eventNum": 0, "num": 2,
"type": "partner",
"refhost": "partner-site.ru",
"marks": { "pid": "778", "sub1": "banner_top" },
"hasMarks": true,
"marksHash": 99124587,
"start": 1757960000000
}
}
{ "name": "session", "sess": { "type": "referral", "refhost": "2gis.ru", "marks": {}, "hasMarks": false, "num": 2 } }
{ "name": "session", "sess": { "type": "internal", "refhost": "example.com", "marks": {}, "hasMarks": false, "num": 3 } }
{ "name": "session", "sess": { "type": "direct", "refhost": "", "marks": {}, "hasMarks": false, "num": 2 } }
Под direct обычно понимают ввод адреса вручную или переход из закладок, но в реальности это
почти всегда переходы из приложений: мессенджеров, почтовых клиентов, QR-сканеров. Реферер в таких
переходах отсутствует. На Android иногда виден пакет приложения-источника, тогда реферер вида
android-app://org.telegram.messenger распознаётся как social с движком telegram, а
android-app://com.google.android.googlequicksearchbox — как organic с движком google.
В Rockstat есть внутренние сессии. Посетитель пришёл на сайт, отвлёкся, сессия завершилась по
тайм-ауту, затем он вернулся и продолжил с того же места. GA засчитает ещё один визит с тем же
каналом, что и предыдущий. Rockstat отметит его как internal, и источник прошлой сессии не будет
учтён дважды. В Метрике внутренние визиты тоже есть, но алгоритм инициализации отличается.