JavaScript API

Всё, что mp.js даёт вашему коду: согласие, ID клиента, события, шаги без смены адреса, хуки и HTML-атрибуты. Ничто не обязательно: сниппет записывает сам.

1. Два способа вызова

mp.js асинхронен. Код до загрузки помещает вызовы в очередь window.mp_q; mp.js обрабатывает её после появления. Затем те же функции есть в window.MousePlayer.

// Before mp.js has loaded - the queue keeps every call: (window.mp_q = window.mp_q || []).push(['consent', true]); // After mp.js has loaded - the same, directly: MousePlayer.setConsent(true);

Всегда пишите window.mp_q = window.mp_q || [], никогда window.mp_q = []. mp.js продолжает слушать массив: новый поглотит все поздние вызовы, включая отзыв согласия.

Сниппет также создаёт заглушку mp(...) с такой же очередью. Обе формы принимают команды: consent, set, event, step, get, on и off.

2. Согласие

Без согласия ничего не записывается. Если CMP распознаётся MousePlayer, ничего не нужно; иначе передайте решение сами.

MousePlayer.setConsent(true); // the visitor agreed MousePlayer.setConsent(false); // withdrawn: recording stops on this page MousePlayer.getConsentState(); // e.g. 'WAITING', 'GRANTED', 'GRANTED_LATE', 'DENIED', 'WITHDRAWN'

Отзыв действует сразу: обработчики удаляются, буфер отбрасывается, соединение закрывается. См. MousePlayer и согласие.

3. Ваш ID клиента

С ID все устройства человека становятся одним посетителем списка, поддержка ищет по известному номеру. ID применяется и к прежним визитам браузера за последние 30 дней.

// After login - your own customer number, not an e-mail address: MousePlayer.setUserId('customer-4711'); // or through the queue (window.mp_q = window.mp_q || []).push(['set', 'user_id', 'customer-4711']);

Используйте внутренний номер, а не почту или имя. ID виден везде, где посетитель.

Получение ID

MousePlayer.getSessionUrl(); // replay link of the running session MousePlayer.getSessionId(); MousePlayer.getVisitorId(); // null without consent // Through the queue, with a callback: (window.mp_q = window.mp_q || []).push(['get', 'session_url', function (url) { // e.g. attach it to a support ticket }]);

4. Собственные события

События видны на шкале записи, служат целями и шагами воронок, уходят в вебхуки и инструменты. Параметры краткие: числа, строки до 255 символов, ключи до 64.

MousePlayer.trackEvent('newsletter_signup', { source: 'footer' }); MousePlayer.trackEvent('purchase', { value: 129.90, currency: 'EUR' }); (window.mp_q = window.mp_q || []).push(['event', 'add_to_cart', { sku: 'SKU-123' }]);
  • Имена строчными с подчёркиванием, до 128 символов. Везде одинаковое имя одному событию: цель сопоставляется точно.
  • Не включайте персональные данные: параметры хранятся и показываются как прочие события.

5. Шаги без смены адреса

Оформление или мастер со сменой экрана без адреса — одна страница для MousePlayer. step() делает каждый экран отдельным просмотром со снимком, строкой карты и шагом воронки.

// A wizard that keeps its address: MousePlayer.step('shipping'); MousePlayer.step('payment'); MousePlayer.step(''); // back to the page itself (window.mp_q = window.mp_q || []).push(['step', 'payment']);

Имя от 1 до 40 символов из a-z, 0-9, _ и -; пробелы становятся дефисами, остальное отклоняется с предупреждением консоли. Реальный переход завершает шаг.

6. Контекст товара

Сообщите MousePlayer, какой товар смотрят. Принимаются только эти ключи; остальные отбрасываются, исключая случайную передачу данных клиентов.

MousePlayer.setContext({ page_type: 'product', product_id: 'SKU-123', variant_id: 'SKU-123-42', price: 89.90, currency: 'EUR', category: 'running-shoes', in_stock: true, cart_value: 0, cart_items: 0 });

7. Хуки

Код может реагировать на измерения. Для захвата самого первого момента регистрируйтесь через очередь.

// Register early - exit_risk fires once, a few seconds after the visit starts: (window.mp_q = window.mp_q || []).push(['on', 'exit_risk', function (e) { console.log(e.risk, e.reasons, e.session); }]); function onAnswer(e) { /* e.survey, e.value, e.sentiment */ } MousePlayer.on('survey_answer', onAnswer); MousePlayer.off('survey_answer', onAnswer);
ИмяКогдаПоля
exit_riskмодель ухода оценила первый просмотр (раз за визит)risk, reasons, session
churn_riskвернувшийся посетитель помечен риском оттокаrisk, reasons, session
offer_shownпредложение при уходе показаноart, risk, grund, session
offer_clickего кнопка нажатаart, risk, grund, session, fehler
offer_dismissоно закрытоart, risk, grund, session
survey_shownопрос открытsurvey, trigger, session
survey_answerпосетитель отвечаетsurvey, type, value, option, sentiment, session
survey_textдополнительный текст отправлен (уже отфильтрован)survey, text, session
survey_dismissопрос закрыт без ответаsurvey, step, session

При включённом GTM-мосте события идут и в dataLayer (mp_exit_risk и так далее). MousePlayer.exitRisk() возвращает текущий риск ухода или null до определения.

8. Атрибуты HTML

<!-- Nothing typed in here leaves the browser as text --> <section data-mp-mask> ... </section> <!-- The value of this field is never recorded --> <input name="voucher" data-mp-ignore> <!-- Tell MousePlayer what an element is --> <span class="amount" data-mp-role="price">89,90 EUR</span>
  • data-mp-mask (или класс mp-masked): текст и ввод внутри заменяются до отправки — в снимке, изменениях и описаниях кликов.
  • data-mp-ignore (или mp-ignore) на поле формы: значение вообще не записывается.
  • data-mp-role: одно из price, price_old, cta_cart, cta_checkout, product_image, variant, shipping_info, returns_info, reviews, rating, stock, coupon, payment_methods, search, filter, heading, article_body, nav, media, form_field, contact_info. Остальные игнорируются.

9. Исключение своих визитов

Откройте сайт один раз с ?mp_exclude=1 , и браузер больше не записывается; ?mp_exclude=0 отменяет это. Для офиса укажите IP в настройках проекта.

https://www.your-shop.com/?mp_exclude=1 <!-- this browser is not recorded any more --> https://www.your-shop.com/?mp_exclude=0 <!-- recorded again -->

10. Ссылка для политики конфиденциальности

Посетители могут видеть и удалять записанное о них. privacyUrl() возвращает готовую ссылку с ID браузера или null, если его нет: без согласия ничего не записано.

var link = MousePlayer.privacyUrl(); // language from <html lang>, or e.g. privacyUrl('de') if (link) document.getElementById('my-data').href = link;