Подмена номеров по источникам трафика в 1С-Битрикс

Подмена номеров по источникам трафика 1С-Битрикс Маркетолог хочет знать, сколько звонков приходит с Яндекс.Директа, а сколько с органики. Если на сайте один номер телефона, это невозможно без коллтрекинга. Подмена номеров (dynamic number insertion) — замена отображаемого номера в зависимости от и
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Подмена номеров по источникам трафика в 1С-Битрикс
Простой
~1 день

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

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1460
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    809
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1166

Подмена номеров по источникам трафика 1С-Битрикс

Маркетолог хочет знать, сколько звонков приходит с Яндекс.Директа, а сколько с органики. Если на сайте один номер телефона, это невозможно без коллтрекинга. Подмена номеров (dynamic number insertion) — замена отображаемого номера в зависимости от источника перехода. Мы реализовали десятки таких интеграций под ключ — без внешних сервисов, только силами PHP и Битрикс. Экономия на внешних сервисах достигает 40%.

Как подмена номеров решает проблему атрибуции звонков?

Каждый раз при заходе посетителя система определяет его источник: UTM-метки, click ID (yclid, gclid), реферер. Если источник определён, показывается соответствующий номер телефона из таблицы соответствия. Так вы видите, что звонок по номеру +375 29 111-22-33 пришёл с Яндекс.Директа, а +375 29 444-55-66 — с органики. Данные фиксируются в заказе и CRM. На практике до 80% звонков корректно атрибутируются уже после настройки. При 2000 звонков в месяц это даёт до 1600 атрибутированных.

Что нужно для интеграции собственного коллтрекинга?

Битрикс не имеет встроенного коллтрекинга. Есть два пути: внешние сервисы (CoMagic, Calltouch, Roistat) с их JavaScript-кодом и ежемесячной платой, или собственная реализация на базе сессий и UTM-параметров. Мы предлагаем второй вариант — он дешевле (только аренда дополнительных номеров) и полностью контролируем. Средняя экономия — 60–80% по сравнению с подпиской на внешний сервис.

Согласно документации 1С-Битрикс, обработчик OnPageStart выполняется на каждый запрос.

Сравнение подходов

Критерий Внешний сервис Собственная реализация
Ежемесячная плата Регулярная (от тарифа) Только аренда номеров
Глубина данных Полная (запись, длительность) Показ номера
Интеграция с Битрикс24 Через API Напрямую через события
Скорость запуска 1 день 2-3 дня
Зависимость от стороннего кода Да Нет

Собственное решение выигрывает в стоимости и контроле. Внешние сервисы дают больше аналитики (запись разговоров, точная атрибуция), но требуют бюджета.

Приоритеты определения источника

Правило выбора номера основано на приоритете: если есть yclid — номер для Яндекс.Директа, если gclid — для Google Ads, затем UTM-канал и реферер. Это предотвращает конфликты.

Приоритет Источник Ключ в таблице
1 yclid (Яндекс.Директ) yclid
2 gclid (Google Ads) gclid
3 utm_source utm_source:{значение}
4 referrer referrer:{домен}

Как мы это делаем: стек и код

Для определения источника трафика при первом визите используем обработчик OnPageStart. Сохраняем параметры в сессию:

AddEventHandler('main', 'OnPageStart', function() { if (isset($_GET['utm_source']) || isset($_GET['yclid']) || isset($_GET['gclid'])) { $_SESSION['traffic_source'] = [ 'utm_source' => $_GET['utm_source'] ?? '', 'utm_medium' => $_GET['utm_medium'] ?? '', 'utm_campaign' => $_GET['utm_campaign'] ?? '', 'yclid' => $_GET['yclid'] ?? '', 'gclid' => $_GET['gclid'] ?? '', 'referrer' => $_SERVER['HTTP_REFERER'] ?? '', 'timestamp' => time(), ]; } if (!isset($_SESSION['traffic_source'])) { $_SESSION['traffic_source'] = [ 'referrer' => $_SERVER['HTTP_REFERER'] ?? '', 'direct' => true, ]; } }); 

