Введение
Руководство пользователя
Использование Панели управления
Туториалы
Получение данных из других сервисов
Построение истории отдельного пользователя
Классические модели атрибуции
Вероятностное прохождение воронки
Атрибуция по индексу активности
Воронки
X
Выберите раздел

Сессии в Web-SDK

События группируются в сессии (визиты) прямо в браузере: сервер получает уже готовый номер сессии, её тип и метки в блоке sess каждого сообщения.

Сессия начинается с первого события и заканчивается, когда с последнего события прошло больше sessionTimeout секунд (по умолчанию 1800, то есть 30 минут). Временем завершения считается время последнего события. Сессию инициирует любое событие, не только просмотр страницы: достаточно activity от движения мыши, поэтому количество взаимодействий считается точнее.

Событие session

Старт сессии — тоже событие. Оно отправляется вместо события, которое его вызвало, а то уходит сразу следом. data у него пустой, всё описание в блоке sess. Отправить его принудительно можно вызовом rstat4('sessionEvent').

Поле sessОписание
numНомер сессии посетителя
startВремя старта сессии
pageNum, eventNumСчётчики страниц и событий внутри сессии
typeТип источника, см. ниже
engineПоисковая система или соцсеть, если распознана
refhostХост реферера без www
keywordПоисковый запрос, если движок передаёт его в реферере
marks, hasMarksРекламные метки из строки запроса и флаг их наличия
marksHashХеш набора меток, по нему определяется новая кампания

Когда сессия перезапускается

  1. По тайм-ауту: с последнего события прошло больше sessionTimeout.
  2. По новому значимому источнику. При каждом page SDK определяет источник, и сессия перезапускается досрочно, если:
    • источник campaign и набор рекламных меток отличается от прошлой сессии, либо изменился реферер;
    • источник partner и набор партнёрских меток отличается;
    • источник organic и реферер отличается от прошлой сессии.
  3. Принудительно вызовом 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.

Отличия от Google Analytics и Яндекс Метрики

В Rockstat есть внутренние сессии. Посетитель пришёл на сайт, отвлёкся, сессия завершилась по тайм-ауту, затем он вернулся и продолжил с того же места. GA засчитает ещё один визит с тем же каналом, что и предыдущий. Rockstat отметит его как internal, и источник прошлой сессии не будет учтён дважды. В Метрике внутренние визиты тоже есть, но алгоритм инициализации отличается.