Підключення PostgreSQL

Підключення до PostgreSQL допоможе вирішити такі завдання:

  • імпорт даних у додаткові поля для сегментації;
  • налаштування безшовної синхронізації контенту;
  • експорт даних щодо результатів розсилки, поведінки у віджетах або контактної інформації з eSputnik.

📘

Важливо

Інтеграція з PostgreSQL входить у платні тарифи

Крок 1. Налаштування конектора

1. Перейдіть на вкладку “Конектори” в налаштуваннях вашого акаунту і виберіть “Підключити PostgreSQL”.

Підключити PostgreSQL

2. Заповніть такі поля:

  • Назва.
  • Хост (може містити доменне ім'я віддаленого сервера або його IP-адресу).
  • Порт (за замовчуванням вводиться автоматично).
  • База даних (її назва на віддаленому сервері).
  • Ім'я користувача (логін користувача бази даних; достатньо ролі лише для читання).
  • Пароль.
Основні параметри

Натисніть кнопку “Перевірити підключення”, щоб перевірити коректність авторизаційних даних та виконати тестове підключення до віддаленої бази даних.

📘

Примітка

При підключенні до PostgreSQL рекомендується використовувати захищене SSL з'єднання для безпечної передачі даних.

Якщо ви не використовуєте SSL з'єднання, система попередить про це:

З'єднання не захищене SSL

При успішному підключенні у верхньому правому куті розділу з'явиться сервісне повідомлення про те, що з'єднання встановлено. В іншому випадку, якщо підключення не вдалося, необхідно уточнити у вашого системного адміністратора коректність налаштувань або авторизаційних даних.

3. Для визначення унікальності контакту вкажіть колонку таблиці, що містить унікальний ключ контакту, та унікальне поле контакту в eSputnik. Вони повинні співпадати.

Визначення унікальності контакта

Так, якщо ви вибрали email, після підключення стовпець таблиці PostgreSQL з електронними адресами буде зіставлено з відповідним полем у eSputnik.

Ви можете задати будь-який ключ унікальності контакту, що міститься у таблиці та в eSputnik — зовнішній ID, номер телефону, додаткове поле тощо.

📘

Важливо

Ви можете використовувати створений конектор для підключення до кількох джерел даних, які мають мати однаковий унікальний контактний ключ. Для роботи з іншими ключами створіть додаткові конектори з відповідним ID контакта.

4. Натисніть кнопку “Зберегти”.

Крок 2. Налаштування джерела даних

Ваша зовнішня база даних може містити кілька таблиць, і вам потрібно вибрати, до якої з них ви хочете підключитися.

1. Перейдіть у налаштування вашого профілю > вкладка “Джерела даних”, натисніть кнопку “Нове джерело” і оберіть “Зовнішні джерела даних”.

Налаштування джерела даних

2. Виберіть створений конектор.

Виберіть конектор

3. Виберіть dataset, таблицю і введіть назву джерела. Натисніть кнопку “Зберегти”.

Основні параметри

Імпортуйте контакти в eSputnik i наповніть даними зовнішню базу. Після цього у вашому обліковому записі буде доступна можливість будувати сегменти на основі значення полів у зовнішній базі даних за допомогою побудови умовних груп.

Створення умовної групи

📘

Важливо

Для сегментації доступні лише ті контакти, які є у вашому обліковому записі eSputnik та у зовнішній базі даних. Імпорт контактів із зовнішньої бази до вашого облікового запису не відбувається. Тому важливо оперативно синхронізувати та актуалізувати контакти перед здійсненням розсилок.

Крок 3. Підстановка повідомлення даних із зовнішнього джерела

Щоб використовувати зовнішні дані у повідомленні, до них необхідно звернутися за допомогою velocity-конструкції $!data.get('назва_джерела')... – так, у цьому прикладі ми підготували джерело під назвою promo_codes.

Масова розсилка на групу

Наприклад, ви плануєте кампанію на адресу [email protected].

Набір даних буде витягнуто з таблиці та вставлено в об’єкт:

{
  "data": {
    "promo_codes": [
      {
        "id": "2",
        "email": "[email protected]",
        "name": "Dina Kozak",
        "birthday": "2020-09-02T00:00:00Z",
        "promo_code": "AAAA-BBBB-DDDD"
      }
    ]
  }
}

На поля масиву promo_codes можна посилатися двома способами:

  • За допомогою елементів (цей спосіб підходить, якщо ви точно знаєте кількість елементів у масиві).

    $!data.get('promo_codes').get(0).get('name')
    
    $!data.get('promo_codes').get(0).get('promo_code')
    
  • За допомогою циклу (найпоширеніший спосіб).

    #foreach($pc in $!data.get('promo_codes'))
    
    $!pc.get('name')
    
    $!pc.get('promo_code')
    
    #end
    

Для тригерної розсилки

По-перше, вам потрібно створити динамічну групу з певними умовами. Наприклад, ваш сегмент включатиме лише контакти, у яких сьогодні день народження.

День народження сьогодні

Коли сценарій запускається для контактів, які відповідають цій умові, система генерує подію. Назва події формується зі статичної частини (regularEventType) та ідентифікатора сегмента, на який надсилається кампанія. Це може бути, наприклад, regularEventType-170531841.

Подія містить контактні дані, ідентифікатор контакту в eSputnik (ContactId), адресу електронної пошти (EmailAddress) і дані із зовнішньої таблиці.

Дані з кожного поля таблиці перетворюються на ключ і поміщаються в масив із числовою позначкою, що відповідає ідентифікатору джерела даних.

Цей масив серіалізується і розміщується як рядок у полі jsonParam. Тіло події може виглядати наступним чином:

{
  "params": [
    {
      "name": "ContactId",
      "value": "623927159"
    },
    {
      "name": "jsonParam",
      "value": "{\"1043\":[{\"id\":,\"email\":\"[email protected]\",\"name\":\"Dina Kozak\",\"birthday\":\"2020-09-02T00:00:00Z\",\"promo_code\":\"AAAA-BBBB-DDDD\"}]}"
    },
    {
      "name": "EmailAddress",
      "value": "[email protected]"
    }
  ]
}

Щоб десеріалізувати рядок у набір об’єктів, перейдіть до налаштувань  блоку Email → поле JSON та вкажіть джерело даних із події — ${jsonParam}.

Укажіть джерело даних

Налаштувавши сценарій, налаштуйте запуск:

Налаштування запуску

Для отримання даних із події використовується той самий підхід, що й для масової кампанії, з невеликою різницею в назві масиву. В листі буде такий об’єкт:

{
  "data": {
    "1043": [
      {
        "id": "2",
        "email": "[email protected]",
        "name": "Dina Kozak",
        "birthday": "2020-09-02T00:00:00Z",
        "promo_code": "AAAA-BBBB-DDDD"
      }
    ]
  }
}

На поля масиву 1043 можна посилатися двома способами:

  • За параметрами (якщо відома кількість параметрів у масиві).

    - $!data.get('1043').get(0).get('name')  
      $!data.get('1043').get(0).get('promo_code')
    
  • За допомогою циклу (найпоширеніший спосіб).

    - # foreach($pc in $!data.get('1043'))
    
      $!pc.get('name')
    
      $!pc.get('promo_code')
    
      # end
    

Підключіть PostgreSQL як зовнішнє джерело даних, щоб виконувати широкий спектр маркетингових завдань. Наприклад, додавати промокоди в тригерні кампанії або створювати складні сегменти на основі даних, зібраних на різних платформах.

Крок 4. Налаштування експорту даних

Щоб регулярно оновлювати інформацію про аудиторію, замовлення та результати кампанії в PostgreSQL, налаштуйте експорт даних з eSputnik в таблиці. Наприклад, ви можете експортувати відповіді на NPS-опитування, історію покупок, дату останнього переходу з в повідомлення тощо.

Доступні набори даних для експорту:

  • workflowInstanceId – ідентифікатор окремого запуску сценарію; використовуйте його для угрупування розсилок у рамках запуску одного сценарію;
  • broadcasts;
  • contactActivities;
  • contacts;
  • devices;
  • events;
  • messages;
  • orderItems;
  • orders;
  • revenue.

Список параметрів даних для експорту

Broadcasts

Параметр
Тип даних
Опис
createdDatetimestampДата та час створення повідомлення (формат: '2021-10-08 11:11:02')
groupIdintID груп, що брали участь у розсилці
idintID розсилки
mediaTypevarchar (50)Медіатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget)
messageIdintID повідомлення
namevarchar (1000)Назва розсилки
startedDatetimestampДата та час відправки розсилки (формат: '2021-10-08 11:11:02')
statusvarchar (50)Статуси розсилки:

