Уявіть: чорна п'ятниця, на сайт заходять сотні покупців, замовлення сиплються одне за одним. Але RetailCRM мовчить — дані йдуть у порожнечу. Менеджери не бачать замовлення, статуси збиваються, клієнти телефонують. Така ситуація знайома магазинам, де інтеграція 1С-Бітрікс з RetailCRM не розрахована на реальні навантаження. Проблема поглиблюється конфліктами даних: одне й те саме замовлення може бути створене двічі, якщо не налаштована дедуплікація за externalId. Крім того, при прямих викликах REST API на кожне замовлення сервер Бітрікса починає гальмувати, а RetailCRM відхиляє запити при перевищенні ліміту. RetailCRM, як і будь-яка CRM, вимагає точного маппінгу полів: статусів, складів, типів доставки. Без цього замовлення можуть загубитися або задвоїтися. Наша інтеграція вирішує ці проблеми на рівні протоколу. Ми усуваємо ці проблеми: налаштовуємо двосторонню синхронізацію через REST API RetailCRM v5 та асинхронні черги на агентах Бітрікса, які витримують 500+ замовлень на годину без втрат. За тривалий період ми реалізували понад 50 інтеграцій з RetailCRM — кожна окупилася за кілька місяців за рахунок зниження операційних витрат на 40%.
Сценарії, що вимагають власної інтеграції RetailCRM з Бітрікс
RetailCRM надає офіційний модуль для 1С-Бітрікс через маркетплейс. Модуль підходить для базових сценаріїв. Але коли обсяг замовлень перевищує 50–100 на добу або з'являються нестандартні вимоги, модуль перестає справлятися. Порівняємо:
| Критерій | Готовий модуль | Власна інтеграція |
|---|---|---|
| Час запуску | 1–2 дні | 1–2 тижні |
| Нестандартні статуси | Тільки базові | Будь-які |
| Складний маппінг складів | Не підтримує | Гнучке налаштування |
| Пікове навантаження (500+ замовлень/год) | Таймаути | Черга агентів (у 5 разів ефективніше) |
| Кастомізація під ваші бізнес-процеси | Обмежена | Повна |
Власна інтеграція потрібна, коли:
- Нестандартні статуси замовлень або властивості, яких немає в модулі.
- Складна логіка маппінгу (кілька магазинів, різні склади).
- Інтеграція з іншими системами через RetailCRM (телефонія, delivery-сервіси).
Кейс: пікове навантаження на розпродажі
У нашій практиці був випадок: клієнт — магазин одягу — зіткнувся з тим, що під час розпродажу 800 замовлень за 2 години призводили до 5-секундних затримок і таймаутів при прямому виклику RetailCRM API. Ми вирішили проблему через чергу на основі агентів Бітрікса. Замовлення записуються в таблицю черги, агент кожні 10 секунд надсилає порцію по 10 замовлень. Пікове навантаження згладжується, замовлення проходять за 1–5 хвилин. Економія часу на обробку — 70%, зниження навантаження на сервер — у 3 рази.
Як налаштувати двосторонню синхронізацію замовлень?
Базовий URL: https://yourdomain.retailcrm.ru/api/v5/. Автентифікація — заголовок X-API-KEY. Нижче — приклад нашого клієнта: клас для створення замовлення в RetailCRM.
class RetailCRMClient { private string $apiKey; private string $siteKey; private string $baseUrl; public function createOrder(\Bitrix\Sale\Order $order): ?string { $basket = $order->getBasket(); $props = $order->getPropertyCollection(); $items = []; foreach ($basket as $item) { $items[] = [ 'offer' => ['xmlId' => (string)$item->getProductId()], 'quantity' => $item->getQuantity(), 'initialPrice' => $item->getBasePrice(), 'discountPercent' => 0, ]; } $orderData = [ 'number' => 'BX-' . $order->getId(), 'externalId' => (string)$order->getId(), 'site' => $this->siteKey, 'status' => $this->mapStatus($order->getField('STATUS_ID')), 'customer' => [ 'externalId' => (string)$order->getUserId(), 'email' => $props->getUserEmail(), 'phone' => $props->getItemByPropertyOrderCode('PHONE')?->getValue(), ], 'items' => $items, 'delivery' => [ 'code' => $this->mapDelivery($order->getDeliveryId()), 'address' => ['text' => $this->getOrderAddress($props)], ], 'paymentType' => $this->mapPayment($order->getPaymentSystemId()), ]; $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('X-API-KEY', $this->apiKey); $http->setHeader('Content-Type', 'application/x-www-form-urlencoded'); $response = json_decode($http->post( $this->baseUrl . 'orders/create', 'order=' . urlencode(json_encode($orderData)) . '&site=' . $this->siteKey ), true); return $response['id'] ?? null; } } RetailCRM змінює статус замовлення (менеджер обробив, поставив на збірку, передав у доставку) — сайт повинен оновити статус. RetailCRM підтримує вихідні вебхуки (RetailCRM Webhooks). Налаштовуємо їх у розділі «Адміністрування → Вебхуки»:
$payload = json_decode(file_get_contents('php://input'), true); foreach ($payload['orders'] as $orderData) { $externalId = $orderData['externalId']; $newStatus = $statusMap[$orderData['status']] ?? null; if ($newStatus) { $order = \Bitrix\Sale\Order::load($externalId); $order->setField('STATUS_ID', $newStatus); $order->save(); } } Маппінг довідників
RetailCRM зберігає довідники: статуси, типи доставки, методи оплати — кожен з кодом. Коди потрібно привести до кодів Бітрікса:
| Статус Бітрікс | Статус RetailCRM |
|---|---|
| N (новий) | new |
| P (оплачено) | complete-payment |
| D (доставляється) | delivery |
| F (завершено) | complete |
| C (скасовано) | cancel-other |
Маппінг зберігається в налаштуваннях модуля або в користувацькій таблиці.
Чому інтеграція може розвалитися при піковому навантаженні та як цього уникнути?
Прямі синхронні виклики API при 500+ замовлень на годину — гарантовані таймаути. Черга на агентах згладжує піки та гарантує доставку. Економія часу на обробку сягає 70%, зниження навантаження на сервер — у 3 рази. Вартість інтеграції розраховується індивідуально, але в середньому окупається за 2–3 місяці.
Що входить в інтеграцію
| Компонент | Опис |
|---|---|
| Аудит архітектури | Перевірка схеми даних, поточних інтеграцій, обмежень хостингу |
| Проєкт маппінгу | Узгодження полів, статусів, складів, способів доставки |
| Розробка REST-клієнта | PHP-клас для обміну з RetailCRM API v5 |
| Налаштування вебхуків | Автоматичне оновлення статусів при змінах у CRM |
| Черга обробки | Агенти Бітрікса з порційною відправкою для згладжування піків |
| Документація | Схема інтеграції, опис обробки помилок |
| Пост-релізна підтримка | 30 днів виправлення, моніторинг стабільності |
Процес роботи над інтеграцією
- Аудит — аналізуємо поточну архітектуру, схему даних, бізнес-процеси.
- Проектування — розробляємо маппінг полів, схему черг, опрацьовуємо edge-кейси.
- Розробка — пишемо REST-клієнт, налаштовуємо вебхуки, реалізуємо чергу.
- Тестування — імітуємо пікове навантаження, перевіряємо синхронізацію туди й назад.
- Деплой — розгортаємо на production, вмикаємо моніторинг.
- Підтримка — 30 днів пост-релізної підтримки, виправлення можливих помилок.
Ми займаємося інтеграціями Бітрікс з CRM понад 5 років (досвід 5+ років) і реалізували понад 50 проєктів з RetailCRM. Вартість типової інтеграції — від $800 до $2000, що окупається за 2–3 місяці завдяки зниженню операційних витрат на 40% та збільшенню швидкості обробки замовлень у 5 разів порівняно з ручним введенням. Замовте розробку під ключ за 5–15 робочих днів — отримайте стабільну синхронізацію, яка витримає будь-який трафік. Оцініть проєкт безкоштовно: напишіть нам для аудиту вашої архітектури.