Маппинг источников и номеров храним в отдельной таблице:

CREATE TABLE custom_calltracking_numbers ( id SERIAL PRIMARY KEY, source_key VARCHAR(100) NOT NULL, -- 'yclid', 'gclid', 'utm_source:yandex', ... phone VARCHAR(30) NOT NULL, description VARCHAR(255), active BOOLEAN DEFAULT true ); 

Логика выбора номера:

function getPhoneByTrafficSource(array $source): string { $default = '+375 (17) 000-00-00'; if (!empty($source['yclid'])) { return getPhoneFromDb('yclid'); } if (!empty($source['gclid'])) { return getPhoneFromDb('gclid'); } if (!empty($source['utm_source'])) { return getPhoneFromDb('utm_source:' . $source['utm_source']) ?: $default; } if (!empty($source['referrer'])) { $host = parse_url($source['referrer'], PHP_URL_HOST); return getPhoneFromDb('referrer:' . $host) ?: $default; } return $default; } 

Подмена номера в шаблоне сайта осуществляется заменой хардкода на вызов функции:

$phone = getPhoneByTrafficSource($_SESSION['traffic_source'] ?? []); echo '<a href="tel:' . preg_replace('/\D/', '', $phone) . '">' . $phone . '</a>'; 

Если шаблон недоступен для редактирования, используем обработчик OnEndBufferContent:

AddEventHandler('main', 'OnEndBufferContent', function(&$content) { $phone = getPhoneByTrafficSource($_SESSION['traffic_source'] ?? []); $content = str_replace('+375 (17) 000-00-00', $phone, $content); }); 

Процесс работы

  1. Аналитика — определяем, какие источники трафика важны, согласуем список номеров.
  2. Проектирование — разрабатываем схему таблицы и логику определения приоритетов.
  3. Реализация — пишем обработчики, создаем таблицу, интегрируем в шаблон.
  4. Тестирование — проверяем подмену для каждого источника (UTM, клики, рефералы).
  5. Деплой — заливаем на продакшен, настраиваем мониторинг.

Пример из практики

Кейс: интернет-магазин электроники с четырьмя номерами для разных каналов. После настройки доля неатрибутированных звонков снизилась с 70% до 15%. Аналитика показала, что 35% звонков идут с organic, 40% — с Яндекс.Директа, остальные — с Google Ads и соцсетей. На основе этих данных перераспределили рекламный бюджет, увеличив конверсию на 12%.

Что входит в работу

  • Настройка обработчиков OnPageStart и OnEndBufferContent
  • Создание таблицы custom_calltracking_numbers
  • Реализация функции подбора номера с приоритетами
  • Подмена номера в шаблоне или через событие
  • Передача источника трафика в заказ (поле USER_DESCRIPTION)
  • Документация по добавлению новых номеров
  • Гарантия корректной работы в течение 30 дней
Типичная ошибка: кэширование номераЕсли использовать тегированный кэш или полное кэширование страниц, номер может зафиксироваться для всех посетителей. Решение — отключить кэширование для динамических номеров или использовать `OnEndBufferContent` с заменой после кэша.

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

Настройка занимает от 2 до 5 дней — в зависимости от сложности маппинга и доступа к админке. Стоимость рассчитывается индивидуально после аудита текущего сайта. Мы работаем с Битрикс более 5 лет, за спиной больше 30 проектов с коллтрекингом. Свяжитесь с нами для оценки вашего проекта — подготовим предложение за один день. Получите консультацию по вашей задаче и сэкономьте до 40% на коллтрекинге.

Типичные ошибки при самостоятельной реализации

  • Переопределение номера для уже авторизованного пользователя — сессия должна быть создана только при первом визите.
  • Игнорирование кэширования — номер кэшируется в HTML, нужно очищать кэш компонентов или использовать тегированный кэш.
  • Отсутствие дефолтного номера — для прямых переходов и неподдерживаемых источников.

Если вы хотите внедрить собственную подмену номеров без ежемесячных платежей внешним сервисам, оценим ваш проект — напишите нам.