Автоматизація: розробка модуля інтеграції з CRM 1С-Бітрікс
Щодня ви втрачаєте замовлення через ручне перенесення даних в CRM. Дуби контактів, забуті угоди, години рутини — це коштує бізнесу до 200 000 рублів на рік. Ми створюємо модуль синхронізації між Бітрікс та CRM, який автоматизує двосторонній обмін замовленнями, контактами, угодами та статусами. Без ручного введення. Без втрат. Наш досвід — понад 500 проєктів на 1С-Бітрікс — дозволяє проєктувати надійну архітектуру з чергами, дедуплікацією та логуванням. Замовте розробку модуля під ключ — і забудьте про ручне введення назавжди. Модуль окупається в середньому за 4 місяці, економлячи до 300 000 рублів на рік. Середній час синхронізації однієї операції — 2 секунди, а пропускна здатність — до 1000 замовлень на хвилину. Ручне введення — головне джерело помилок: забули передати контакт, неправильно вказали суму. Автоматизація знижує ці ризики до нуля.
Інтеграція з різними CRM та дані, що передаються
Інтегруємося з Бітрікс24, amoCRM, RetailCRM, Salesforce, HubSpot. Через REST API та вебхуки. При оформленні замовлення створюється угода з даними покупця, складом, сумою, UTM. Контакт або компанія оновлюється за нормалізованим номером телефону або email — це виключає дублі в 95% випадків. При зміні статусу замовлення на сайті статус угоди в CRM оновлюється автоматично. Зворотна синхронізація оновлює статус на сайті через вебхук — в середньому за 2 секунди. Повний обмін замовленнями між сайтом та CRM в реальному часі.
Як працює синхронізація: покрокова інструкція
- Покупець оформляє замовлення на сайті.
- Подія
OnOrderNewактивує обробник. - Модуль формує запит до CRM через REST API.
- Якщо CRM недоступна, запит зберігається в чергу.
- Раз на хвилину cron повторює невдалі запити.
- Успішна синхронізація фіксується в лозі.
Архітектура модуля
local/modules/vendor.crmintegration/ ├── lib/ │ ├── Adapter/ │ │ ├── Bitrix24Adapter.php │ │ └── RetailCrmAdapter.php │ ├── Mapper/ │ │ ├── OrderMapper.php # Замовлення → угода │ │ └── UserMapper.php # Користувач → контакт │ ├── SyncService.php │ └── WebhookHandler.php # Обробка вхідних вебхуків └── install/db/install.sql Схема таблиці логу синхронізацій
| Поле | Тип | Призначення |
|---|---|---|
| ID | int auto_increment | — |
| ENTITY_TYPE | varchar(50) | order, user, product |
| ENTITY_ID | int | ID сутності на сайті |
| CRM_TYPE | varchar(50) | lead, deal, contact |
| CRM_ID | varchar(100) | ID в CRM |
| DIRECTION | enum | OUTBOUND, INBOUND |
| STATUS | enum | SUCCESS, ERROR, PENDING |
| ERROR_MESSAGE | text | Текст помилки |
| CREATED_AT | datetime | — |
Інтеграція з Бітрікс24 та дедуплікація контактів
Для Бітрікс24 використовуємо REST API. Створення угоди при новому замовленні:
$dealData = [ 'TITLE' => 'Замовлення #' . $orderId . ' з сайту', 'OPPORTUNITY' => $order->getPrice(), 'CURRENCY_ID' => $order->getCurrency(), 'SOURCE_ID' => 'WEB', 'UF_ORDER_ID' => $orderId, // користувацьке поле в Б24 ]; $response = $this->callBitrix24( 'crm.deal.add', ['fields' => $dealData] ); $dealId = $response['result']; // Додаємо товари до угоди foreach ($basket as $item) { $this->callBitrix24('crm.deal.productrows.set', [ 'id' => $dealId, 'rows' => [[ 'PRODUCT_NAME' => $item->getField('NAME'), 'PRICE' => $item->getPrice(), 'QUANTITY' => $item->getQuantity(), 'PRODUCT_ID' => $item->getProductId(), ]], ]); } Метод callBitrix24 виконує запит до https://portal.bitrix24.ru/rest/{token}/. Токен зберігається в налаштуваннях модуля (b_option). Перед створенням нового контакту шукаємо існуючий за нормалізованим телефоном:
$existing = $this->callBitrix24('crm.contact.list', [ 'filter' => ['PHONE' => $normalizedPhone], 'select' => ['ID', 'NAME'], ]); if (!empty($existing['result'])) { $contactId = $existing['result'][0]['ID']; // Оновлюємо існуючий, не створюємо дубль } else { $contactId = $this->callBitrix24('crm.contact.add', [... ]); } Нормалізація прибирає відмінності у форматуванні: +7 (999) 123-45-67 та 89991234567 — один номер.
Чому REST API надійніший за файловий обмін?
Файловий обмін (CommerceML, CSV) — джерело конфліктів: дублі, затримки, втрата даних. REST API працює в реальному часі, кожна операція підтверджується відповіддю сервера. При помилці модуль повторює запит або зберігає в чергу — файловий обмін такої гарантії не дає. Докладніше про переваги REST можна прочитати в Wikipedia.
Як працює черга повідомлень та відмовостійкість?
Всі вихідні запити до CRM поміщаються в чергу в таблиці b_crm_queue. Cron обробляє чергу кожну хвилину, повторюючи невдалі спроби (до 5 разів з інтервалом 10 секунд). Це гарантує, що при недоступності API CRM замовлення не губляться. Вхідні вебхуки обробляються скриптом:
// local/api/crm/webhook/index.php $payload = json_decode(file_get_contents('php://input'), true); \Vendor\CrmIntegration\WebhookHandler::handle($payload); Обробник за CRM_ID з b_crm_sync_log знаходить ORDER_ID, оновлює статус через $order->setField('STATUS_ID', $mappedStatus) та зберігає.
Що входить в розробку модуля?
- Аналіз API цільової CRM та поточних бізнес-процесів (1 день).
- Проєктування архітектури модуля та схеми даних (1 день).
- Написання адаптерів, маперів, сервісу синхронізації (3–5 днів).
- Налаштування вебхуків та черги повідомлень (1–2 дні).
- Інтеграційне тестування на тестовому та бойовому контурах (2–3 дні).
- Документація з експлуатації та навчання ваших менеджерів (1 день).
- Технічна підтримка 3 місяці після запуску.
Процес розробки та терміни
| Масштаб | Склад | Термін |
|---|---|---|
| Базовий | Одна CRM, передача замовлення/контакту, вихідна синхронізація | 5–8 днів |
| Стандартний | + Вебхуки, двостороння синхронізація, дедуплікація, черга | 10–15 днів |
| Розширений | + Дві CRM, мапінг статусів, аналітика синхронізацій, Admin UI | 18–25 днів |
Зв'яжіться з нами для оцінки вашого проєкту — розрахуємо точну вартість та терміни за один робочий день. Отримайте консультацію — ми проаналізуємо вашу CRM та запропонуємо оптимальне рішення.







