Динамічні посилання в листі
Динамічне посилання — це кнопка або текстове посилання, URL якого змінюється для кожного контакту: наприклад, посилання з email контакту, його мовою або ID замовлення з тригерної події. eSputnik будує такі посилання з двох джерел даних, і метод залежить від джерела:
- Поля контакту — підставляються змінними виду
%FIELDNAME%прямо в поле посилання. - Параметри події — підставляються через Velocity: змінну оголошують перед кнопкою й посилаються на неї в полі посилання.
Скористайтеся цим правилом, щоб обрати правильне налаштування:
| Джерело даних | Приклад | Тип посилання | Що вставляти |
|---|---|---|---|
| Поле контакту | %PERSONAL.LANGUAGE% | Сайт | URL зі змінною всередині |
| Параметр події з повним URL | $checkoutUrl | Інше | Змінна, що містить повний URL (оголошена в HTML-блоці) |
| Параметр події з частковим значенням | $orderId | Сайт | URL зі змінною всередині |
У прикладах нижче використано вигаданий магазин ShopWave, щоб показати кожен патерн на реальному листі. Повну модель даних дивіться у статті Огляд Velocity.
Поле контакту в посиланні
Коли значення належить профілю контакту й не залежить від конкретної події — email, ім'я, мова, зовнішній ID — використовуйте змінну. Вставте її прямо в поле Посилання кнопки, обравши тип посилання Сайт. HTML-блок не потрібен.
У цьому листі з рекомендаціями кнопка See my picks веде кожного контакта на його персональну сторінку, попередньо відфільтровану за обраною мовою:
https://shopwave.com/picks?email=%EMAIL%&lang=%PERSONAL.LANGUAGE%
%EMAIL% — стандартне поле, яке використовується за своєю базовою назвою. %PERSONAL.LANGUAGE% — додаткове поле language зі списку полів Personal. Кожен атрибут, який ви зберігаєте понад стандартні поля, належить до списку полів у розділі Налаштування → Додаткові поля, і його змінна має вигляд %НАЗВА_СПИСКУ.НАЗВА_ПОЛЯ%. PERSONAL — це назва конкретного списку, а не префікс для всіх додаткових полів: поле з іншого списку використовує назву того списку (наприклад, %LOYALTY.TIER%).
Оскільки назви списку й поля визначають змінну, копіюйте кожну змінну прямо з розділу Налаштування → Додаткові поля (біля кожного поля показано його змінну) або вставляйте через меню персоналізації в редакторі, а не набирайте вручну. Під час відправлення змінна замінюється значенням із профілю кожного контакту, а якщо в контакту немає значення для цього поля — порожнім рядком.

Параметр події в посиланні
Дані події — ID замовлення, одноразове посилання на оформлення, токен із тригерного сценарію — недоступні як змінні полів контакту. Підставляйте їх через Velocity у два кроки: оголосіть значення в HTML-блоці перед кнопкою, а потім посилайтеся на змінну в полі Посилання кнопки.
Параметри події доступні лише в тригерних повідомленнях — тих, що надіслані сценарієм, який запустила подія. У звичайних масових розсилках вони недоступні.
У цьому checkout-листі одноразовий checkout_url із події стає адресою кнопки.
Крок 1 — HTML-блок перед кнопкою (оголошує змінну й нічого не виводить):
<!--#set($checkoutUrl = $data.get('checkout_url'))-->Крок 2 — поле Посилання кнопки:
$checkoutUrl
Тип посилання в налаштуваннях кнопки визначає, як eSputnik читає значення:
- Інше — для окремої змінної, що вже містить повний URL, як-от
$checkoutUrl. - Сайт — для URL зі змінною чи merge-змінною всередині, як-от
https://shopwave.com/orders/$orderId.

Кейс входу в акаунт
Вести контакт до його акаунту, статусу замовлення чи дашборду.
Для сторінки з нечутливим контекстом, як-от мова, будуйте URL прямо в полі Посилання з типом Сайт:
https://shopwave.com/account?lang=%PERSONAL.LANGUAGE%
Для персоналізованої сесії або входу без пароля згенеруйте повний URL на своєму бекенді, передайте його як параметр події, оголосіть у HTML-блоці й оберіть тип Інше:
<!--#set($loginUrl = $data.get('login_url'))-->$loginUrl
Не додавайте ID контакту, адреси email чи постійні токени безпосередньо у видимі URL. Для чутливих адрес використовуйте короткочасний підписаний токен, одноразове сесійне посилання або Захищене посилання (Secure Link).
Повний URL проти часткового
Оберіть форму, що відповідає тому, що передає подія:
- Повний URL — бекенд формує готове посилання й передає його одним параметром, як-от
checkout_url. Оголосіть його (Кроки 1–2 вище) і використайте змінну як усе посилання, обравши тип Інше. - Частковий URL — подія передає лише ідентифікатор, як-от
cartId. Оголосіть ID, добудуйте решту шляху навколо нього й оберіть тип Сайт.
У цьому листі про покинутий кошик кнопка Complete my purchase відбудовує URL кошика з cartId:
<!--#set($cartId = $data.get('cartId'))-->https://shopwave.com/cart/restore?id=$cartId

