Skip to content

Кастомные события

Кастомные (пользовательские) события — это тип служебных событий, которые вы можете создавать сами. Такие события решают несколько задач:

  1. Особые события, после которых нужно отправить триггерную рассылку. Например, запуск цепочки-онбординга после события registration (вы можете использовать любой код события).
  2. События, за которые нужно начислить дополнительные бонусы. Например, приветственный бонус за то же самое событие registration. Это работает при использовании нашей программы лояльности.
  3. Цепочка событий, по которым необходимо составить аналитическую воронку для оценки CJM. Например, последовательность событий registrationcreate_projectstart_trialtrial_completedfirst_paymentsecond_payment.

Кастомные события можно вызывать как через SDK с использованием did, так и напрямую через API-запрос с использованием любого идентификатора клиента.

Прежде, чем передавать кастомное событие, нужно создать его код в личном кабинете.

POST https://api.rees46.ru/push/custom

Параметры

ПараметрОбязателен?Описание
shop_idДаAPI-ключ
did*ДаИдентификатор устройства
sidДаИдентификатор сессии. Обязателен при передаче did, желателен при других идентификаторах, если есть возможность
email*ДаEmail клиента
phone*ДаТелефон клиента
external_id*ДаВнешний идентификатор клиента
loyalty_id*ДаИдентификатор внешней программы лояльности клиента
telegram_id*ДаTelegram ID клиента
eventДаКод события. Этот код создается в личном кабинете
categoryНетКатегория события. Произвольная строка для сегментации данных
labelНетМетка события. Произвольная строка для сегментации данных
valueНетЦенность события в виде целого числа
timeНетВремя события в формате Unix timestamp. Используется, если вы хотите сохранить событие в прошлом. Если не указать, используется текущее время
[a-z0-9_]+НетЛюбые дополнительные переменные, которые вы хотите передать в триггерную цепочку для последующей проверки в условиях. Ключ переменной состоит из латинских букв, цифр и _

Идентификаторы

Параметры, отмеченные [*] - обязателен хотя бы один из них. На стороне сайта или мобильных приложений SDK автоматически передает did.

Запрос

Пример запроса:

shell
// Простейший трекинг события без дополнительных свойств
curl 'https://api.rees46.ru/push/custom' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"event":"my_event", "shop_id":"SHOP_ID", "did":"DEVICE_ID", "sid":"SEANCE_ID"}'
    
// Трекинг с несколькими идентификаторами
curl 'https://api.rees46.ru/push/custom' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"event":"my_event", "shop_id":"SHOP_ID", "email":"EMAIL", "phone":"PHONE", "loyalty_id":"LOYALTY_ID", "external_id":"EXTERNAL_ID"}'

// Событие с дополнительными свойствами: категория, метка и ценность
curl 'https://api.rees46.ru/push/custom' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"event":"my_event", "shop_id":"SHOP_ID", "email":"EMAIL", "phone":"PHONE", "loyalty_id":"LOYALTY_ID", "external_id":"EXTERNAL_ID", "category":"event category", "label":"event label", "value":100}'

// Событие с явным указанием времени
curl 'https://api.rees46.ru/push/custom' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"event":"my_event", "shop_id":"SHOP_ID", "did":"DEVICE_ID", "sid":"SEANCE_ID", "time": 1652648400}'
    
// Событие с произвольными переменными
curl 'https://api.rees46.ru/push/custom' \
    -X 'POST' \
    -H 'Content-Type: application/json' \
    --data-raw '{"event":"request_demo", "shop_id":"SHOP_ID", "did":"DEVICE_ID", "sid":"SEANCE_ID", "selected_plan": "pro", "plan_price": 50000, "accepted_offer": true}'
javascript
// Простейший трекинг события без дополнительных свойств
r46("track", "my_event");

// Событие с дополнительными свойствами: категория, метка и ценность
r46("track", "my_event", {
  "category": "event category",
  "label": "event label",
  "value": 100
});

// Событие с явным указанием времени
r46("track", "my_event", {
  "category": "event category",
  "label": "event label",
  "value": 100,
  "time": 1652648400
});

// Событие с произвольными переменными
r46("track", "my_event", {
  "category": "request_demo",
  "label": "home_page",
  "selected_plan": "pro",
  "plan_price": 50000,
  "accepted_offer": true
});

// Событие с payload с произвольными переменными для сохранения в БД
r46("track", "my_event", {
  "category": "request_demo",
  "label": "home_page",
  "payload": {
    "selected_plan": "pro",
    "plan_price": 50000,
    "accepted_offer": true
  }
});
swift
// Простейший трекинг события без дополнительных свойств
sdk.trackEvent(event: "something_happened")

// Событие с дополнительными свойствами: категория, метка и ценность
sdk.trackEvent(event: "something_happened", category: "important", label: "banner_click", value: 42)

// Событие с произвольными переменными
// NOT IMPLEMENTED YET: DEV-4061
kotlin
// Простейший трекинг события без дополнительных свойств
sdk.trackEventManager.customTrack(YOUR_EVENT_NAME)

// Событие с дополнительными свойствами: категория, метка и ценность
sdk.trackEventManager.customTrack(
  event = YOUR_EVENT_NAME,
  category = YOUR_EVENT_CATEGORY,
  label = YOUR_EVENT_LABEL,
  value = YOUR_EVENT_VALUE
)

// Событие с произвольными переменными
// NOT IMPLEMENTED YET: DEV-4060
java
// Простейший трекинг события без дополнительных свойств
REES46.track("my_event");

// Событие с дополнительными свойствами: категория, метка и ценность
REES46.track("my_event", "event category", "event label", 100);
javascript
// Простейший трекинг события без дополнительных свойств
sdk.trackEvent('my_event');

// Событие с дополнительными свойствами: категория, метка и ценность
sdk.trackEvent('my_event', {
  category: "event category",
  label: "event label",
  value: 100
});

// Событие с явным указанием времени
sdk.trackEvent("my_event", {
  "category": "event category",
  "label": "event label",
  "value": 100,
  "time": 1652648400
});

// Событие с произвольными переменными
sdk.trackEvent("my_event", {
  "category": "request_demo",
  "label": "home_page",
  "selected_plan": "pro",
  "plan_price": 50000,
  "accepted_offer": true
});

Ответ

Пример ответа сервера:

json
{
  "status": "success"
}

В случае ошибки ответ будет в формате:

json
{
  "status": "error",
  "payload": {
    "message": "Identifier is not valid"
  }
}