- IDLE – завершена;
- RUNNING - почалася;
- PAUSED - призупинена (якщо розсилка не була зупинена вами вручну, зверніться до служби підтримки для уточнення деталей);
- SCHEDULED – запланована;
- UNCONFIRMED – у черзі на модерацію;
- CONSIDERATION – на модерації;
- BLOCKED – заблокована модератором.
updatedDatetimestampДата та час оновлення розсилки (формат: '2021-10-08 11:11:02')

ContactActivities

Параметр
Тип даних
Опис
activity
(activityStatus)*
varchar (100)Статус активності:

- DELIVERED – повідомлення доставлено.
- UNDELIVERED – повідомлення не доставлено (містить причину statusDescription).
- RECEIVED –повідомлення відкрито.
- UNSUBSCRIBED – контакт відмовився від розсилки.
- CLICKED – контакт клікнув посилання у повідомленні.
- SPAM – контакт повідомив про спам.
- SUBSCRIPTION_CHANGED – контакт змінив категорію підписки.
- PUSH_SUBSCRIBED —контакт підписався на push-сповіщення.
workflowInstanceIdvarchar (200)Ідентифікатор окремого запуску сценарію. Використовуйте його для угрупування розсилок у рамках запуску одного сценарію.
broadcastIdintID розсилки
campaignTypevarchar (50)Тип розсилки: 

