Динамічні посилання в листі

Динамічне посилання — це кнопка або текстове посилання, 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-перевизначеннями не оновлюються автоматично.

Перевірте посилання перед відправленням

Переконайтеся, що динамічне посилання коректно резолвиться, перш ніж запускати кампанію:

  1. У редакторі листа відкрийте Додаткові параметри → Налаштування динамічного контенту і вставте тестовий JSON-payload із параметрами, які використовує ваше посилання.
  2. Натисніть Попередній перегляд і перевірте, що відрендерений URL кнопки містить очікувані значення, без залишкових $-змінних чи порожніх параметрів.
  3. Надішліть тестовий лист (Протестувати) і клікніть кнопку, щоб переконатися, що вона веде на потрібну адресу.

Щоб скопіювати реалістичний payload, відкрийте реальну подію в розділі Тригери → Історія подій і використайте її параметри.

Дивіться також