Перейти к основному содержимому

Установка Web SDK вручную

Краткое содержание

Для передачи данных о поведении пользователя в МТС Аналитику необходимо настроить поток данных через библиотеку SDK. Рекомендуется использовать этот способ, если невозможно использовать МТС Тег.

Шаг 1. Настроить код SDK
Код библиотеки включает возможность добавления плагинов и конфигурации. Пример кода:

<script>
(function (sdk) {
window[sdk] = window[sdk] || function () {
(window[sdk].a = window[sdk].a || []).push(arguments);
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://static.a.mts.ru/web-sdk/analytics.js?name=' + sdk;
document.head.appendChild(script);
})('ma');
ma('create', { id: '<FlOW_ID>' });
</script>
  • FLOW_ID — обязательный идентификатор потока. Если его нет, запросите у support@mts.ru.
  • Имя переменной ma можно заменить на другое (например, mm).

Инициализация и конфигурация библиотеки
При инициализации SDK задается конфигурация:

ma('create', config);  

Свойства объекта config

  • id — обязательный параметр, идентификатор потока (тип: string).
  • batching — объединение событий в JSON-файл. Возможные значения: true, false, или объект с настройками time и count.
  • ecommerce — включение слоя данных dataLayer для событий электронной коммерции (тип: boolean или string).
  • sendMethod — метод отправки данных: auto, beacon, xhr, double.
  • outQueue — настройка очереди для сохранения событий при проблемах с сетью.
  • sendPageView — автоматическая отправка событий pageview (по умолчанию: true).
  • trackBounce — отслеживание отказов (по умолчанию: 15 секунд).
  • plugins — список плагинов для расширения функционала.

Команды для настройки отправки событий
В статье приведена пошаговая инструкция по настройке команд для отправки событий.

Плагины для расширения функционала SDK
Дополнительно можно подключить плагины: dataLayer, linker, performance, error.

  • dataLayer — отслеживание событий из слоя данных.
  • linker — настройка междоменного связывания сессий.
  • performance — сбор метрик производительности страниц.
  • error — автоматическая отправка ошибок JavaScript.

Шаг 2. Перенести код SDK на сайт
Скопируйте код и добавьте его в HTML-разметку сайта. Пример:

<script>
(function (sdk) {
window[sdk] = window[sdk] || function () {
(window[sdk].a = window[sdk].a || []).push(arguments);
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://static.a.mts.ru/web-sdk/analytics.js?name=' + sdk;
document.head.appendChild(script);
})('ma');

ma('create', {
id: '11111111-1111-1111-1111-111111111111',
sendPageView: false,
plugins: [{ name: 'dataLayer' }],
});
</script>

Код должен быть добавлен в раздел <head> или <body>.

Для передачи данных о поведении пользователя в МТС Аналитику необходимо настроить поток данных через библиотеку SDK.

Важно

Вы не сможете обновлять код SDK через МТС Аналитику и видеть текущий статус потока. Рекомендуем устанавливать библиотеку таким способом, если нет возможности использовать МТС Тег.

Как установить SDK через МТС Тег

Шаг 1. Настроить код SDK

Код библиотеки, в который при необходимости можно добавить плагины и конфигурации

<script>
(function (sdk) {
window[sdk] = window[sdk] || function () {
(window[sdk].a = window[sdk].a || []).push(arguments);
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://static.a.mts.ru/web-sdk/analytics.js?name=' + sdk;
document.head.appendChild(script);
})('ma');
ma('create', { id: '<FlOW_ID>' });
</script>
  • FLOW_ID — идентификатор потока. Если вы не получили ID потока, отправьте письмо на analytics.support@mts.ru с темой «Получение Flow ID». Идентификатор нужен для отправки данных с вашего ресурса в МТС Аналитику.

  • Имя переменной ma можно заменить на любое другое. Например, на mm

Инициализация и конфигурация библиотеки

При инициализации SDK есть возможность задать конфигурацию

ma('create', config);

Свойства объекта config

id

ID потока (Flow ID). Обязательный параметр.

Тип: string

batching

Объединение нескольких событий в один JSON-файл и отправка одним запросом.

Тип: boolean или

{
time: number;
count: number;
}

Возможные значения:

  1. true — объединяет события. Отправка происходит:
  • каждые 2 секунды,
  • или если накопится 20 событий,
  • или когда произойдет событие pageview.
  1. false — событие отправляется сразу без объединения.

  2. {time: <TIME>, count: <COUNT>}

Значения по умолчанию: count (20), time (2000)

Приоритет отправки:

  1. Произошло событие pageview.
  2. Истекло время.
  3. Накоплено 20 событий.
Заметка

События отправятся вне зависимости от выставленных условий при закрытии страницы или переходе на другую вкладку.

ecommerce

При включении (true) использует слой данных по имени dataLayer для получения событий электронной коммерции. Важно, чтобы события в dataLayer соответствовали формату GA4 или UA (Universal Analytics). Можно задать кастомное имя слоя данных.

Тип: boolean || string.

Значение по умолчанию: false

sendMethod

Метод отправки данных на сервер.

Тип:

ТипОписание
autoпроверяет доступность метода sendBeacon и соответствие версий систем/браузеров. Если всё корректно, задаётся значение beacon, если некорректно — xhr
beaconдля отправки используется метод sendBeacon. Если невозможно вызвать, данные будут отправлены через XMLHttpRequest
xhrдля отправки через XMLHttpRequest
doubleкаждый запрос отправляется двумя методами: sendBeacon и XMLHttpRequest

Значение по умолчанию: xhr

outQueue

Настройка отправки событий (группы событий при batching) на сервер очередью. Помогает не терять события при проблемах с сетью или при закрытии / обновлении страницы.

Функции:

Что делаетОписание
Повторные попыткиЕсли отправка не удалась, SDK не отбрасывает события, а повторяет попытки через заданные интервалы
Сохранение при уходе со страницыНеотправленные события из очереди сохраняются в браузере при закрытии вкладки, обновлении страницы, переходе на другую страницу
Восстановление при следующем заходеПри новом открытии страницы (того же сайта с тем же счётчиком) сохранённые события подхватываются и снова отправляются

Тип: boolean ||

	{
reconnectTimeout: Array<number>;
maxConnectionAttempts: number;
maxStorageCount: number;
}

Возможные значения:

  • false – очередь отключена. События отправляются сразу
  • true – очередь включена. Параметры отправки используются по умолчанию
  • {maxConnectionAttempts, reconnectTimeout, maxStorageCount}

Значения по умолчанию: maxConnectionAttempts (10), maxStorageCount (100), reconnectTimeout:

[2000, 5000, 10000, 30000, 60000, 5 * 60000];
Заметка

Неуказанные свойства принимаются как значения по умолчанию.

Параметры конфигурации:

НазваниеОписание
reconnectTimeoutПаузы (в миллисекундах) между повторными попытками отправки одного и того же события (группы событий) после ошибки
maxConnectionAttemptsПоказывает, сколько раз подряд SDK будет пытаться отправить событие (группу событий), прежде чем считать его неудачным и перейти к следующему
maxStorageCountПоказывает, cколько последних неотправленных событий из очереди сохранять в localStorage браузера

sendPageView

Автоматическое определение переходов по страницам, отправка событий pageview.

Тип: boolean

Возможные значения:

  • false — автоматическая отправка Pageview не осуществляется
  • true — SDK автоматически отправляет pageview при инициализации и при каждой смене URL страницы

Значение по умолчанию: true

trackBounce

Включить точный показатель отказов. Время отправки события по умолчанию — 15 секунд, либо через указанное время (в секундах).

Тип: boolean | number

Значение по умолчанию: 15

plugins

Список плагинов, которые необходимо включить.

Тип

[{
name: string;
config?: any;
}, ...]
  • name — имя плагина

  • config — конфигурация плагина

Значение по умолчанию: [], нет включенных

Команды для настройки отправки событий

Вы можете вручную задать команды и параметры отправки событий в библиотеку МТС Аналитики. Подробнее — Команды для отправки событий в МТС Аналитику.

Плагины для расширения функционала SDK

Совет

Для расширения возможностей библиотеки можно дополнительно подключить плагины dataLayer, linker, error, performance. По умолчанию они отключены.

Чтобы подключить плагин, после инициализации SDK выполните команду

ma('addPlugin', '<PLUGIN_NAME>', <PLUGIN_OPTIONS>);

К методам плагина можно обращаться способом

ma('plugin', '<PLUGIN_NAME>', '<SOME_METHOD>', ...arguments);

Data Layer

Отслеживание и оправка всех событий, которые попали в уровень данных. SomeObject при вызове dataLayer.push(someObject) будет полностью отправлен в МТС Аналитику.

Инициализация

ma('addPlugin', 'dataLayer', '<DATA_LAYER_NAME>');

<DATA_LAYER_NAME> — имя слоя данных. Если не указано, по умолчанию ставится «dataLayer».

Linker

Включает механизм междоменного связывания сессий.

Тип:

{

allowLinker: boolean;
autoLink: string[];

}

Значение по умолчанию:

 {
allowLinker: false,

autoLink: []
}

Performance

Осуществляет сбор технических метрик производительности страниц пользователя. Сбор и отправка всех технических метрик происходит автоматически после включения плагина.

Инициализация

ma('addPlugin', 'performance');

Error

Плагин отправляет все необработанные ошибки (исключения JavaScript) автоматически. Внутри блока try-catch можно отправлять вручную с помощью метода trackError.

Инициализация

ma('addPlugin', 'error');

Ручная отправка ошибок

try {
throw new Error()
} catch (e) {
ma('plugin', 'error', 'trackError', {
message: string, error?: Error, colno?: number, lineno?: number, filename?: string
});
}

При инициализации обязательно заполните поле message. Если message не был передан, подставляется значение «JS Exception. Добавьте описание ошибки».

Шаг 2. Перенести код SDK на сайт

Скопируйте код SDK и добавьте его в HTML каждой страницы сайта. Расположите фрагмент в разделе <head> (как можно выше) или <body>.

Пример настроенного скрипта

  • включён dataLayer
  • выключёна отправка pageview
<script>
(function (sdk) {
window[sdk] = window[sdk] || function () {
(window[sdk].a = window[sdk].a || []).push(arguments);
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://static.a.mts.ru/web-sdk/analytics.js?name=' + sdk;
document.head.appendChild(script);
})('ma');

ma('create', {
id: '11111111-1111-1111-1111-111111111111',
sendPageView: false,
plugins: [{ name: 'dataLayer' }],
});
</script>