- IM — тригерне повідомлення, 
- Group — масова розсилка.
clickEventLinkvarchar (1000)Містить посилання, яке клікнув контакт (статус CLICKED)
contactIdbigintID контакту в eSputnik (Внутрішній)
errorCode (statusDescription)*varchar (1000)Помилка доставки SMTP та опис
eventKeyvarchar (100)Ключ події
eventTypeKeyvarchar (100)Ключ типу події
externalCustomerIdvarchar (100)ID контакту у вашій системі (Зовнішній)
mediaTypevarchar (50)Медіатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget, In-App, Telegram)
messageInstanceIdintСлужбове поле
messageLanguageCodevarchar (50)Код мови повідомлення
messageNamevarchar (100)Назва повідомлення в обліковому записі eSputnik
messageIdintID повідомлення
messageTagsvarchar (200)Мітки повідомлення
messageURLvarchar (1000)Містить посилання на веб-версію email
senderNamevarchar (200)Ім'я відправника у Viber
started (activityDateTime)*timestampДата та час відправки повідомлення (формат: '2021-10-08 11:11:02')
utmCampaignvarchar (400)UTM-мітка розсилки
workflowIdintID сценарію
workflowBlockIdvarchar (200)ID блока сценарію

* Поле буде видалено як застаріле; використовуйте поле, вказане у дужках

Contacts

Параметр
Тип даних
Опис
contactIdbigintID контакту в eSputnik (Внутрішній)
contactSourcevarchar (50)Джерело контакту:

