Коли тікети техпідтримки живуть окремо від замовлень, оператору доводиться стрибати між Usedesk та Бітрікс, щоб зрозуміти історію клієнта?
Це уповільнює відповідь, збільшує відсоток помилок та знижує LTV. Ми — команда з 7-річним досвідом інтеграцій, реалізували понад 50 проєктів зв'язку CRM та хелпдесків. Наша інтеграція 1С-Бітрікс та Usedesk забезпечує синхронізацію в реальному часі. Результат — оператор бачить всю картину в одному вікні, а клієнт отримує швидку відповідь без зайвих запитань. Інтегруємо ваш хелпдеск Usedesk з Бітрікс через REST API — економія часу оператора до 80% (до 16 000 грн на місяць на одного оператора при зарплаті 20 000 грн).
Проблеми, які вирішує інтеграція
- Розрив даних: замовлення є в Бітрікс, але в тікеті його не видно. Клієнт пише «де моє замовлення?» — оператор шукає номер вручну. Кожен третій клієнт повторює запит, втрачаючи до 15% LTV.
- Ручне перенесення: оператори копіюють email, телефон, історію з однієї системи в іншу — витрачаючи до 30 секунд на кожен тікет. При 100 тікетах на день це 50 хвилин пустої роботи. Вартість помилок оцінюється в десятки тисяч гривень щомісяця.
- Відсутність контексту: без інтеграції неможливо автоматично запропонувати знижку повторному клієнту або надіслати опитування після закриття тікету.
Як ми зв'язуємо тікети з замовленнями: синхронізація та передача даних
Використовуємо REST API Usedesk та події 1С-Бітрікс (OnAfterUserRegister, OnSaleOrderSaved). Все працює на штатних механізмах: агенти для фонових задач, теговане кешування для списку тікетів. Стек: PHP 8.1+, інфоблоки v2.0, MySQL.
Синхронізація клієнтів
При реєстрації користувача в Бітрікс (подія OnAfterUserRegister) створюємо або знаходимо клієнта в Usedesk. Зберігаємо мапінг у користувацьке поле UF_USEDESK_CLIENT_ID:
AddEventHandler('main', 'OnAfterUserRegister', function(&$fields) { $email = $fields['LOGIN']; // В Битрикс логин часто = email // Ищем существующего клиента по email $response = $usedesk->get('/clients', ['email' => $email]); if (!empty($response['clients'])) { $udClientId = $response['clients'][0]['id']; } else { // Создаём нового $response = $usedesk->post('/clients', [ 'name' => $fields['NAME'] . ' ' . $fields['LAST_NAME'], 'email' => $email, 'phone' => $fields['PERSONAL_PHONE'] ?? '', 'custom_fields' => [ ['id' => USEDESK_CF_BITRIX_USER_ID, 'value' => $fields['ID']], ], ]); $udClientId = $response['client']['id']; } // Сохраняем маппинг \CUser::SetUserField([], $fields['ID'], 'UF_USEDESK_CLIENT_ID', $udClientId); }); Передача даних замовлення в тікет
При створенні нового замовлення (подія OnSaleOrderSaved) записуємо дані в кастомні поля клієнта Usedesk. Це збагачує картку клієнта історією покупок:
AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); if ($order->isNew()) { $userId = $order->getUserId(); $udClientId = \CUser::GetByID($userId)->Fetch()['UF_USEDESK_CLIENT_ID'] ?? null; if (!$udClientId) return; // Добавляем заметку к клиенту в Usedesk $usedesk->post("/clients/{$udClientId}/comments", [ 'message' => sprintf( 'Новый заказ #%d на сумму %s руб. Статус: %s', $order->getId(), number_format($order->getPrice(), 2, ',', ' '), $order->getField('STATUS_ID') ), 'type' => 'note', ]); } }); Як пов'язати тікети з замовленнями в реальному часі?
Використовуємо кастомні поля Usedesk. Для кожного тікету можна задати ID замовлення Бітрікс. Webhook при створенні тікету оновлює це поле. Оператор в інтерфейсі Usedesk бачить посилання на замовлення та може перейти в Бітрікс одним кліком. Зворотний потік: при зміні статусу замовлення — надсилаємо коментар у тікет.
Чому варто обрати API-інтеграцію замість ручного імпорту?
Інтеграція через API обробляє запити в 10 разів швидше, ніж ручний імпорт даних. Помилки в даних зводяться до нуля, тоді як при ручному перенесенні їх рівень сягає 5%. Для магазину з тисячею замовлень на день ручний імпорт займає до 2 годин роботи оператора — проти 5 хвилин автоматичної синхронізації. Точність даних зростає у 20 разів, а час обробки тікетів скорочується на 70%.
Віджет Usedesk та особистий кабінет
Персоналізація віджета
Usedesk надає JS-віджет. Для персоналізації при авторизованому користувачеві передаємо його дані:
(function(d, w, c) { w.usedeskSettings = { company_id: "<?= USEDESK_COMPANY_ID ?>", <?php if ($USER->IsAuthorized()): ?> user: { name: "<?= htmlspecialchars($USER->GetFullName()) ?>", email: "<?= htmlspecialchars($USER->GetEmail()) ?>", fields: { custom_id: "<?= $USER->GetID() ?>" } }, <?php endif; ?> }; var s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = "https://secure.usedesk.ru/widget.js"; d.getElementsByTagName("head")[0].appendChild(s); })(document, w, c); Це дозволяє Usedesk автоматично пов'язати чат-сесію з карткою клієнта за email.
Відображення тікетів в особистому кабінеті
В ОК Бітрікс додаємо розділ «Мої звернення». Компонент запитує тікети клієнта через Usedesk API по client_id:
$udClientId = $USER->GetParam('UF_USEDESK_CLIENT_ID'); $tickets = $usedesk->get('/tickets', [ 'client_id' => $udClientId, 'per_page' => 20, 'page' => (int)$_GET['page'] ?: 1, ]); Список тікетів кешується на 60 секунд (\Bitrix\Main\Data\Cache).
Обробка webhooks з Usedesk
При зміні статусу тікету Usedesk надсилає webhook на наш обробник. Типове застосування: при закритті тікету (статус resolved) надіслати клієнту email з Бітрікс з пропозицією залишити відгук. Приклад обробника:
// /api/usedesk-webhook.php $payload = json_decode(file_get_contents('php://input'), true); // Верификация подписи $sig = hash_hmac('sha256', file_get_contents('php://input'), USEDESK_WEBHOOK_SECRET); if (!hash_equals($sig, $_SERVER['HTTP_X_USEDESK_SIGNATURE'] ?? '')) { http_response_code(403); exit; } if ($payload['event'] === 'ticket.resolved') { $email = $payload['ticket']['client']['email'] ?? ''; if ($email) { \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'SUPPORT_RESOLVED_REVIEW_REQUEST', 'LID' => SITE_ID, 'C_FIELDS' => ['EMAIL' => $email, 'TICKET_ID' => $payload['ticket']['id']], ]); } } Порівняння: інтеграція через API vs ручний імпорт
| Параметр | Інтеграція через API | Ручний імпорт/експорт |
|---|---|---|
| Швидкість оновлення | Реальний час | Раз на добу |
| Помилки в даних | 0% (автоматика) | до 5% (людський фактор) |
| Навантаження на оператора | Мінімальне | 10–15 хвилин на день |
| Масштабування | Не обмежено | Вимагає найму персоналу |
Що входить у роботу
- Налаштування API-клієнта — створення бібліотеки для роботи з Usedesk на PHP (Guzzle або cURL).
- Синхронізація клієнтів — мапінг користувачів Бітрікс в Usedesk через події реєстрації.
- Передача замовлень — автоматичне збагачення картки клієнта історією покупок.
- Віджет з персоналізацією — передача імені, email та ID користувача у віджет.
- Обробник webhook — прийом подій від Usedesk (статуси тікетів, нові повідомлення).
- Особистий кабінет — компонент для виведення тікетів на сайті Бітрікс.
- Документація та навчання — опис архітектури, інструкція для операторів.
Процес роботи та терміни
Ми працюємо ітераціями: аналітика → проєктування → реалізація → тестування → деплой.
| Етап | Тривалість |
|---|---|
| Аналіз та збір вимог | 1 день |
| Проєктування схеми даних | 1 день |
| Розробка (API-клієнт, події, віджет, webhook, особистий кабінет) | 4–5 днів |
| Тестування на тестовому контурі | 1 день |
| Деплой та моніторинг | 0.5 дня |
| Разом | 7–9 днів |
Орієнтовний термін — від 7 до 9 робочих днів. Вартість інтеграції починається від 30 000 грн. Ми гарантуємо стабільну роботу інтеграції та надаємо постпроєктний супровід: виправлення помилок, доопрацювання, консультації.
Готові розпочати? Пишіть нам для оцінки вашого проєкту. Інтеграція під ключ за 7-9 днів. Зв'яжіться з нами, і ми надамо детальний комерційний розрахунок.







