Інтеграція 1С-Бітрікс з RetailCRM: налаштування та синхронізація

Коли на сайт приходить пік замовлень, а RetailCRM мовчить, дані втрачаються, а сервіс страждає. Ми налаштовуємо інтеграцію 1С-Бітрікс з RetailCRM через REST API та асинхронні черги, щоб синхронізація працювала без збоїв і втрат. Наша команда реалізує проєкт під ключ — від аудиту до підтримки, забезпечуючи надійне рішення, яке масштабується разом із вашим бізнесом.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Інтеграція 1С-Бітрікс з RetailCRM: налаштування та синхронізація
Середній
~1-2 тижні

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

Часті запитання

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1532
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1045
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    820
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    915
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    853
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1208

Уявіть: чорна п'ятниця, на сайт заходять сотні покупців, замовлення сиплються одне за одним. Але 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 днів виправлення, моніторинг стабільності

Процес роботи над інтеграцією

  1. Аудит — аналізуємо поточну архітектуру, схему даних, бізнес-процеси.
  2. Проектування — розробляємо маппінг полів, схему черг, опрацьовуємо edge-кейси.
  3. Розробка — пишемо REST-клієнт, налаштовуємо вебхуки, реалізуємо чергу.
  4. Тестування — імітуємо пікове навантаження, перевіряємо синхронізацію туди й назад.
  5. Деплой — розгортаємо на production, вмикаємо моніторинг.
  6. Підтримка — 30 днів пост-релізної підтримки, виправлення можливих помилок.

Ми займаємося інтеграціями Бітрікс з CRM понад 5 років (досвід 5+ років) і реалізували понад 50 проєктів з RetailCRM. Вартість типової інтеграції — від $800 до $2000, що окупається за 2–3 місяці завдяки зниженню операційних витрат на 40% та збільшенню швидкості обробки замовлень у 5 разів порівняно з ручним введенням. Замовте розробку під ключ за 5–15 робочих днів — отримайте стабільну синхронізацію, яка витримає будь-який трафік. Оцініть проєкт: напишіть нам для аудиту вашої архітектури.