Інтеграція Zendesk Chat: віджет, JWT і синхронізація тікетів

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

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Інтеграція Zendesk Chat: віджет, JWT і синхронізація тікетів
Простий
~1 день
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    956
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    947

Інтеграція Zendesk Chat на сайт: від встановлення віджета до синхронізації з тікетами

Відзначимо: коли клієнт заходить на сайт і бачить кнопку чату, він очікує миттєвої відповіді. Але якщо чат не підключений до вашої системи підтримки, кожне звернення доводиться обробляти вручну — це втрата часу та клієнтів. Zendesk Chat (частина Zendesk Suite як Messaging) вирішує цю проблему, об'єднуючи чат і тікети в єдиному робочому столі агента. Часта помилка — спроба вбудувати iframe старого віджета без урахування CORS, що веде до помилок завантаження. Інша проблема — неправильна генерація JWT-токена через невірний secret-ключ, через що віджет не бачить користувача. Наша команда допомагає впровадити Zendesk Chat з урахуванням вашої архітектури: React, Vue, Laravel або навіть статичний HTML. Інтеграція під ключ включає встановлення віджета, налаштування JWT-аутентифікації та передачу даних про користувача в helpdesk. Оцінимо ваш проект безкоштовно. Неправильна інтеграція чату може коштувати бізнесу до 500 000 ₴ на рік через втрату клієнтів і неефективну підтримку.

Технічні складності підключення Zendesk Chat

Вибір версії віджета. Zendesk пропонує два API: Classic Web Widget (застаріваючий) та новий Web Widget (Messaging). Новий швидший на 30% за показником LCP і підтримує чат-ботів, але вимагає адаптації коду. Classic простіший у кастомізації, але вже не отримує оновлень. Ми допоможемо вибрати відповідний варіант під ваш стек і бюджет. Наприклад, на одному проекті з Vue 3 ми вибрали Classic через глибоку кастомізацію CSS, а на іншому з React 18 — Messaging для майбутньої інтеграції з чат-ботом.

JWT-аутентифікація. Без JWT віджет не зрозуміє, хто користувач, і тікети будуть анонімними. Генерація токена вимагає серверного коду та секретного ключа. Ми підготували готові приклади для PHP (з бібліотекою Firebase JWT) та Node.js. Як зазначено в документації Zendesk: JWT-токен повинен бути підписаний з використанням HS256 і містити поля name, email та external_id. Детальніше про JWT.

Передача кастомних даних. Часто потрібно передати номер замовлення, тариф або історію дій на сайті. Це реалізується через zE.identify() або messenger:set з додатковими параметрами. Без цього агент не бачить контекст — доводиться перепитувати, що збільшує час відповіді на 50%.

Як передати кастомні дані в Zendesk Chat?

Процес складається з чотирьох етапів:

  1. Аналіз поточного стеку. Визначаємо, який віджет підходить, де розміщувати код, чи потрібен JWT.
  2. Встановлення та налаштування віджета. Додаємо snippet в <head>, налаштовуємо локалізацію, колірну схему.
  3. Реалізація JWT та передачі даних. Пишемо endpoint для генерації токена, інтегруємо з вашою авторизацією.
  4. Інтеграція з API Zendesk. Налаштовуємо створення тікетів з форм зворотного зв'язку, синхронізацію з CRM. Дивіться API Zendesk для деталей.

Приклад коду: встановлення нового Web Widget

<script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=YOUR_KEY"></script>
<script>
zE('messenger:set', 'locale', 'ru');
zE('messenger', 'loginUser', function(callback) {
    fetch('/zendesk-token').then(r => r.json()).then(data => {
        callback(data.token);
    });
});
</script>

Приклад JWT-генерації на PHP

use Firebase\JWT\JWT;

$payload = [
    'iss' => 'yourcompany',
    'iat' => time(),
    'jti' => uniqid(),
    'name'  => $user->name,
    'email' => $user->email,
    'external_id' => (string)$user->id
];

$token = JWT::encode($payload, env('ZENDESK_JWT_SECRET'), 'HS256');

Приклад створення тікета через API

Http::withBasicAuth($email . '/token', $apiKey)
    ->post("https://yourcompany.zendesk.com/api/v2/tickets", [
        'ticket' => [
            'subject'  => $subject,
            'comment'  => ['body' => $message],
            'requester' => ['name' => $name, 'email' => $userEmail],
            'priority' => 'normal',
            'tags'     => ['website', 'contact-form']
        ]
    ]);

Порівняння Classic та нового Web Widget

Характеристика Classic Widget New Widget (Messaging)
Час завантаження (LCP) ~1.5 с ~1.0 с (на 30% швидше)
Підтримка чат-ботів Ні Так
Кастомізація Висока (CSS) Обмежена
Оновлення Тільки критичні Активні
Багатоканальність (месенджери) Ні Так
Типові помилки при інтеграції та їх вирішення
Помилка Причина Рішення
Віджет не завантажується Неправильно вказано ключ або заблоковано CORS Перевірити key в snippet, додати заголовки CORS на сервері
JWT-токен не спрацьовує Закінчився час життя (exp) або невірний secret Встановити iat та exp у розумних межах, звірити secret з панеллю Zendesk
Кастомні дані не передаються Невірно вказано імена полів у zE.identify() Використовувати ті ж ключі, що й у налаштуваннях Zendesk

