Документация
Web-SDK JavaScript API
Весь API — одна глобальная функция rstat4. Первый аргумент — имя метода, остальные — его
параметры. До загрузки библиотеки вызовы ставятся в очередь и возвращают 0; после загрузки
выполняются сразу и возвращают результат метода.
rstat4('<метод>', ...аргументы)
Отправка данных#
page — просмотр страницы#
rstat4('page', [data], [options])
Отправляет событие page с данными производительности в блоке perf и сбрасывает счётчики
трекеров (максимальная прокрутка и т.п.). Библиотека не отправляет его сама: вызывайте после
configure, а в SPA — при каждой смене маршрута.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
data | Object | {} | Любые данные о странице: тип, категория, идентификатор товара |
options | Object | {} | Опции доставки |
rstat4('page', { type: 'content', name: 'Контакты' });
rstat4('page', { type: 'category', id: '2342344', name: 'Товары для дома' });
event — произвольное событие#
rstat4('event', name, [data], [options])
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
name | String | Название события, характеризует что произошло | |
data | Object | {} | Произвольные данные события |
options | Object | {} | Опции доставки |
rstat4('event', 'add_to_cart', {
sku: 'A-100',
name: 'Шторка для ванны',
category: 'Товары для дома',
qty: 2
});
rstat4('event', 'popup_displayed', { type: 'discount', offer: 'personal_24h' });
identify — идентификация пользователя#
rstat4('identify', userId, [traits])
rstat4('identify', traits)
| Параметр | Тип | Описание |
|---|---|---|
userId | String, Number | Идентификатор пользователя из вашей базы |
traits | Object | Характеристики пользователя: тариф, сегмент, хеш email и т.п. |
userId и трейты сохраняются в хранилище браузера и добавляются в блок user каждого
последующего сообщения: user.id плюс ключи трейтов. Отдельное событие на сервер не уходит,
поэтому вызывать identify имеет смысл до page или сразу после логина.
rstat4('identify', 42, { plan: 'pro', email_hash: 'c8d1...' });
rstat4('identify', { segment: 'vip' }); // только трейты
request — запрос к сервису с ответом#
rstat4('request', service, name, [data]) → Promise<response>
| Параметр | Тип | Описание |
|---|---|---|
service | String | Название сервиса платформы |
name | String | Метод сервиса |
data | Object | Параметры, передаваемые сервису |
Всегда идёт через fetch, ответ разбирается как JSON. Промис отклоняется при сетевой ошибке
или тайм-ауте в 10 секунд. Повторных попыток нет, чтобы не дублировать побочные эффекты на сервере.
const offer = await rstat4('request', 'offers', 'get', { slot: 'hero' });
notify — уведомление сервиса без ответа#
rstat4('notify', service, name, [data])
То же, что request, но без ожидания ответа: уходит через sendBeacon.
sessionEvent — принудительное событие сессии#
rstat4('sessionEvent')
Отправляет событие session с текущими данными сессии.
Опции доставки#
Третий аргумент event и page — объект опций доставки:
| Опция | Описание |
|---|---|
request: true | Отправить через fetch и вернуть промис с ответом сервера |
transport_img: true | Отправить через пиксель-изображение |
outbound: true | Пометка клика по внешней ссылке, ставится автоматически в link_click |
Запись сессии#
record#
rstat4('record', [options])
Запускает запись сессии. Бандл rrweb-record.js загружается с сервера трекера только в этот момент.
options переопределяют trackRecord из конфигурации. Повторный вызов во время активной записи
игнорируется, вызов до инициализации откладывается до неё.
stopRecord#
rstat4('stopRecord')
rstat4('record', false)
Останавливает запись и отправляет остаток буфера. После остановки запись можно начать снова.
rstat4('record'); // старт
rstat4('record', { recordCanvas: true }); // старт с опциями
rstat4('stopRecord'); // стоп
Настройки маскирования описаны в конфигурации trackRecord.
Коллбеки#
onReady — библиотека инициализирована#
rstat4('onReady', function () {
const uid = rstat4('getUid');
dataLayer.push({ rstatUid: uid });
});
Если библиотека уже инициализирована, коллбек выполняется сразу.
onEvent — каждое событие до отправки#
rstat4('onEvent', function (name, data, options) { /* ... */ })
| Аргумент | Описание |
|---|---|
name | Имя события |
data | Данные события, переданные при создании |
options | Опции доставки |
Пример: некорректно заполненная форма доставки открывает чат с поддержкой.
rstat4('onEvent', function (name, data) {
if (name === 'field_invalid' && data.fname === 'delivery') {
setTimeout(function () {
SomeChat.open({ info: 'Проблемы с заполнением формы доставки' });
rstat4('event', 'chat_opened', { reason: 'invalid_delivery_form' });
}, 5000);
}
});
onMessage — полное сообщение в том виде, как оно уходит на сервер#
rstat4('onMessage', function (msg) {
console.log(msg.name, msg.sess, msg.page);
})
msg содержит все блоки из структуры события.
Подходит для отладки и собственных интеграций.
onInternalEvent — внутренние события библиотеки#
rstat4('onInternalEvent', function (name, data) { /* ... */ })
Имена: dom_loaded, before_unload, visibility_change.
onServerMessage — сообщения с сервера#
rstat4('onServerMessage', function (name, data) { /* ... */ })
Канал сервер → браузер (WebSocket) зарезервирован и в текущей версии не активен. Коллбек регистрируется, но вызовов не будет.
Утилиты#
| Метод | Описание |
|---|---|
rstat4('getUid') | Текущий uid посетителя. До инициализации — предупреждение и undefined, используйте внутри onReady |
rstat4('getSessNum') | Номер текущей сессии посетителя |
rstat4('getLibInfo') | { id: 'web-sdk', v, sv, st } — версия библиотеки числом (5.2.1 → 5002001), версия сниппета, время старта |
rstat4('isInitialized') | true после инициализации |
rstat4('buildProjectId', domain) | [domain, projectId] — нормализованный домен и его хеш, который используется как projectId по умолчанию |
rstat4('setCustomConfig', config) | Сохранить персональные переопределения конфигурации в хранилище браузера. Применяются при следующих загрузках |
rstat4('enableLogger') | Подробный лог в консоли. До загрузки библиотеки можно включить через window._rst4_logger = true |
rstat4('set', name, obj) | Положить объект в реестр библиотеки |
rstat4('buildProjectId', 'www.shop.example.com')
// → ['example.com', 1617632140]
rstat4('getLibInfo')
// → { id: 'web-sdk', v: 5002001, sv: 5002001, st: 1757960000000 }