Колтрекинг: подмена номера и источники звонков
Колтрекинг (Call Tracking) это динамическая подмена номера (DNI, Dynamic Number Insertion) для маркетинговой атрибуции. Платформа показывает каждому посетителю сайта отдельный номер из вашего пула и затем связывает входящий звонок с тем источником трафика, из которого пришел этот посетитель. Так вы видите не просто «звонков было 40», а из какой рекламы, кампании и ключевого слова пришел конкретный звонок.
К звонку привязываются UTM-метки, идентификаторы кликов рекламных систем (gclid, yclid, fbclid), roistat, реферер, страница входа и текущая страница, а также устройство и браузер посетителя.
Что такое колтрекинг и зачем он нужен
Обычная схема «один номер на весь сайт» не дает понять, какая реклама приносит звонки: все вызовы выглядят одинаково. Колтрекинг решает это так:
- посетитель открывает ваш сайт, скрипт собирает данные о его источнике;
- посетителю показывается персональный номер из пула;
- посетитель звонит на этот номер;
- входящий вызов сопоставляется с сессией посетителя, и в отчете появляется источник звонка.
В результате вы можете честно сравнить каналы и кампании по реальным звонкам, а не по кликам.
Как включить колтрекинг
Фича выключена по умолчанию у всех тенантов. Включить ее может только платформенный администратор 4phone (роль SUPERADMIN или ADMIN) галкой Call Tracking в карточке тенанта, в разделе «Основная информация».
Важно
Владелец тенанта не может включить колтрекинг самостоятельно. На странице Колтрекинг (/dashboard/call-tracking) он видит баннер со статусом (включено или выключено) и подсказку, к кому обратиться для активации. Если фича выключена, сначала запросите ее включение у поддержки 4phone.
После включения вся настройка выполняется тенантом самостоятельно в кабинете на странице Колтрекинг (/dashboard/call-tracking).
Из чего состоит настройка
Колтрекинг строится из трех сущностей:
- Сайт. Описывает площадку, на которой работает подмена: домен, CSS-селектор номера для замены, fallback-номер, время жизни назначения (TTL) и окно атрибуции в днях.
- Пул номеров. Группа номеров DID, которые по очереди выдаются посетителям сайта.
- Номера в пуле. Свободные номера DID, добавленные в пул. Именно их платформа показывает посетителям вместо статичного номера.
Пошаговая настройка
Порядок настройки колтрекинга
- убедитесь, что платформенный администратор включил Call Tracking для тенанта;
- создайте сайт и задайте его параметры;
- создайте пул номеров;
- добавьте в пул свободные номера DID;
- установите скрипт колтрекинга на свой сайт;
- сделайте тестовый звонок и проверьте отчет.
Шаг 1. Создайте сайт
На странице Колтрекинг добавьте сайт и заполните параметры:
| Параметр | Что задает |
|---|---|
| Домен | Площадка, на которой будет работать подмена номера |
| CSS-селектор | Элемент на странице, в котором отображается номер и который скрипт заменит на персональный |
| Fallback-номер | Номер, который покажется, если в пуле нет свободных номеров или колтрекинг выключен |
| TTL назначения | На сколько персональный номер закрепляется за посетителем |
| Окно атрибуции | Сколько дней входящий звонок еще связывается с прошлым визитом посетителя |
Совет
CSS-селектор должен указывать на тот элемент, где у вас на сайте написан телефон. Скрипт находит этот элемент и подставляет в него персональный номер вместо статичного.
Шаг 2. Создайте пул номеров
Пул это набор номеров, которые платформа выдает посетителям. Дайте пулу понятное имя: оно же будет использоваться как название кампании при прямых звонках (см. раздел про типы атрибуции).
Шаг 3. Добавьте номера DID в пул
Добавьте в пул свободные номера DID. Чем больше одновременных посетителей вы ожидаете, тем больше номеров нужно в пуле, потому что один номер в один момент закреплен максимум за одним посетителем.
Проверьте
Номеров в пуле должно хватать на пиковое число одновременных посетителей. Если все номера заняты, новому посетителю покажется fallback-номер, и его источник не будет отслежен.
Шаг 4. Установите скрипт на сайт
На странице Колтрекинг в кабинете есть готовый сниппет для копирования. Вставьте его на все страницы сайта перед закрывающим тегом </body>:
<script async src="https://api.4phone.uz/api/call-tracking/script.js?siteId=ВАШ_ID"></script>
Здесь siteId это идентификатор вашего сайта в колтрекинге. В кабинете сниппет уже содержит правильный siteId, поэтому проще скопировать его оттуда.

