Перейти к содержимому
Все кейсыДистрибуция, B2B

Поставщик оборудования для стоматологии

Сквозная аналитика обращений: собрать источники, звонки и сделки в одну картину

38%Статусов не подтвердились
Поставщик оборудования для стоматологии

Компания продаёт оборудование через отдел продаж, сайт, маркетплейсы и мессенджеры. Данные жили в CRM, коллтрекинге, рекламных кабинетах и чатах и сходились только вручную, а регулярный отчёт собирался несколько дней. Мы сделали две вещи. Первая: собственное хранилище, куда стекаются все источники, и отчёт в браузере с группировками и фильтрами вместо ручной сводной таблицы. Вторая, и более важная: аудит самих данных. Прежде чем строить дашборд, мы проверили отчётные цифры против первичных записей и записей разговоров, потому что красивый отчёт на недостоверных данных вреднее его отсутствия.

Проблема
  • Данные разложены по CRM, коллтрекингу, рекламным кабинетам и чатам, сходятся только руками
  • Регулярный отчёт собирался вручную и занимал дни
  • Стоимость привлечения смешивала фонд оплаты труда с рекламным бюджетом
  • Склейку повторных обращений делало платное приложение по своим правилам и за абонентскую плату
Решение
  • Собственное хранилище: выгрузка всех источников в одну базу, обновление раз в два часа
  • Отчёт в браузере с группировками и фильтрами вместо ручной сводной таблицы
  • Своя склейка повторных обращений по всей базе за три года, вместо платного приложения
  • Аудит данных: каждая отчётная цифра сверена с первичными записями и записями разговоров
  • Атрибуция считается раздельно по направлениям, а не средним по всем обращениям
Результат
38% сделок со статусом «не удалось связаться» на самом деле имели разговор
98% анонимных обращений оказались перепиской, а не звонками
Потолок точности атрибуции измерен и назван прямо, вместо обещания «увидим всё»
Отчёт обновляется сам, ручная сборка сводной таблицы больше не нужна

Что было

Данные компании жили в CRM, коллтрекинге, рекламных кабинетах, чатах и на сайте. Каждый источник по-своему прав, а сводились они руками. Регулярный отчёт занимал дни, и на вопрос «почему в CRM одно, а в рекламном кабинете другое» ответить не мог никто.

Заказчик сформулировал задачу как переделку дашборда: нужны произвольные группировки, фильтры, выбор периода и все источники в одном месте.

Сначала аудит, потом дашборд

Прежде чем строить витрину, мы проверили сами цифры. Красивый отчёт на недостоверных данных вреднее его отсутствия: он не просто не помогает, он узаконивает ошибку и переносит её в решения.

Проверка шла сверкой отчётных значений с первичными записями и записями разговоров. Результаты оказались неудобными. Статус «не удалось связаться» проверки не выдержал: в 38% таких сделок разговор состоялся. Стоимость привлечения клиента смешивала фонд оплаты труда с рекламным бюджетом, то есть отвечала на два вопроса сразу и ни на один честно. А 98% обращений, которые считались анонимными, оказались перепиской в мессенджерах, а не потерянными звонками.

Устройство

Три слоя вместо запросов к внешним API прямо из страницы: загрузчики, своя база, витрина. Отчёт считается в браузере поверх построчных данных, поэтому любая группировка и фильтр отрабатывают мгновенно и не стоят ни одного обращения к API. Обновление раз в два часа по расписанию.

Наборов данных шесть, и у каждого своя грань: обращения, сделки, реклама, поисковые фразы, визиты, звонки. Складывать их в одну таблицу нельзя, это разные объекты. Сводка склеивает наборы только по дате: расход за день и обращения за день - это факты, а «вот этот расход дал вот это обращение» - гипотеза, подтвердить которую нашими данными невозможно.

Формулы стоимости обращения, стоимости сделки и возврата на маркетинг взяты из отраслевого глоссария дословно, чтобы цифры совпадали с общепринятыми по определению, а не по совпадению.

Честный потолок вместо обещания «увидим всё»

Главный вопрос сквозной аналитики - какую долю обращений она вообще способна связать с рекламой. Мы посчитали и назвали цифру вслух.

Считать надо раздельно по направлению звонка. Из 35 506 звонков за период входящих только 6 781: у исходящих рекламного источника не бывает по природе. В общем знаменателе покрытие занижается в шесть раз, и ровно эту ошибку мы сначала сделали сами, а потом поймали. Коллтрекинг сайта покрывает 10% входящих, и по месяцам эта доля стабильна.

Связка «расход - визит» строится надёжно: у сессий сайта канал заполнен полностью. Связка «визит - звонок» работает для каждого десятого входящего. Это и есть потолок, и теперь решения принимаются, зная его, а не веря в сто процентов.

Приёмка

Витрина обязана воспроизводить цифры, которые были посчитаны и записаны раньше, отдельно и другим способом. Проверка шла на закрытом месяце: количество обращений, доля площадки объявлений, доля качественных и доля спама сошлись клетка в клетку с ранее сделанным разбором.

