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

JavaScript API

JavaScript-SDK PRMOnline (track.js) позволяет собирать данные о реферальном трафике и конверсиях на любой странице.
Библиотека добавляет в глобальную область функцию prmo(), которую вызывают короткими командами.
Вызовы, сделанные до загрузки основного скрипта, автоматически ставятся в очередь и выполняются после загрузки.

Подключение скрипта

Подробнее о том, где взять ваш персональный скрипт и как его подключить, читайте в разделе про JS-скрипт.

Пример установки скрипта:

<script>
!function(w,d,t){
  w.prmo = w.prmo || function(){ (w.prmo.q=w.prmo.q||[]).push(arguments); };
  var s = d.createElement(t); s.async = true;
  s.src = "https://c1.prmonline.ru/js/track_v1712.js"; // замените на ваш персональный URL
  var x = d.getElementsByTagName(t)[0]; x.parentNode.insertBefore(s,x);
}(window, document, "script");

prmo('config', 'TTL', 30);
prmo('init', 'XDdHbxkNJMsJ');
prmo('track', 'FOLLOW'); </script>

Описание методов

  • Изменение конфигурации

    Изменение параметров запуска скрипта. Вызывается до init.

    Вызов

    prmo('config', param, value)

    Возможные параметры

    ПараметрВозможные значенияНазначение
    TTL int > 0, дней Срок жизни cookies (по умолчанию 60 дней; если задано некорректно — будет использовано 60)
    FORMS false Отключить авто-добавление скрытых полей в <form> (refLinkId/userId)
    refLinkParam string Альтернативное имя параметра реф-ссылки вместо reflinkid / rl (используется при изменении шаблона формирования ссылки)
    ATTR 'lastclick' / (по умолчанию firstclick) Атрибуция по первому клику включена по умолчанию. lastclick отключает “закрепление” первого клика и позволяет перезаписывать атрибуцию
    UTM_redirect true Включить режим “проталкивания” реф-метки через UTM (эмуляции UTM-меток). Полезно для CRM/коллтрекинга/форм, которые пробрасывают только utm_*.
    UTM_map object Карта соответствия UTM-параметров для переодпределения базового поведения UTM_redirect. Поддерживает плейсхолдеры: {refLinkId}, {userId}, {partnerId}. По умолчанию: utm_source=prm, utm_campaign={refLinkId}, utm_content={userId}.

    Примеры

    // TTL cookies
    prmo('config', 'TTL', 90);
    
    // Кастомное имя параметра реф-ссылки (например ?ref=XXX)
    prmo('config', 'refLinkParam', 'ref');
    
    // Включить UTM-редирект с дефолтной картой
    prmo('config', 'UTM_redirect', true);
    
    // Своя карта UTM (важно: лучше задавать ДО включения UTM_redirect)
    prmo('config', 'UTM_map', {
      utm_source  : 'prm',
      utm_medium  : 'partner',
      utm_campaign: '{refLinkId}',
      utm_content : '{userId}'
    });
    prmo('config', 'UTM_redirect', true);

    Как работает UTM_redirect

    • Скрипт ищет реф-параметр в URL по ключам: reflinkid, rl или по refLinkParam (если задан).
    • Параметр может находиться как в query (?rl=...), так и в hash-query (#/page?rl=...).
    • Затем формуруется новый URL с использованием UTM_меток, а старый параметр будет удален. Если не задано переопределение  UTM_map , то используется дефолтная карта utm_source=prm, utm_campaign={refLinkId}, utm_content={userId}.
    • Cookies _p_rlid, _p_pid, _p_uid сохраняются.
    • Выполняется редирект на новый URL.
  • Инициация скрипта

    Запускает сессию трекинга:

    1. Читает query/cookies → сохраняет _p_rlid, _p_pid, _p_uid.
    2. При необходимости добавляет скрытые поля refLinkId и userId во все формы (кроме data-reflink="false").
    3. Разрешает отправку событий через track / trackEx.

    Вызов

    prmo('init', key)

    Пример

    prmo('init', 'XDdHbxkNJMsJ');  // сгенерированный ключ вы можете найте в кабинете администратора в разделе "Настройки" - "Интеграции" - "JS-код"

    Примечание: в скрипте используются антифрод-ограничения (бот/iframe/неактивная вкладка). На “чистом” визите без cookies и без действий пользователя фактическая инициализация может завершиться после первого действия (клик/скролл/ввод).

  • Передача события (устарело)

    Короткий вызов для отправки события/статуса. Не обновляется - рекомендуется использовать trackEx.

    Вызов

    prmo('track', event, once, tranId, sum)

    Параметры

    event   (string) – имя события/статуса (например NEW, PURCHASE_CONFIRM)
    once    (bool)   – если true, скрипт поставит cookie-блокировку повторной отправки этого event (рекомендуется)
    tranId  (string) – номер заказа/транзакции (для дедупликации начислений)
    sum     (number) – сумма транзакции

    Пример

    prmo('track', 'NEW', true);
  • Передача события

    Объектный вызов, поддерживающий статусы, дополнительные атрибуты и начисления.

    По умолчанию приём событий по статусам может быть выключен. Чтобы передавать конкретные события, активируйте их в кабинете администратора: Настройки → Интеграции → JS-код → Настроить.

    Вызов

    prmo('trackEx', action)

    Ключи объекта action

    event *      (string)  – событие/статус, который нужно установить
    once         (bool)    – предотвратить повторную отправку (по умолчанию - true)
    sum          (number)  – сумма транзакции/сделки
    tranId       (string)  – номер заказа/транзакции для дедупликации начислений (только при начислении вознаграждения)
    tranComment  (string)  – комментарий транзакции (используется при начислении вознаграждения)
    name         (string)  – имя лида
    offer        (string)  – идентификатор оффера (используется для переопределения оффера для расчета)
    comment      (string)  – комментарий лида
    user         (string)  – внешний идентификатор клиента; если не передан, то будет использоваться userId
    cf_*         (any)     – передача значения в кастом-поле, вместо * необходимо указать ID поля из PRMonline (cf_5690="gold" и т.д.)

    Пример

    prmo('trackEx', {
      event : 'PURCHASE_CONFIRM',        // Статус лида
      once  : false,
      tranId: 'ORD-42',
      sum   : 3000,                      // cумма транзакции/сделки (может быть передано только для событий PURCHASE и PURCHASE_CONFIRM)
    
      name        : 'Иван',              // → firstname=Иван
      offer       : 'promo-25',          // → offerIdent=promo‑25
      tranComment : 'Оплата за февраль', // комментарий транзакции (используется только если начисляется вознаграждение)
      comment     : 'VIP-клиент',
    
      cf_5492     : 'XL'
    });

Тестирование и отладка

  • Добавьте ?prmonline_check=1 в URL — появится синее модальное окно, подтверждающее установку скрипта.

  • Добавьте &debug=1 — включится подробный лог в консоли.

Примеры использования

Google Tag Manager — простой вызов

1) Создайте триггер на целевое действие (например “Заявка”).