Перед інтеграцією перевірте: визначте версію віджета, підготуйте endpoint для JWT, зберіть список переданих даних, налаштуйте API-ключі та переконайтеся в підтримці HTTPS.

Коли використовувати Classic Widget, а коли новий Messenger?

Classic Widget підходить, якщо потрібна глибока кастомізація CSS та повний контроль над інтерфейсом. Новий Messenger — якщо плануєте використовувати чат-ботів, багатоканальність (месенджери) та покращити LCP. Ми допомагаємо оцінити, виходячи з вашого трафіку, потреб у кастомізації та бюджету.

Що входить в роботу

  • Встановлення та налаштування віджета (будь-яка версія).
  • Реалізація JWT-аутентифікації з генерацією токена на сервері.
  • Передача кастомних даних (ім'я, email, ID, мета-інформація).
  • Налаштування авто-відповідей та тригерів у панелі Zendesk.
  • Інтеграція з API для створення тікетів з форм сайту.
  • Документація з експлуатації та навчання агентів підтримки.
  • Гарантія стабільної роботи 24/7 та допомога при оновленнях Zendesk.

Переваги роботи з нами

Більше 10 років досвіду в інтеграції чатів та helpdesk-систем. Виконали 50+ проектів з підключення Zendesk Chat на сайтах з навантаженням до 100 000 відвідувачів на місяць. Сертифіковані спеціалісти з Zendesk Suite. Даємо гарантію на всі роботи — якщо щось зламається, виправимо протягом 24 годин. Середній час обробки заявок скорочується на 60% після інтеграції, а економія бюджету на підтримку досягає 35% — у грошовому вираженні це може становити більше 200 000 ₴ на рік для середнього бізнесу. Один з клієнтів з трафіком 50 000 відвідувачів на місяць зекономив 150 000 ₴ за перший квартал після інтеграції.

Терміни та вартість

Базова інтеграція (віджет без JWT) — 1 робочий день. З JWT та передачею даних — 2-3 дні. Повний проект з кастомізацією та навчанням — до 5 днів. Вартість розраховується індивідуально після аудиту вашого сайту. Зв'яжіться з нами — оцінимо проект безкоштовно.

Для інтеграції Zendesk Chat зв'яжіться з нами. Ми запропонуємо оптимальне рішення під ваш бюджет і терміни. Отримайте консультацію з інтеграції Zendesk Chat — ми проаналізуємо ваш сайт і запропонуємо оптимальне рішення. Замовте безкоштовний аудит поточного чату.

Інтеграція email розсилок: чому вона часто ламається?

Ми стикалися з тим, що тригерний лист через 10 хвилин після реєстрації конвертує в 4–5 разів краще, ніж той самий лист через 24 години. Це не маркетинговий міф — це механіка: поки користувач теплий, поки пам'ятає контекст. Але більшість інтеграцій з розсильниками зроблені так: форма сабмітиться → синхронний HTTP-запит до API → якщо API гальмує, користувач чекає 3 секунди → лист йде або не йде, ніхто не знає.

Якщо ви зіткнулися з втраченими листами або потраплянням у спам, замовте аудит існуючої інтеграції — ми знайдемо вузькі місця за 2 дні.

Провайдери та їх API

Unisender — російський провайдер, популярний у сегменті SMB. REST API, простий. Додавання контакту: importContacts, відправка транзакційного листа: sendEmail. Важливо: для транзакційних листів (підтвердження замовлення, скидання пароля) Unisender Go — окремий сервіс з іншим API та окремою ціною. Змішувати масові розсилки та транзакційні в одному потоці — погана ідея для репутації домену.

SendPulse — надає email, SMS, web push, Viber, Telegram-боти через єдиний API. Для проєктів, де потрібен омніканал, це зручно. Automation 360 — візуальний конструктор ланцюжків, можна запустити автоматизацію через API event. SDK для PHP (sendpulse/rest-api-php-sdk) підтримується, але оновлюється нерегулярно — краще використовувати напряму через Guzzle.

Mailchimp — вибір для міжнародної аудиторії та маркетингових команд, звиклих до екосистеми Mailchimp. Transactional email — через Mandrill (дочірній сервіс). Marketing API v3 для управління списками, тегами, кампаніями. Webhook для подій: відкриття, клік, відписка, bounce.

SMS. Для Росії: СМСЦ, МТС Exolve, Devino Telecom, SMS Aero. API у всіх схожий: метод send, параметри phone, message, sender (ім'я відправника — потрібно реєструвати окремо у оператора). Один нюанс: ім'я відправника має бути зареєстровано через агрегатора з договором — без цього SMS не відправляться на мережі МТС/МегаФон/Білайн.

Провайдер Тип Транзакційні листи Маркетингові Особливості
Unisender email+SMS Unisender Go (окремо) так Популярний в РФ, простий REST
SendPulse email+SMS+web push+Viber так так Єдиний API, омніканальність
Mailchimp email Mandrill так Аналітика, міжнародний
Twilio SMS+email так ні Глобальний, дорогий в РФ

Як побудувати інтеграцію, щоб не втрачати листи?

Розділяємо транзакційні та маркетингові потоки

Транзакційні листи (підтвердження замовлення, скидання пароля, статус доставки) — через окремий домен-відправник або субдомен tx.example.com. Маркетингові розсилки — через mail.example.com або news.example.com. Якщо маркетингова розсилка отримає багато скарг на спам, це не повинно зачепити репутацію транзакційного потоку. Згідно з документацією SendGrid, транзакційні повідомлення слід відправляти через виділений IP-пул для запобігання перехресному впливу.

Черга та retry

Будь-який виклик до email API — через чергу (Laravel Queue, Bull, Celery). Якщо Unisender повернув 503 — задача йде в retry через 5 хвилин, потім 15, потім 60. Після 5 невдалих спроб — у dead letter queue з алертом. Користувач при цьому вже отримав свій 200 OK і не знає про проблему. Завдяки цьому підходу bounce rate на проєктах знижується до 0.5%.

Приклад job для Laravel:

public function handle(): void
{
    try {
        $response = Http::post(config('services.unisender.email_url'), $this->params);
        if ($response->failed()) {
            $this->release(300); // retry через 5 хв
        }
    } catch (\Throwable $e) {
        $this->release(300);
    }
}

Шаблони

Зберігаємо шаблони в коді (Blade, Twig, React Email), не в інтерфейсі провайдера. Причини: версіонування через Git, preview у браузері без відправки, можливість тестування. Для складних шаблонів з динамічним контентом — react-email з експортом в HTML через @react-email/render.

Валідація та згоди

Перед додаванням контакту до списку — double opt-in (лист з підтвердженням). Зберігати факт підтвердження з timestamp у своїй БД. При відписці — синхронно відписуємо і у провайдера, і в своїй базі. Ігнорувати webhook відписки — прямий шлях до блокування акаунта у провайдера. Всі процеси відповідають ФЗ-152 про персональні дані.

Як налаштувати DKIM для домену-відправника?

DKIM дозволяє підписувати листи цифровим підписом, що підвищує довіру поштових серверів.

  1. Згенеруйте пару ключів (наприклад, через OpenSSL: openssl genrsa -out private.key 2048).
  2. Опублікуйте публічний ключ у DNS як TXT-запис для селектора (наприклад, mail._domainkey.tx.example.com).
  3. Вкажіть селектор у провайдера (SendGrid, Mailgun, Unisender).
  4. Перевірте командою dig TXT mail._domainkey.tx.example.com.

Моніторинг доставності

Підключаємо webhook від провайдера на події bounce (жорсткий і м'який), spam_complaint, unsubscribe. Жорсткий bounce — негайно позначаємо email як невалідний у своїй БД, більше не відправляємо. М'який bounce 3 рази поспіль — те саме. Метрики: open rate, click rate, bounce rate, unsubscribe rate — дивимося не рідше разу на тиждень. Наші сертифіковані інженери налаштовують алерти в Grafana/Prometheus.

Чому важливо розділяти потоки?

Якщо відправити маркетингову розсилку з того ж домену, що й транзакційні листи, отримавши скарги на спам, ви ризикуєте заблокувати домен — і користувачі перестануть отримувати навіть підтвердження замовлень. SPF, DKIM, DMARC (Wikipedia SPF, Wikipedia DKIM) повинні бути налаштовані окремо для кожного потоку. Ми використовуємо субдомени з різними DNS-записами.

Обсяг робіт з інтеграції

  • Аудит поточних потоків комунікації та репутації домену (SPF, DKIM, DMARC)
  • Вибір провайдера та схеми: транзакційний vs маркетинговий трафік
  • Налаштування DNS-записів SPF, DKIM, DMARC (Wikipedia DMARC)
  • Розробка шаблонів листів (HTML + динамічний контент)
  • Інтеграція з бекендом через черги та API
  • Налаштування webhook для доставності та скарг
  • Документація з експлуатації та навчання команди
  • Гарантія доставності та підтримка після запуску

Терміни та вартість

Сценарій Термін (робочі дні) Примітка
Базові транзакційні листи (один провайдер) 5–7 днів Ціна розраховується індивідуально після аудиту
Тригерні ланцюжки + SMS + веб-пуши 10–20 днів Ціна розраховується індивідуально після аудиту
Повна омніканальна автоматизація 20–40 днів Ціна розраховується індивідуально після аудиту

Вартість розраховується індивідуально після аудиту. Ми працюємо під ключ: від аналізу до моніторингу в продакшені. Отримайте консультацію інженера — оцінимо проєкт безкоштовно та скажемо точні терміни. Досвід більше 7 років в інтеграції поштових сервісів, реалізовано 50+ проєктів. Замовте безкоштовний аудит поточної інтеграції — отримайте звіт з рекомендаціями.