Автоматизация: разработка модуля интеграции с 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 и предложим оптимальное решение.