2) Создайте новый тег → Пользовательский HTML.

3) Вставьте вызов:

prmo('track', 'NEW', true);

4) Привяжите триггер и опубликуйте.

Google Tag Manager — передача из Data Layer

Если сайт пушит события в dataLayer:

dataLayer.push({ event: 'purchase', orderId: 'ORD-42', orderValue: 1990, customer: { name: 'Иван', tier: 'gold' } });

Создайте Custom HTML-тег для отправки в PRM:

prmo('trackEx', {
  event: 'PURCHASE_CONFIRM',
  tranId: {{DL - orderId}},
  sum  : {{DL - orderValue}},
  name : {{DL - customer.name}},
  cf_tier: {{DL - customer.tier}},
  tranComment: 'Оплата через СБП'
});

Tilda — отправка события после формы

Добавьте на страницу или в head код, который будет выполнять отправку события после отправки формы. Приведенный ниже фрагмент срабатывает на отправку формы form697157838 , получает объект с полями формы и выполняет отправку события NEW в PRMonline c передачей имени из формы.

<script>
$(document).ready(function(){
  $('#form697157838').on('tildaform:aftersuccess', function() {
    let p__fd = $('#form697157838').serializeArray().reduce((obj, item) => ({ ...obj, [item.name]: item.value }), {});
    prmo('trackEx', {
      event: 'NEW',
      name : p__fd.Name
    });
  });
});
</script>

Cookies

Скрипт использует cookies (и резервно localStorage, если cookies недоступны). Список cookies:

ИмяНазначение
_p_rlid refLinkId
_p_pid partnerId
_p_uid userId
_p_<event> блок повторной отправки, если once=true