Velocity у сценаріях
У сценаріях Velocity виходить за межі персоналізації повідомлень — за його допомогою можна трансформувати дані, записувати значення в поля контакту та направляти контакти різними шляхами залежно від значень полів, параметрів подій або зовнішніх даних.
Ця стаття охоплює практичні сценарії використання. Залежно від задачі, вирази, наведені тут, використовуються в налаштуваннях блоків Оновити поля контакту, Розгалуження або Вебхук.
Кейс 1: Глобальна контрольна група за останньою цифрою Contact ID
- Мета: розділити контакти на стабільні тестову та контрольну групи для всіх кампаній.
- Запуск: сценарій за подією або регулярний на групу
- Де: Сценарій → блок Оновити поля контакту
- Зберегти: останню цифру
contactIdу додаткове полеcontrolDigit - Вираз:
$contactId.toString().substring($mathTool.sub($contactId.toString().length(),1))
Як використовувати далі:
- Контрольна група 10% — помістіть у контрольну групу лише контакти, у яких
controlDigitдорівнює0. З усіх можливих цифр (0–9) ви берете одну → приблизно 10% аудиторії. - Тестова група 90% — надсилайте кампанії всім, крім контрольної групи. Тобто контакти з
controlDigitвід1до9→ приблизно 90% аудиторії. - Контрольна група 20% — помістіть у контрольну групу контакти з
controlDigitрівним0або1. Дві цифри з десяти → приблизно 20% аудиторії.
Як це виглядає на практиці:
У блоці Розгалуження або в умові сегмента перевіряйте збережене поле controlDigit і направляйте контакти на гілки Контрольна та Тестова залежно від останньої цифри.
Кейс 2: Збереження значення з події AddFavoritesItem у поле контакту
- Мета: зберегти ID останнього доданого в обране товару з події в поле контакту (наприклад,
lastWishlistItemId) для повторного використання. - Запуск: за подією (
AddFavoritesItem) - Де: Сценарій → блок Оновити поля контакту
- Зберегти: ID товару у додаткове поле
lastWishlistItemId
Якщо значення береться з об'єкта в параметрі lastProductAdded:
$lastProductAdded.externalItemId
Фрагмент події:
"lastProductAdded": {
"externalItemId": 87420539,
"name": "Awesome item",
"cost": "1000"
}Якщо значення береться з масиву в параметрі productsFullData:
$productsFullData[0].externalItemIdФрагмент події:
"productsFullData": [
{
"externalItemId": 2697928574,
"name": "Awesome item",
"cost": "1000"
}
]Як використовувати далі:
- Персоналізація повідомлень — підставляйте збережений ID у рекомендаційні email або push (наприклад, нагадування про товар в обраному).
- Сегментація — будуйте сегменти на основі останнього доданого товару чи категорії.
- Розгалуження в сценаріях — направляйте контакти різними шляхами залежно від того, який товар було додано в обране.
Як це виглядає на практиці:
- Контакт додає товар в обране → eSputnik отримує подію
AddFavoritesItem. - Сценарій запускається і переходить до блоку Оновити поля контакту.
- eSputnik записує значення події в поле
lastWishlistItemId(використовуючи$lastProductAdded.externalItemIdабо$productsFullData[0].externalItemId). - Будь-який майбутній сценарій, сегмент або повідомлення може зчитати
lastWishlistItemIdз профілю контакту і використати для розгалуження або персоналізації.
Кейс 3: Вебхук для збагачення або передачі даних
- Мета:
- GET: запитати дані із зовнішньої системи (наприклад: доступність товару, персональна знижка, рекомендований товар) і за потреби зберегти отримані значення в eSputnik.
- POST: передати вибрані дані події або контакту в зовнішню систему (для логування, оновлення CRM, аналітичних пайплайнів, запуску зовнішніх процесів).
- Запуск: сценарій за подією (
AddFavoritesItem) або регулярний на групу - Де: Сценарій → блок Вебхук (+ блок Оновити поля контакту, якщо потрібно зберегти результат GET)
- Зберегти:
- GET: необов'язково — зберегти значення, повернуті ендпоінтом, у додаткові поля (наприклад,
couponCode,stockStatus,recommendedItemId). - POST: залежить від сценарію.
- GET: необов'язково — зберегти значення, повернуті ендпоінтом, у додаткові поля (наприклад,
GET — передати дані в URL, отримати відповідь:
https://api.example.com/favorites?contactId=$contactId&itemId=$lastProductAdded.externalItemId
Або якщо значення береться з масиву:
https://api.example.com/favorites?contactId=$contactId&itemId=$productsFullData[0].externalItemId
POST — передати дані в тілі запиту:
{
"externalCustomerId": "$externalCustomerId",
"externalItemId": "$lastProductAdded.externalItemId"
}
Або якщо значення береться з масиву:
{
"contactId": "$contactId",
"externalCustomerId": "$externalCustomerId",
"event": "AddFavoritesItem",
"externalItemId": "$productsFullData[0].externalItemId"
}Як використовувати далі:
- Після GET: персоналізуйте повідомлення збереженими значеннями, розгалужуйте сценарії за поверненими атрибутами, сегментуйте аудиторію за збагаченими полями.
- Після POST: ведіть зовнішню звітність і атрибуцію, синхронізуйте дані з CRM, запускайте зовнішні дії (генерація купона, перевірка наявності товару тощо).
Як це виглядає на практиці:
AddFavoritesItemзапускає сценарій.- Сценарій досягає блоку Вебхук.
- Відбувається один із двох патернів:
- GET: eSputnik викликає URL → зовнішня система повертає дані (наприклад,
{ "couponCode": "WISH10", "stockStatus": "available" }). - POST: eSputnik надсилає JSON з параметрами події → зовнішня система зберігає або обробляє дані.
- GET: eSputnik викликає URL → зовнішня система повертає дані (наприклад,
- Якщо це GET — сценарій може перейти до блоку Оновити поля контакту і зберегти значення відповіді в профіль.
- Майбутні сценарії та повідомлення використовують збережені поля (GET) або покладаються на зовнішню обробку (POST).
Кейс 4: Розгалуження за періодом підписки
- Мета: перевірити період підписки в події оплати та надіслати відповідний лист.
- Запуск: сценарій за подією (
InvoiceCommon) - Де: Сценарій → блок Розгалуження → блок Email
- Зберегти: за потреби можна зберегти період підписки в поле контакту, щоб використовувати його пізніше в сегментах, сценаріях або повідомленнях.
У цьому прикладі дані про підписку передаються в параметрі items, де товари зберігаються всередині items.array. Щоб отримати період підписки для першого елемента, використовуйте:
$items.array[0].subscriptionPeriodФрагмент події:
{
"eventTypeKey": "InvoiceCommon",
"params": {
"items": {
"array": [
{
"subscriptionPeriod": "90"
}
]
}
}
}Як використовувати в блоці Розгалуження
Залежно від значення $items.array[0].subscriptionPeriod направте контакти відповідною гілкою:
30→ надіслати лист для підписки на 30 днів90→ надіслати лист для підписки на 90 днів- інше або порожнє значення → використати резервну гілку
Як використовувати далі
- Надсилати різні листи з підтвердженням оплати або онбордингом залежно від придбаного терміну підписки.
- Узгоджувати подальшу комунікацію з фактичним періодом підписки з події оплати.
- За потреби зберегти це значення в поле контакту, щоб повторно використовувати його поза межами цього подієвого сценарію.
Як це виглядає на практиці
- Після оплати система отримує подію
InvoiceCommon. - Сценарій запускається.
- Блок Розгалуження перевіряє значення
$items.array[0].subscriptionPeriod. - Контакт переходить у відповідну email-гілку залежно від значення.
- У кожній гілці надсилається лист для відповідного терміну підписки.
Наступні кроки
- Довідник Velocity — повний довідник синтаксису
- Тестування та відлагодження Velocity — як діагностувати вирази та перевіряти контекст змінних
Updated about 1 hour ago