- SITE_AUTOMATED - прив'язка email до push-підписника (скрипт збору web push), 
- I_MESSAGE -відправка одного повідомлення, 
- CAMPAIGN - сценарій (блок "Створити контакт" або блок "Додати до групи"), 
- IMPORT - імпорт файла або метод “Add contacts”, 
- MANUAL - створен вручну, 
- SUBSCRIPTION - форма підписки (API метод “Subscribe a contact”), 
- API метод “Add contact”, 
- ORDER - замовлення на сайті (API метод “Add orders”).
createdDatetimestampДата та час створення контакту (формат: '2021-10-08 11:11:02')
email varchar (50)Email контакту
emailDomainvarchar (100)Домен email
emailStatusvarchar (50)Статус email
externalCustomerId varchar (100)ID контакту у вашій системі (Зовнішній)
firstName varchar (50)Ім'я контакту
languageCode varchar (20)Код мови повідомлень
lastClickedDate timestampДата та час останнього кліку (формат: '2021-10-08 11:11:02')
lastNamevarchar (50)Прізвище контакту
lastReceivedDate timestampДата та час останньої доставки (формат: '2021-10-08 11:11:02')
lastSentDate timestampДата та час останньої відправки (формат: '2021-10-08 11:11:02')
lastViewedDatetimestampДата та час останнього відкриття (формат: '2021-10-08 11:11:02')
smsvarchar (50)Номер телефону
totalClickedintЗагальна кількість кліків
totalReceivedintЗагальна кількість отриманих повідомлень
totalSentintЗагальна кількість надісланих повідомлень
totalViewedintЗагальна кількість переглянутих повідомлень

Devices

Параметр
Тип даних
Опис
appVersionvarchar (50)Версія додатку
applicationIdintID додатку
categoryvarchar (50)Категорія
contactIdbigintID контакту
deviceIdvarchar (250)ID пристрою
deviceModelvarchar (100)Модель пристрою
externalCustomerIdvarchar (100)Зовнішній ID контакту
languageCodevarchar (20)Код мови
osTypevarchar (50)Тип ОС
osVersionvarchar (50)Версія ОС
pushTokenvarchar (max)Пуш-токен
timeZonevarchar (100)Часовий пояс

Events

Параметр
Тип даних
Опис
contactIdintID контакту
eventIdintID події
eventTypeKeystringТип події
keyValuestringКлюч події
occuredtimestampДата і час виникнення (формат: '2021-10-08 11:11:02')
paramsJsonjson50 перших параметрів та значень події (name/value); передається до 300 символів значень.

Messages

Параметр
Тип даних
Опис
annoyanceLevelintРівень занепокоєння повідомлення
languagevarchar (50)Мова основної версії повідомлення
mediaTypevarchar (50)Медіатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget, In-App)
messageIdintID повідомлення
namevarchar (200)Назва повідомлення
replyTovarchar (200)Адреса для відповідей
sendervarchar (200)Відправник
subjectvarchar (1000)Тема
tagsvarchar (200)Мітки
translationsvarchar (200)Мовні версії повідомлення
updateDatetimestampДата та час оновлення повідомлення (формат: '2021-10-08 11:11:02')

OrderItems

Параметр
Тип даних
Опис
costnumericВартість товару
descriptionvarchar (300)Опис товару
externalProductIdvarchar (100)Зовнішній ID товару
imageUrlvarchar (200)Посилання на зображення товару
namevarchar (100)Назва товару
orderDatetimestampДата створення замовлення (формат: '2021-10-08 11:11:02')
orderIdintID замовлення в eSputnik (Внутрішній)
quantityintКількість товарів
urlvarchar (200)URL-адреса товару

Orders