Расхождение на такой проверке означало бы, что поехало определение метрики, а не что данные изменились. Это дешёвый способ поймать подмену смысла до того, как её увидит собственник.

Инженерная часть, которой не видно снаружи

Пакетные запросы к CRM молча теряли страницы: при превышении лимита времени страница возвращается пустой, и в базе оказалось 41 800 сделок вместо 47 317. У истории стадий нумерация записей независима для лидов и для сделок, поэтому с простым ключом 198 683 строки схлопывались в 167 706. Коллтрекинг по умолчанию отдаёт 28 полей и ни одной метки рекламной кампании, полный список пришлось собирать перебором. Рекламный кабинет на тяжёлых отчётах ставит запрос в очередь и отвечает кодом ожидания, который легко принять за отказ.

Ни одна из этих ловушек не роняет процесс. Все они тихо портят цифры. Поэтому в приёмке и стоит сверка с уже известными значениями.

Что заказчик получил на руки

Лиды, сделки и полную историю стадий за три года, звонки, сессии и заявки с форм, расход и поисковые фразы из рекламных кабинетов. Плюс каталог доступных данных: что есть, с какой даты и с какой полнотой.

Глубина у источников разная, и это меняет выводы при сравнении периодов. Сессий сайта, например, раньше марта нет вовсе, и ноль визитов там означает «система не отдаёт», а не «визитов не было». Такие вещи должны быть написаны в каталоге, а не выясняться на совещании.

Недозвон: обе версии заказчика пришлось снять

К разбору пропущенных звонков пришли с двумя готовыми объяснениями, которые внутри компании спорили между собой. Первое: «пропущенные это короткие звонки от сотовых операторов, там нечего терять». Второе: «мы теряем живых клиентов». Обе версии проверили по данным телефонии, и обе оказались неточными.

Версия про роботов не выдержала первой же проверки. Медиана ожидания у пропущенных 27 секунд, дольше тридцати секунд ждут 44% звонящих, каждый шестой висит на линии больше минуты. Двенадцать самых частых номеров ждут по 20-35 секунд подряд. Робот так себя не ведёт, столько ждёт человек.

Версия про потерянных клиентов подтвердилась лишь отчасти: 89,6% пропущенных всё-таки заканчиваются разговором, медиана возврата 61 минута. Совсем потерянных за два месяца 157.

Настоящая причина оказалась третьей, и её никто не называл. В 40,3% пропущенных, это 1 016 звонков, система вообще не смогла соединить клиента с оператором. Ни в одном из этих 1 016 звонков трубку не взял никто. Первой в цепочке распределения стоит техническая учётная запись портала, на которую пришлась 501 попытка дозвона: она физически не может ответить. Среднее ожидание у таких звонков 55 секунд против 18 у тех, кто бросил трубку сам.

Одно слово, два определения и разные цифры

В отчётах по этому же вопросу живут две метрики, которые звучат одинаково и расходятся на семнадцать процентных пунктов: 89,6% и 72%. Обе верны.

Первая означает «разговор состоялся хоть когда-нибудь и в любую сторону, включая повторный звонок самого клиента». Вторая: «мы сами позвонили на этот номер в течение суток». Первая отвечает на вопрос «потеряли ли мы клиента», вторая на вопрос «отработал ли менеджер». Это разные вопросы, и подставлять одну цифру вместо другой нельзя.

Такие развилки мы фиксируем письменно до того, как считать. Половина расхождений в отчётности возникает не из-за ошибок в данных, а из-за того, что два отдела вкладывают в одно слово разный смысл и сравнивают несравнимое.

Разбор звонков расшифровкой

Чтобы проверять статусы не по галочке в карточке, а по тому, что реально было сказано, записи разговоров переводятся в текст. Расшифровка 24-минутного звонка занимает 16 секунд, голоса разделяются автоматически, разговорная речь передаётся как есть.

Именно на этом сломался статус «не удалось связаться»: в 38% таких сделок разговор состоялся, и это видно в расшифровке, а не в CRM. Отчёт, построенный на поле статуса, показывал бы картину, которой не было.

Почему в CRM рекламы меньше, чем в телефонии

Отдельная находка, на которую указал подрядчик по контекстной рекламе: сделок с источником «Директ» в CRM стабильно меньше, чем обращений с тем же источником в системе коллтрекинга. Проверили запросами, замечание подтвердилось.

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

Отдельно всплыло, что часть обращений попадает в CRM с источником «Звонок» вместо названия рекламной системы. Это не канал, это отсутствие данных, и в отчёте оно должно называться именно так.

Разберём вашу задачу за 30 минут

Созвон на полчаса по видео или телефону. Смотрим, как всё устроено сейчас, и говорим, что с этим делать. Бесплатно и ни к чему не обязывает.

КС
Кирилл Смольников
Основатель · стратег

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.

Заявка у нас. Свяжемся в течение дня. Срочно - пишите в Telegram: @Masternobi