Интеграция 1С-Битрикс с CoMagic: синхронизация звонков и аналитики

Интеграция 1С-Битрикс с CoMagic Звонки уходят в никуда, а менеджеры переспрашивают данные? CoMagic — одна из немногих платформ коллтрекинга, которая хранит не просто источник звонка, а полную цепочку касаний посетителя. Но без связки с 1С-Битрикс эти данные оседают в интерфейсе CoMagic и не влияю
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с CoMagic: синхронизация звонков и аналитики
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    751
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    873
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    791
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1153

Интеграция 1С-Битрикс с CoMagic

Звонки уходят в никуда, а менеджеры переспрашивают данные? CoMagic — одна из немногих платформ коллтрекинга, которая хранит не просто источник звонка, а полную цепочку касаний посетителя. Но без связки с 1С-Битрикс эти данные оседают в интерфейсе CoMagic и не влияют на бизнес-процессы. Мы настраиваем интеграцию так, чтобы каждый целевой звонок автоматически создавал лид в CRM, а в карточке всплывала история всех взаимодействий с сайта.

Наш опыт в интеграциях CoMagic с Битрикс составляет более 30 проектов. Типичный результат — сокращение времени обработки лида на 40% и снижение стоимости лида до 30% за счёт точной атрибуции. Гарантируем прозрачность и стабильность работы решения.

Какие проблемы решает интеграция?

  • Потеря атрибуции звонков. Без visitor_id менеджер не видит, с какого канала пришёл клиент. CoMagic Data API привязывает к лиду данные всех сессий.
  • Ручной ввод данных. Звонки не попадают в CRM автоматически — приходится заносить вручную, что занимает до 5 минут на лид. Webhook сокращает этот процесс до секунд.
  • Дублирование лидов. Один и тот же номер может звонить несколько раз. Мы реализуем дедупликацию: если лид с таким номером уже есть, обновляем его, а не создаём копию.

Как CoMagic передаёт звонки в CRM?

CoMagic использует два механизма: webhook и Data API. Webhook при завершении звонка отправляет POST-запрос на ваш сервер, а Data API позволяет в любой момент запросить полную информацию о сессии по visitor_id. Мы реализуем оба — для мгновенного создания лида и для последующего обогащения.

Webhook: верификация и обработка

CoMagic подписывает каждый webhook HMAC-SHA256. Мы проверяем подпись и отбрасываем звонки короче 10 секунд — они почти всегда спам или ошибочный набор.

// /local/api/comagic-webhook.php require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'); $data = json_decode(file_get_contents('php://input'), true); $signature = $_SERVER['HTTP_X_COMAGIC_SIGNATURE'] ?? ''; $secret = \Bitrix\Main\Config\Option::get('local.comagic', 'webhook_secret'); $expected = hash_hmac('sha256', file_get_contents('php://input'), $secret); if (!hash_equals($expected, $signature)) { http_response_code(403); exit; } $event = $data['event_type'] ?? ''; if ($event === 'call_session_completed') { $processor = new \Local\CoMagic\CallProcessor(); $processor->handle($data['call_session']); } http_response_code(200); 

Обработчик звонка: создание лида

Если звонок признан целевым, мы создаём лид с привязкой к UTM-меткам и CoMagic ID. Если лид по этому номеру уже существует — обновляем, чтобы не плодить дубли.

