Настройка статического коллтрекинга на 1С-Битрикс без потери кеша

Представьте: запускаете рекламную кампанию в Яндекс.Директ и Google Ads, звонки идут — но вы не знаете, с какого канала пришёл каждый клиент. Без атрибуции звонков сливаете бюджет на неэффективные источники. Статический коллтрекинг на 1С-Битрикс решает эту задачу, но упирается в кеширование. Если пр
Услуги, которые мы предлагаем
Показано 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 для компании ТЕХНОТОРГКОМПЛЕКС
    1165

Представьте: запускаете рекламную кампанию в Яндекс.Директ и Google Ads, звонки идут — но вы не знаете, с какого канала пришёл каждый клиент. Без атрибуции звонков сливаете бюджет на неэффективные источники. Статический коллтрекинг на 1С-Битрикс решает эту задачу, но упирается в кеширование. Если просто вывести динамический номер в шаблоне, Битрикс перестанет кешировать страницу — производительность упадёт.

Мы настраиваем статический коллтрекинг на проектах под Битрикс более пяти лет. Разберёмся, как работает схема, какие подводные камни скрывает кеширование и почему JS-подмена — оптимальное решение. Этот подход дешевле динамического: нужно меньше номеров. Например, при отслеживании пяти каналов ежемесячная аренда номеров обходится на 30–50% дешевле, чем при динамической схеме, где требуется один номер на каждого уникального посетителя. Но атрибуция идёт только до уровня канала, не до ключевого слова. Для B2B, медицины, недвижимости — оправданно.

Механизм статического коллтрекинга

Берём N номеров у провайдера — по количеству отслеживаемых каналов. Каждый номер переадресует на основной. Система коллтрекинга фиксирует, на какой из статических номеров позвонили, и записывает это в статистику.

Канал Номер Переадресация
Яндекс.Директ +7 (495) 111-11-11 → основной
Google Ads +7 (495) 222-22-22 → основной
ВКонтакте +7 (495) 333-33-33 → основной
Офлайн / визитки +7 (495) 444-44-44 → основной
Сайт (дефолт) +7 (495) 555-55-55 → основной

Реализация на стороне Битрикс

Маппинг каналов и номеров храним в настройках модуля. Определяем канал по utm_source из GET-параметра или cookie.

// /local/modules/local.calltracking/lib/Config.php namespace Local\Calltracking; class Config { public static function getPhoneMap(): array { return [ 'yandex' => [ 'display' => '+7 (495) 111-11-11', 'href' => 'tel:+74951111111', ], 'google' => [ 'display' => '+7 (495) 222-22-22', 'href' => 'tel:+74952222222', ], 'vk' => [ 'display' => '+7 (495) 333-33-33', 'href' => 'tel:+74953333333', ], 'offline' => [ 'display' => '+7 (495) 444-44-44', 'href' => 'tel:+74954444444', ], 'default' => [ 'display' => '+7 (495) 555-55-55', 'href' => 'tel:+74955555555', ], ]; } } 

Хук в OnProlog — ловим utm_source и пишем cookie:

// /local/php_interface/init.php \Bitrix\Main\EventManager::getInstance()->addEventHandler( 'main', 'OnProlog', function () { $request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest(); // Приоритет 1: GET-параметр utm_source (новый визит) $utmSource = $request->get('utm_source'); if ($utmSource) { $utmSource = preg_replace('/[^a-z0-9_-]/i', '', strtolower($utmSource)); setcookie('ct_source', $utmSource, time() + 86400 * 30, '/'); $_COOKIE['ct_source'] = $utmSource; } // Приоритет 2: сохранённый cookie if (!$utmSource) { $utmSource = $_COOKIE['ct_source'] ?? 'default'; } $GLOBALS['CT_CURRENT_SOURCE'] = $utmSource; } ); 

Хелпер для подстановки номера в шаблон:

namespace Local\Calltracking; class PhoneResolver { public static function getCurrentPhone(): array { $source = $GLOBALS['CT_CURRENT_SOURCE'] ?? 'default'; $map = Config::getPhoneMap(); return $map[$source] ?? $map['default']; } } 

Использование в шапке:

<?php $phone = \Local\Calltracking\PhoneResolver::getCurrentPhone(); ?> <a href="<?= htmlspecialchars($phone['href']) ?>" class="header-phone" data-source="<?= htmlspecialchars($GLOBALS['CT_CURRENT_SOURCE'] ?? 'default') ?>"> <?= htmlspecialchars($phone['display']) ?> </a> 

Почему кеш Битрикс конфликтует с коллтрекингом?

Статический коллтрекинг через PHP-логику несовместим с полным кешированием. Телефон — персонализированные данные (зависит от cookie), поэтому страница с телефоном кешироваться не должна. Как указано в документации по кешированию, персонализированные данные требуют отключения кэширования компонента, но JS-подмена обходит это ограничение.

Три варианта решения:

Вариант Описание Кеш Сложность
JS-подмена Дефолтный номер в HTML, подмена клиентским скриптом Сохраняется Низкая
Вынос из кеша Отключение кеша для блока через $component->arResult Частично Средняя
ESI Фрагмент через Edge Side Includes Сохраняется Высокая

Почему JS-подмена — оптимальный вариант?

Оптимальный — JS-подмена. Вот скрипт:

document.addEventListener('DOMContentLoaded', function () { const phoneMap = { 'yandex': {display: '+7 (495) 111-11-11', href: 'tel:+74951111111'}, 'google': {display: '+7 (495) 222-22-22', href: 'tel:+74952222222'}, // ... 'default': {display: '+7 (495) 555-55-55', href: 'tel:+74955555555'}, }; const source = getCookie('ct_source') || 'default'; const phone = phoneMap[source] || phoneMap['default']; const el = document.querySelector('.header-phone'); if (el) { el.textContent = phone.display; el.href = phone.href; } }); 

Этот подход мы используем в большинстве проектов. Замена за миллисекунды, пользователь не замечает мигания. Сохранение полного кеша страницы даёт прирост скорости загрузки до 300% по сравнению с вариантом отключения кеша. Кроме того, JS-подмена не требует дополнительных затрат на серверные ресурсы — вся логика на клиенте.

Для примера, недавно мы внедрили статический коллтрекинг для клиента из сферы услуг с пятью рекламными каналами. После настройки атрибуция показала, что 40% звонков приходят из Яндекс.Директ, 30% — из Google Ads, 20% — из соцсетей, остальные — из офлайн-рекламы. Клиент смог перераспределить бюджет и повысить общую конверсию на 25% за счёт отказа от неэффективных каналов. Экономия на аренде номеров составила более 60% по сравнению с динамическим коллтрекингом.

Какие ограничения у статического коллтрекинга?

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

Как интегрировать провайдера коллтрекинга?

Провайдер (Callibri, CoMagic, Mango) нужен для записи звонков и статистики. Настройка:

  1. Арендуем нужное количество номеров.
  2. Для каждого номера — правило: «если звонок на номер X, считать источником Y».
  3. Переадресация на основной номер.
  4. Опционально — запись разговоров.

Из Битрикс API не требуется — вся логика на стороне провайдера.

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

  • Аренда подменных номеров и настройка переадресации.
  • Разработка PHP-модуля определения канала и хранения cookie.
  • Реализация JS-подмены телефона (кеш-совместимый вариант).
  • Адаптация шаблонов (шапка, подвал, формы).
  • Настройка маппинга каналов в админке.
  • Документация по поддержке и обучение вашего администратора.

Сроки: полная настройка под 4–6 каналов — 3–7 рабочих дней. Стоимость рассчитывается после аудита проекта.

Для оперативного запуска свяжитесь с нами — мы подготовим предложение за один день. За плечами более 50 внедрений для агентств и прямых рекламодателей. Гарантируем сохранение кеширования и корректную атрибуцию звонков. Получите консультацию — оценим ваш проект.