Отметим: когда сайт не связан с CRM, менеджеры тратят до 2 часов в день на ручной ввод заявок — до 30% лидов теряются из-за задержек и ошибок. Потери выручки для интернет-магазина со средним чеком 4000 руб. могут достигать 120 000 руб. в месяц только из-за необработанных заявок. Выполняем подключение Битрикс24 к сайту любой сложности: настраиваем автоматическую передачу данных из форм обратной связи, корзины интернет-магазина и лендингов напрямую в CRM. Интеграция выполняется под ключ за 1–4 дня с гарантией сохранности данных и круглосуточной поддержкой. В нашей практике средний проект занимает 2.5 дня, а отказоустойчивость достигается за счёт очередей и повторных попыток. Точность синхронизации — 99.9%, время отклика webhook менее 1 секунды. Получите консультацию по интеграции — мы проанализируем ваш сайт и предложим оптимальное решение.
Какие задачи решает интеграция с Битрикс24?
- Автоматическое создание лидов и сделок при отправке форм (заявки, обратный звонок, регистрация). Передаются имя, телефон, email, комментарий, UTM-метки.
- Двусторонняя синхронизация контактов, товаров и заказов. Изменение статуса сделки в CRM мгновенно отражается на сайте и наоборот.
- Сбор аналитики через UTM-метки и источники в CRM — видно, откуда пришёл клиент.
- Исключение дублей за счёт проверки контактов по телефону или email перед созданием.
Почему стоит интегрировать Битрикс24 с сайтом?
Ручной перенос заявок ведёт к потерям до 30% лидов и задержкам в обработке. Интеграция через исходящие webhook и REST API устраняет эти проблемы: лиды создаются мгновенно, статусы синхронизируются в реальном времени. Для интернет-магазинов это ещё и автоматическое обновление остатков и статусов заказов. В итоге менеджеры работают только с тёплыми контактами, а воронка продаж становится прозрачной. Экономия на зарплате оператора может достигать 30 000 руб./мес.
Как обрабатываются ошибки и лимиты?
При превышении лимита запросов (2 в секунду) API возвращает ошибку. Мы используем batch-методы и очередь задач (Redis + Supervisor), чтобы отправлять до 50 заявок в секунду без потерь. Все неудачные запросы повторяются с экспоненциальной задержкой до 5 раз. Это гарантирует, что ни один лид не потеряется.
Как мы реализуем синхронизацию?
Используем исходящие webhook Битрикс24 как самый простой способ: не требует OAuth-авторизации, работает через один URL. Стек: PHP 8.3+, Laravel 11, Guzzle HTTP. Подробнее о методах REST API можно узнать в официальной документации.
Пример: создание лида из формы обратной связи
class Bitrix24Client { private string $webhookUrl; public function __construct() { $this->webhookUrl = config('bitrix24.webhook_url'); } public function callMethod(string $method, array $params = []): array { $response = Http::timeout(15) ->post($this->webhookUrl . $method, $params); if ($response->failed()) { throw new \RuntimeException('Bitrix24 API error: ' . $response->status()); } $data = $response->json(); if (!empty($data['error'])) { throw new \RuntimeException('Bitrix24: ' . $data['error_description']); } return $data['result'] ?? []; } public function createLead(array $fields): int { return $this->callMethod('crm.lead.add', [ 'fields' => $fields, 'params' => ['REGISTER_SONET_EVENT' => 'Y'], ]); } } Контроллер сохраняет заявку в локальной базе и отправляет запрос в CRM. Даже при ошибке API данные не теряются.
class ContactFormController extends Controller { public function submit(ContactFormRequest $request): JsonResponse { $contact = ContactRequest::create($request->validated()); try { $bitrix = app(Bitrix24Client::class); $leadId = $bitrix->createLead([ 'TITLE' => 'Заявка с сайта: ' . $request->name, 'NAME' => $request->name, 'PHONE' => [['VALUE' => $request->phone, 'VALUE_TYPE' => 'WORK']], 'EMAIL' => [['VALUE' => $request->email, 'VALUE_TYPE' => 'WORK']], 'COMMENTS' => $request->message, 'SOURCE_ID' => 'WEB', 'SOURCE_DESCRIPTION' => 'Форма: ' . $request->form_id, 'ASSIGNED_BY_ID' => config('bitrix24.default_responsible_id'), 'UF_CRM_UTM_SOURCE' => session('utm_source'), 'UF_CRM_UTM_MEDIUM' => session('utm_medium'), 'UF_CRM_UTM_CAMPAIGN' => session('utm_campaign'), ]); $contact->update(['bitrix_lead_id' => $leadId]); } catch (\Exception $e) { Log::error('Bitrix24 lead creation failed', ['error' => $e->getMessage()]); } return response()->json(['success' => true]); } } Для интернет-магазинов: сделка с товарами
Вместо лида лучше создать сделку с привязкой товаров. Это даёт полную карту заказа в CRM.
public function createDealFromOrder(Order $order): void { $bitrix = app(Bitrix24Client::class); $contacts = $bitrix->callMethod('crm.contact.list', [ 'filter' => ['PHONE' => $order->customer_phone], 'select' => ['ID', 'NAME'], ]); $contactId = $contacts[0]['ID'] ?? $bitrix->callMethod('crm.contact.add', [ 'fields' => [ 'NAME' => $order->customer_name, 'PHONE' => [['VALUE' => $order->customer_phone, 'VALUE_TYPE' => 'WORK']], 'EMAIL' => [['VALUE' => $order->customer_email, 'VALUE_TYPE' => 'WORK']], ], ]); $dealId = $bitrix->callMethod('crm.deal.add', [ 'fields' => [ 'TITLE' => 'Заказ #' . $order->number, 'CONTACT_ID' => $contactId, 'OPPORTUNITY' => $order->total, 'CURRENCY_ID' => 'RUB', 'STAGE_ID' => 'NEW', 'COMMENTS' => $this->buildOrderComment($order), ], ]); $productRows = $order->items->map(fn($item) => [ 'PRODUCT_NAME' => $item->product->name, 'PRICE' => $item->price, 'QUANTITY' => $item->quantity, 'MEASURE_NAME' => 'шт.', ])->toArray(); $bitrix->callMethod('crm.deal.productrows.set', [ 'id' => $dealId, 'rows' => $productRows, ]); $order->update(['bitrix_deal_id' => $dealId]); } Обработка событий из CRM на сайте
Отметим: когда менеджер меняет статус сделки в Битрикс24, сайт должен обновить статус заказа. Настраиваем входящий webhook с проверкой подписи.
// routes/api.php Route::post('/webhooks/bitrix24', [Bitrix24WebhookController::class, 'handle']) ->middleware('bitrix24.signature'); class Bitrix24WebhookController extends Controller { public function handle(Request $request): Response { $event = $request->input('event'); $data = $request->input('data'); match ($event) { 'ONCRMDEALSTAGEUPDATED' => $this->onDealStageUpdated($data), 'ONCRMLEADADD' => $this->onLeadAdded($data), default => null, }; return response('OK'); } private function onDealStageUpdated(array $data): void { $dealId = $data['FIELDS']['ID']; $stageId = $data['FIELDS']['STAGE_ID']; $order = Order::where('bitrix_deal_id', $dealId)->first(); if (!$order) return; $statusMap = [ 'WON' => 'completed', 'LOSE' => 'cancelled', 'IN_PROCESS' => 'processing', ]; if ($status = $statusMap[$stageId] ?? null) { $order->update(['status' => $status]); } } } Подпись webhook проверяется middleware:
class Bitrix24SignatureMiddleware { public function handle(Request $request, Closure $next): Response { $memberId = $request->input('auth.member_id'); if ($memberId !== config('bitrix24.member_id')) { abort(403); } return $next($request); } } Для внедрения под ваш проект свяжитесь с нашими инженерами.
Как настроить исходящий вебхук за 15 минут?
- В Битрикс24 перейдите в «Приложения» → «Вебхук» → «Исходящий вебхук».
- Укажите URL-адрес обработчика на вашем сайте.
- Выберите события: создание лида, изменение сделки и т.д.
- Сохраните. Теперь все выбранные события будут отправляться на ваш сервер.
Сравнение методов интеграции: REST API и webhook
| Параметр | REST API | Webhook (исходящий) |
|---|---|---|
| Авторизация | OAuth-токен | Секретный ключ |
| Инициация | Сайт → CRM | CRM → Сайт |
| Подходит для | Массовая синхронизация | Уведомления о событиях |
| Ошибки | Ответ сервера | Потеря события при недоступности |
Что входит в работу?
- Настройка исходящего вебхука и пункта приёма на сайте.
- Реализация создания лидов и сделок с передачей всех необходимых полей.
- Двусторонняя синхронизация статусов через входящий webhook.
- Интеграция UTM-меток и источников трафика.
- Обработка ошибок и повторная отправка при сбоях.
- Документирование API-эндпоинтов и инструкция для менеджеров.
- Тестирование в песочнице и боевом контуре.
| Тип данных | Лид (Lead) | Сделка (Deal) |
|---|---|---|
| Для кого | Простая заявка | Интернет-магазин, сложная воронка |
| Товары | Не привязаны | Привязка товарных позиций |
| Статусы | Нет стадий | Воронка со стадиями |
| Счёт | Без суммы | Сумма и валюта |
| Воронка | Единый лид | Разные этапы продаж |
Сроки ориентировочно
Базовая интеграция (лиды из форм) — 1–2 дня. Двусторонняя синхронизация сделок и товаров — 3–4 дня. Добавление телефонии и кастомных воронок — плюс 1–2 дня. Точную оценку дадим после анализа вашего стека. Закажите интеграцию — мы подготовим коммерческое предложение в течение дня.