namespace Local\CoMagic; class CallProcessor { public function handle(array $session): void { if (($session['is_lost_call'] ?? false) && ($session['duration_total'] ?? 0) < 10) { return; } $phone = $this->normalizePhone($session['visitor_phone_number'] ?? ''); if (!$phone) { return; } $existingLeadId = $this->findRecentLead($phone); $fields = [ 'TITLE' => 'Звонок CoMagic: ' . $phone, 'PHONE' => [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']], 'SOURCE_ID' => 'CALL', 'STATUS_ID' => 'NEW', 'UF_COMAGIC_ID' => (string)($session['id'] ?? ''), 'UF_UTM_SOURCE' => $session['utm_source'] ?? '', 'UF_UTM_MEDIUM' => $session['utm_medium'] ?? '', 'UF_UTM_CAMPAIGN' => $session['utm_campaign'] ?? '', 'UF_UTM_CONTENT' => $session['utm_content'] ?? '', 'UF_UTM_TERM' => $session['utm_term'] ?? '', 'COMMENTS' => $this->buildComment($session), ]; $lead = new \CCrmLead(false); if ($existingLeadId) { $lead->Update($existingLeadId, $fields, true); } else { $lead->Add($fields, true); } } private function buildComment(array $session): string { return implode("\n", [ 'CoMagic Session ID: ' . ($session['id'] ?? ''), 'Оператор: ' . ($session['employee_full_name'] ?? '—'), 'Длительность: ' . ($session['duration_total'] ?? 0) . ' сек.', 'Источник трафика: ' . ($session['traffic_type'] ?? '—'), 'Страница входа: ' . ($session['site_domain_url'] ?? '—'), 'Теги: ' . implode(', ', $session['tags'] ?? []), ]); } } 

Что даёт visitor_id?

CoMagic записывает cookie comagic_visitor на сайте. Когда лид проходит по цепочке, мы на сервере запрашиваем полную сессию через Data API и проставляем в кастомные поля: количество сессий, первый и последний источник. Это позволяет менеджеру видеть, с какого канала пришёл клиент, даже если звонок был не первым касанием.

class VisitorEnricher { private ApiClient $api; public function enrichLead(int $leadId, string $visitorId): void { try { $result = $this->api->call('visitors.get_visitor_info', [ 'visitor_id' => $visitorId, 'date_from' => date('Y-m-d', strtotime('-1 day')), 'date_till' => date('Y-m-d'), ]); $visitor = $result['data'][0] ?? null; if (!$visitor) { return; } $updateFields = [ 'UF_CM_VISITOR_ID' => $visitorId, 'UF_CM_SESSION_COUNT' => (int)($visitor['sessions_count'] ?? 0), 'UF_CM_FIRST_SOURCE' => $visitor['first_session']['utm_source'] ?? '', 'UF_CM_LAST_SOURCE' => $visitor['last_session']['utm_source'] ?? '', ]; $lead = new \CCrmLead(false); $lead->Update($leadId, $updateFields, true); } catch (\RuntimeException $e) { \CEventLog::Add([ 'SEVERITY' => 'WARNING', 'AUDIT_TYPE_ID' => 'COMAGIC_ENRICH_FAIL', 'MODULE_ID' => 'local.comagic', 'DESCRIPTION' => $e->getMessage(), ]); } } } 

Click-to-call: звонок прямо из CRM

CoMagic SIP позволяет совершать исходящие вызовы через API. Мы добавляем кнопку «Позвонить» в карточку лида и сделки. После нажатия оператор получает звонок на свою SIP-линию, и CoMagic соединяет его с клиентом.

public function initiateCall(int $leadId, string $operatorLogin): array { $lead = \CCrmLead::GetByID($leadId); $phones = \CCrmFieldMulti::GetList( [], ['ENTITY_ID' => 'LEAD', 'ELEMENT_ID' => $leadId, 'TYPE_ID' => 'PHONE'] ); $phoneRow = $phones->Fetch(); if (!$phoneRow) { return ['success' => false, 'error' => 'No phone']; } $result = $this->api->call('calls.make_call', [ 'virtual_phone_number' => \Bitrix\Main\Config\Option::get('local.comagic', 'virtual_number'), 'operator_login' => $operatorLogin, 'destination_number' => $phoneRow['VALUE'], ]); return ['success' => true, 'call_id' => $result['data']['call_session_id'] ?? null]; } 

CoMagic vs другие системы коллтрекинга

CoMagic выгодно отличается от аналогов глубиной данных. Например, в Callibri визит считается одним касанием, а CoMagic разбивает его на точки (страницы, каналы) — это даёт multi-touch атрибуцию «из коробки». Кроме того, CoMagic API позволяет гибко управлять звонками: инициировать вызов, менять сценарии, получать записи разговоров. По данным CoMagic, внедрение сквозной аналитики с их платформой увеличивает конверсию в продажу до 30%.

Характеристика CoMagic Callibri Alibra
Multi-touch атрибуция Да (из коробки) Только первое касание Только последнее касание
Webhook Есть Есть Есть, но без HMAC
Data API Полное (сессии, звонки, чаты) Ограниченное Ограниченное
Click-to-call Да Да (через сторонние API) Нет
Запись звонков Да Да Да

Кастомные поля, которые мы создаём

Код Привязка Тип Источник
UF_COMAGIC_ID Лид string Webhook
UF_CM_VISITOR_ID Лид string Cookie
UF_CM_SESSION_COUNT Лид integer Data API
UF_CM_FIRST_SOURCE Лид string Data API
UF_CM_LAST_SOURCE Лид string Data API
UF_UTM_SOURCE..TERM Лид, Сделка string Webhook / API

Что входит в интеграцию?

  • Модуль local.comagic: клиент API, процессоры событий, логгер.
  • Webhook-эндпоинт с верификацией HMAC-подписи.
  • Создание/обновление лидов в CRM по звонкам и чатам.
  • JS-перехват форм для передачи visitor_id.
  • Серверное обогащение данными сессии через Data API.
  • Опционально: click-to-call из карточки CRM и дашборд «CoMagic».
  • Документация, обучение администраторов, 2 недели поддержки после запуска.

Технические детали реализации

Аутентификация CoMagic использует JSON-RPC 2.0. Базовый класс ApiClient уже заточен под работу с Битрикс — он вынесен в отдельный namespace и использует \Bitrix\Main\Config\Option для хранения credentials. Все внешние вызовы залогированы в CEventLog.

namespace Local\CoMagic; class ApiClient { private string $baseUrl = 'https://dataapi.comagic.ru/v2.0'; private ?string $accessToken = null; private string $login; private string $password; public function __construct(string $login, string $password) { $this->login = $login; $this->password = $password; } public function call(string $method, array $params = []): array { if (!$this->accessToken) { $this->authenticate(); } $payload = [ 'jsonrpc' => '2.0', 'id' => uniqid('cm_', true), 'method' => $method, 'params' => array_merge(['access_token' => $this->accessToken], $params), ]; $ch = curl_init($this->baseUrl); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_TIMEOUT => 10, ]); $response = json_decode(curl_exec($ch), true); curl_close($ch); if (isset($response['error'])) { throw new \RuntimeException('CoMagic API error: ' . $response['error']['message']); } return $response['result'] ?? []; } private function authenticate(): void { $payload = [ 'jsonrpc' => '2.0', 'id' => 'auth', 'method' => 'login.user', 'params' => ['login' => $this->login, 'password' => $this->password], ]; $ch = curl_init($this->baseUrl); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); $this->accessToken = $result['result']['data']['access_token'] ?? throw new \RuntimeException('CoMagic auth failed'); } } 

Сроки и стоимость

Базовая интеграция (webhook → лид + UTM) — 1–2 недели. Полная сшивка с multi-touch атрибуцией, click-to-call и витриной данных — 4–6 недель. Стоимость рассчитывается индивидуально после аудита вашей CRM и объёмов трафика. Свяжитесь с нами для аудита и оценки проекта за один рабочий день.