Как работает подмена номера
Когда посетитель открывает страницу, скрипт собирает данные о его источнике (UTM-метки, идентификаторы кликов, реферер, страницу входа, устройство и браузер) и запрашивает у платформы персональный номер. Затем происходит следующее:
- Закрепление номера. Свободный номер из пула закрепляется за сессией посетителя на время TTL. Номера выдаются по приоритету.
- Повторные визиты. Если тот же посетитель снова обращается за номером, ему отдается тот же номер, а его TTL продлевается.
- Продление сессии. Пока вкладка открыта, скрипт примерно раз в 90 секунд продлевает сессию (keepalive). На скрытой вкладке продление ставится на паузу и возобновляется, когда посетитель вернется.
- Защита от гонок. Выдача номера атомарна: один и тот же номер не будет одновременно показан двум разным посетителям.
Важно
Скрипт получает номер через resolve.js (метод JSONP, который не требует настройки CORS) или через запрос POST /resolve. Подходящий способ выбирается автоматически, отдельно настраивать ничего не нужно.
Особые ситуации:
- Все номера заняты. Если в пуле не осталось свободных номеров, посетителю отдается fallback-номер (ситуация
POOL_OVERFLOW). Такой звонок не получит источник. - Колтрекинг выключен. Если фича отключена, скрипт отдает статичный fallback-номер (
TRACKING_DISABLED) и ничего не записывает.
Окно атрибуции и типы атрибуции
Когда на номер пула приходит входящий звонок, платформа решает, как его атрибутировать. Логика построена так, чтобы обычные, не связанные с рекламой звонки не засорялись ложным источником.
| Тип | Когда возникает | Что попадает в отчет |
|---|---|---|
DYNAMIC |
Звонок на персональный номер сопоставился с последним назначением этого номера в пределах окна атрибуции | Источник из сессии посетителя (UTM, клики, кампания, ключевое слово, страница) |
STATIC |
Прямой звонок на номер активного пула без сессии посетителя | Кампания равна имени пула, источник не выдумывается |
| Нет атрибуции | Совпадения нет, и номер не входит в активный пул | Запись об источнике не создается |
Атрибуция работает по принципу last-touch (последнее касание). Звонок связывается с последним назначением номера, даже если TTL уже истек, но визит был в пределах окна атрибуции. По умолчанию окно равно 30 дням и настраивается в диапазоне от 1 до 180 дней. При совпадении назначение помечается сконвертированным.
Важно
Если звонок пришел на номер, который не входит в активный пул, и не совпал ни с одной сессией, источник не записывается. Это сделано специально: обычные не-трекинговые звонки не должны получать выдуманный источник.
Какие источники поддерживаются
К звонку привязывается широкий набор параметров атрибуции:
| Группа | Параметры |
|---|---|
| UTM-метки | source, medium, campaign, content, term |
| Идентификаторы кликов | gclid (Google), yclid (Yandex), fbclid (Facebook), roistat |
| Контекст визита | Реферер, страница входа, текущая страница |
| Устройство | Тип устройства, браузер |
| Свое | Произвольные custom-параметры для сквозной аналитики |
Совет
Custom-параметры удобны для сквозной аналитики: вы можете передавать собственные метки и затем группировать по ним звонки в отчете.
Где смотреть результаты

Данные трекаемых звонков попадают в два места:
- Отчет колтрекинга на странице Колтрекинг (
/dashboard/call-tracking). Здесь видно число звонков, отвечено и пропущено, с группировкой по источнику, каналу, кампании, ключевому слову, странице входа и номеру DID за выбранный период. - CRM. Источник звонка добавляется в заметки сделок и лидов в Bitrix24 и amoCRM, а также в переменные сценариев amoCRM (
tracking_source,tracking_campaignи другие). Подробнее про подключение CRM в статье CRM-интеграции: amoCRM, Bitrix24, Webhook.
Важно
В отчет и в CRM попадают только реально трекаемые звонки (атрибуция DYNAMIC и STATIC). Звонки без совпадения не записываются, поэтому статистика не разбавляется случайными вызовами.
Частые вопросы и ограничения
- Колтрекинг не показывает номера. Проверьте, что платформенный администратор включил Call Tracking, скрипт установлен на сайт, а CSS-селектор указывает на реальный элемент с телефоном.
- Звонок без источника. Скорее всего, все номера пула были заняты в момент визита (показался fallback) либо звонок пришел на номер вне активного пула.
- Источник «прилип» к пулу, а не к рекламе. Это атрибуция
STATIC: посетитель позвонил без сессии (например, набрал номер вручную), поэтому кампанией стало имя пула.
Проверьте
Главное ограничение это размер пула. Один номер в один момент закреплен максимум за одним посетителем, поэтому при нехватке номеров часть посетителей получит fallback и останется без атрибуции. Планируйте размер пула под пиковую посещаемость.
Следом полезно открыть Как настроить номер DID и маршрут и CRM-интеграции: amoCRM, Bitrix24, Webhook.