Параметр
Тип даних
Опис
contactIdbigintID контакту в eSputnik (Внутрішній)
deliveryAddress varchar (100)Адреса доставки
deliveryMethodvarchar (50)Спосіб доставки
discountnumericЗнижка
emailvarchar (50)Email
externalOrderIdvarchar (100)Зовнішній ID замовлення
firstName varchar (50)Ім'я контакту
lastNamevarchar (50)Прізвище контакту
orderCreatedDatetimestampДата створення замовлення на eSputnik (формат: '2021-10-08 11:11:02')
orderDate timestampДата створення замовлення (формат: '2021-10-08 11:11:02')
orderId intID замовлення в eSputnik (Внутрішній)
paymentMethodvarchar (50)Спосіб оплати
Phonevarchar (50)Номер телефону
Statusvarchar (50)Статус замовлення:

- INITIALIZED,
- IN PROGRESS,
- DELIVERED, 
- CANCELED.
totalCostnumericЗагальна вартість замовлення

Revenue

Параметр
Тип даних
Опис
activity (activityStatus)*varchar (100)Статус активності:

- DELIVERED – повідомлення доставлено.
- UNDELIVERED – повідомлення не доставлено (містить причину statusDescription).
- RECEIVED –повідомлення відкрито.
- UNSUBSCRIBED – контакт відмовився від розсилки.
- CLICKED – контакт клікнув посилання у повідомленні.
- SPAM – контакт повідомив про спам.
- SUBSCRIPTION_CHANGED – контакт змінив категорію підписки.
- PUSH_SUBSCRIBED —контакт підписався на push-сповіщення.
campaignType varchar (50)Тип розсилки:

- IM — тригерне повідомлення, 
- Group — масова розсилка.
clickEventLink varchar (1000)Містить посилання, яке клікнув контакт (статус CLICKED)
contactIdbigintID контакту в eSputnik (Внутрішній)
currency varchar (3)Валюта
externalCustomerId varchar (100)ID контакту у вашій системі (Зовнішній)
externalOrderId varchar (200)ID замовлення зовнішній
mediaType varchar (50)Медіатип (SMS, Email, Web Push, Viber, Mobile Push, AppInbox, Widget)
messageInstanceIdintСлужбове поле
messageName varchar (100)Назва повідомлення в обліковому записі eSputnik
messageTags varchar (200)Мітки повідомлення
messageUrl varchar (1000)Містить посилання на веб-версію email
orderDate timestampДата створення замовлення (формат: '2021-10-08 11:11:02')
senderName varchar (200)Ім'я відправника у Viber
started (activityDateTime)*timestampДата та час відправки повідомлення (формат: '2021-10-08 11:11:02')
totalCostnumericЗагальна вартість замовлення
utmCampaign varchar (400)UTM-мітка розсилки

* Поле буде видалено як застаріле; використовуйте поле, вказане у дужках

📘

Примітка

Існуючі записи в таблиці Revenue (для замовлень, зроблених після 08.03.2024) можна оновлювати разом з вивантаженням нових замовлень. Оновлення може знадобитися, наприклад, якщо змінилася загальна вартість замовлення.

Ця інформація буде передана в PostgreSQL і оновить дані в таблицях.

📘

Важливо

Вам не потрібно попередньо створювати таблиці PostgreSQL. Вони будуть створені автоматично під час першого експорту, і з цього часу всі вхідні дані оновлюватимуться. Всі назви таблиць відповідатимуть наборам даних (contact activities, contacts, order items, orders, revenue)

Налаштування конектора PostgreSQL для експорту даних

1. Перейдіть у налаштування → “Експорт даних” та натисніть “Новий експорт даних”. Виберіть один із створених конекторів PostgreSQL.

Експорт даних

2. Виберіть інтервал завантаження та встановіть прапорці для наборів даних, які потрібно завантажити. Тип набору даних за замовчуванням public, ви можете вибрати інший тип, якщо вказали його в налаштуваннях PostgreSQL.

3. Натисніть “Зберегти”.

Редагування експорту даних

Підключення буде відображено в розділі “Експорт даних”, тут ви можете змінити його налаштування.