ПриміткаНазви параметрів події чутливі до регістру. Перш ніж посилатися на параметр, звірте його точну назву та шлях у розділі Тригери → Історія подій — відкрийте реальну подію й перевірте структуру payload.
Запасне значення для порожнього параметра
Якщо параметр події порожній під час відправлення, Velocity нічого не підставить і посилання зламається. Щоб уникнути помилок, перевірте значення в HTML-блоці перед кнопкою й задайте значення за замовчуванням, коли воно відсутнє.
У цьому листі-підтвердженні замовлення кнопка View my order відкочується до безпечного значення, коли orderId відсутній:
<!--#if($data.get('orderId') && $data.get('orderId') != '')
#set($orderId = $data.get('orderId'))
#else
#set($orderId = 'unknown')
#end-->Потім посилайтеся на $orderId у полі Посилання з типом Сайт:
https://shopwave.com/orders/$orderId

URL-кодування та спецсимволи
Коли динамічне значення може містити пробіли чи спецсимволи — назва категорії, пошуковий запит, будь-що, що передається в query-параметр — закодуйте його, щоб фінальний URL лишався коректним. Обгорніть значення у $esc.url, коли оголошуєте його в HTML-блоці перед кнопкою.
У цьому тригерному листі про перегляд категорії значення category_name може бути чимось на кшталт Smart Home & Audio. Пробіл і & зламали б рядок запиту, тож $esc.url кодує значення, перш ніж воно потрапить у посилання:
<!--#set($category = $esc.url($data.get('category_name')))-->Потім посилайтеся на нього в полі Посилання з типом Сайт:
https://shopwave.com/category?name=$category&sale=true

Літеральний $ одразу перед числом — ціна на кшталт $13.99 поряд із динамічним значенням — сприймається як початок Velocity-змінної й ламає тег. Виводьте знак долара через ${esc.d}, що дає літеральний $:
${esc.d}13.99
Поєднуйте його з динамічною ціною так само — ${esc.d} виводить знак, а змінна виводить суму:
${esc.d}${price}
Це відрендериться як $13.99.
Обгортання посилань і відстеження кліків
eSputnik обгортає кожне посилання в листі, щоб відстежувати кліки. Це очікувана поведінка — у Попередньому перегляді ви побачите довгий обгорнутий URL із доменом відстеження, а не своє оригінальне посилання.
Домен обгортання задається на рівні акаунту. За замовчуванням це esclick.me; ви можете замінити його на власний домен коротких посилань, щоб посилання виглядали в стилі вашого бренду (Налаштування коротких посилань).
Захищене посилання
Коли посилання містить чутливі дані — ідентифікатори контакту, токени, ключі або посилання на персональні сторінки чи замовлення — використовуйте Захищене посилання (Secure Link). Воно вимкнене за замовчуванням і вмикається на запит до підтримки.
Після ввімкнення в налаштуваннях кнопки з'являється чекбокс Захищене посилання. З ним посилання під час відправлення перетворюється на редирект:
https://esclick.me/sl?u=target_link&iid=sent_mail_identifier&h=hash
Це працює в тестових розсилках, тригерних кампаніях, масових розсилках, у перегляді в браузері та у звітах за повідомленнями.
Короткі посилання й динамічні URL
Скорочувач не скорочує URL, що містить динамічні змінні — значення невідоме до моменту відправлення, тож немає чого скорочувати заздалегідь. У вас є три варіанти:
- Сформуйте URL заздалегідь. Зберіть готове посилання наперед, запишіть його в поле контакту або передайте як параметр події, а потім вставте цей готовий URL. Тоді скорочувач зможе його скоротити.
- Не використовуйте коротке посилання для динамічних CTA. Залиште повний динамічний URL. Він усе одно працює й усе одно відстежується через обгортання посилань.
- Формуйте фінальний URL на бекенді. Згенеруйте готове посилання на боці сервера й передайте його як параметр події, готове до використання.
UTM-мітки й динамічні параметри
eSputnik може додавати UTM-мітки до посилань автоматично — це налаштовується на рівні акаунту в розділі Налаштування → Посилання. Якщо auto-UTM увімкнено, utm_source, який ви додали вручну до URL кнопки, може перезаписатися значенням акаунту. Щоб зберегти власну мітку, вимкніть дефолтні UTM для цього повідомлення (або для акаунту).
Кілька параметрів доступні як вбудовані UTM-ключі — їх не треба вписувати в URL вручну. Увімкніть ключ, і eSputnik заповнить його:
$messageId— ідентифікатор повідомлення$contactId— ідентифікатор контакту$messageName— назва повідомлення$mediaType— канал (email, Viber тощо)
Повний перелік і налаштування дивіться у статті Налаштування UTM-міток.
ПриміткаНалаштування UTM на рівні акаунту застосовуються до нових і скопійованих повідомлень. Наявні шаблони з ручними UTM-перевизначеннями не оновлюються автоматично.
Перевірте посилання перед відправленням
Переконайтеся, що динамічне посилання коректно резолвиться, перш ніж запускати кампанію:
- У редакторі листа відкрийте Додаткові параметри → Налаштування динамічного контенту і вставте тестовий JSON-payload із параметрами, які використовує ваше посилання.
- Натисніть Попередній перегляд і перевірте, що відрендерений URL кнопки містить очікувані значення, без залишкових
$-змінних чи порожніх параметрів. - Надішліть тестовий лист (Протестувати) і клікніть кнопку, щоб переконатися, що вона веде на потрібну адресу.
Щоб скопіювати реалістичний payload, відкрийте реальну подію в розділі Тригери → Історія подій і використайте її параметри.
Дивіться також
- Огляд Velocity
- Довідник зі змінних полів контакту
- Створення CTA-кнопки
- Налаштування коротких посилань
- Налаштування UTM-міток