Витрина данных для продаж и маркетинга: прозрачный ROI
Витрина данных для продаж и маркетинга помогает свести лиды, сделки и расходы на рекламу в одну модель и честно считать ROI по каналам.

Почему прозрачный ROI не получается без витрины
ROI почти всегда «не сходится», когда маркетинг смотрит на клики и расходы в рекламных кабинетах, а продажи живут в CRM и считают выручку по сделкам. Оба отчета могут быть правильными по отдельности, но вместе дают разные ответы на один и тот же вопрос: сколько денег принес канал.
Обычно теряется связка между тремя частями картины: расходами, лидами и выручкой. Расходы могут приезжать с задержкой или в другой валюте. Лиды дублируются (форма на сайте, звонок, чат). А выручка «уезжает» в сделки без источника, потому что менеджер не заполнил поле или источник перезаписался при повторном обращении.
Ручные таблицы и разрозненные отчеты редко спасают. Таблица быстро превращается в спор о том, чьи цифры «верные», вместо инструмента управления. Отчеты по отделам тоже не помогают: каждый считает по своим правилам. Разные окна дат, разные статусы, разные определения лида и конверсии.
Витрина данных для продаж и маркетинга закрывает именно эту дыру: появляется одна версия цифр, где расходы, обращения и итоговые деньги связаны по понятным правилам. В хорошей витрине заранее фиксируют, из каких систем берутся расходы, лиды и сделки, как убираются дубли и что считается «уникальным» лидом, какие статусы сделок участвуют в расчете и в какой момент появляется выручка, а также по какому ключу лид связывается с каналом и сделкой.
Когда эти правила закреплены в витрине, разговор меняется. Вместо «почему опять не сходится» обсуждают, какой канал масштабировать и где в воронке теряются деньги.
Какие данные нужно собрать: лиды, сделки и расходы
Чтобы витрина данных для продаж и маркетинга работала, важно собрать не все подряд, а то, что реально склеивается в цепочку «клик - лид - сделка - оплата». Если хотя бы одно звено выпадает, ROI начинает «прыгать», а команда спорит не о выводах, а о цифрах.
Обязательные источники
Чаще всего достаточно четырех групп данных: CRM (лиды, контакты/компании, сделки и их статусы), рекламные кабинеты (показы, клики и расходы по кампаниям), аналитика сайта (сессии, источники трафика, UTM, формы) и коллтрекинг (звонки, длительность, номер, метки источника, если используете).
Иногда часть данных о лидах живет не в CRM, а в таблицах отдела продаж или в почте. Это тоже источник, но его нужно формализовать: кто вносит, по каким полям, как часто обновляется.
Минимальные поля, без которых связка ломается
Форматы могут быть разными, но минимум должен совпадать. Проверьте, чтобы в каждом блоке были:
- дата и время события (клик/лид/сделка/оплата)
- канал и кампания (желательно также source и medium)
- UTM-метки или другой идентификатор источника
- уникальный ID лида и ID сделки (или ключ для склейки)
- сумма и валюта, плюс статус (успех/потеряно/в работе)
Расходы чаще всего берутся из рекламных кабинетов. Но если работает агентство, часть затрат может быть только в их отчетах (включая комиссии). А финальную «правду» по оплатам иногда дает бухгалтерия, особенно если вы считаете ROI от денег, а не от выставленных счетов.
Если данных не хватает, не откладывайте проект. Зафиксируйте, что именно отсутствует (например, нет UTM у звонков), задайте временное правило (например, привязка к последнему источнику сайта) и параллельно настройте сбор на будущее. Важно помечать такие места как «оценочные», чтобы не принимать по ним жесткие решения.
Договоритесь о терминах до сборки
Большая часть ошибок в ROI появляется не из-за формул, а из-за слов. Если маркетинг, продажи и финансы по-разному понимают «лид», «сделку» и «расходы», витрина данных для продаж и маркетинга будет считать аккуратно, но не то.
Зафиксируйте словарь на одном листе
Начните с простых определений и сразу решите, что попадает в учет, а что остается «для справки».
- Лид: новая потенциальная возможность, которая впервые появилась в вашей системе (форма, звонок, чат). Один человек не должен становиться двумя лидами из-за разных точек входа.
- Контакт: человек или организация в CRM. Контакт может быть создан позже лида, но не должен считаться новым лидом.
- Заявка: конкретное обращение (например, запрос КП). Заявок у одного контакта может быть несколько, и это нормально.
- Сделка: единица продаж, по которой принимается решение «выиграли/проиграли». Сразу договоритесь, какие этапы считаются активными, что такое «закрыта», и какую дату вы берете: создание, переход в «выиграна» или оплату.
- Выручка для ROI: что подставляете в расчет - сумму договора, сумму счета или поступление денег.
Типичный конфликт выглядит так: маркетинг считает лидом каждую заявку с сайта, а продажи создают лид в CRM еще раз при звонке. На бумаге лидов становится «в два раза больше», конверсия падает, а стоимость лида растет.
Расходы и окна времени
По расходам заранее определите состав: включаете ли НДС, комиссии площадок, оплату агентства, производство креативов, тестовые бюджеты. И главное - в какой момент расход считается понесенным: по дате счета, списанию, акту или оплате.
Отдельно задайте окна времени: сколько дней после клика или заявки вы связываете лид с расходом, и сколько времени даете сделке «дозреть» до выручки. Без этих правил одни и те же деньги будут «переезжать» между месяцами, и расчет ROI по каналам станет постоянно спорным.
Минимальная модель витрины: что с чем связывать
Минимальная витрина данных для продаж и маркетинга не обязана быть большой. Ей важно отвечать на один вопрос: сколько денег принес каждый канал по сравнению с тем, сколько он стоил. Для этого нужна схема, где расходы на рекламу можно связать с касаниями, а касания - с лидами и сделками.
Обычно хватает пяти таблиц:
- расходы (затраты по дням, кампаниям, объявлениям)
- касания (визиты, клики, звонки, заявки, источники)
- лиды (контакты и статус в CRM)
- сделки (воронка, суммы, этапы, дата оплаты)
- справочники (каналы, кампании, регионы, менеджеры, продукты)
Связки держатся на ключах. Идеально, когда везде есть стабильный client_id (или contact_id), а дальше цепочка lead_id -> deal_id. На практике часто приходится собирать пазл из нескольких признаков: UTM-метки, phone/email, дата и время события. Полезно хранить и рекламные идентификаторы (campaign_id, ad_id), чтобы не терять точность при агрегации.
Справочники важны не «для красоты». Они фиксируют единую классификацию: один и тот же канал не должен называться то «Paid Search», то «Контекст». То же касается регионов, менеджеров и продуктов - без единых справочников отчеты начинают расходиться.
Хорошее правило: сырье не трогаем, расчетам даем отдельные поля. В raw храните оригинальные UTM, исходные названия кампаний, телефон как пришел, сумму сделки как в CRM. Рядом держите рассчитанные поля: нормализованный канал, объединенный client_id, признак уникального лида, выручка по оплате, дата первой/последней активности. Так логику можно пересчитывать, не теряя исходных данных.
Как привести данные к одному виду
Чтобы витрина данных для продаж и маркетинга считала ROI честно, все источники должны говорить на одном языке. Иначе один и тот же канал окажется в отчетах как «google», «Google Ads», «gads» и «поиск», а сделки будут жить своей жизнью в CRM.
Начните с правил именования. Самое больное место - UTM и названия кампаний. Договоритесь о шаблоне, который можно проверять автоматически: единый регистр, один разделитель (например, подчеркивание), понятные значения для source, medium и campaign. Если рекламу запускают разные команды и подрядчики, без этого сравнение каналов превращается в угадайку.
Дальше сделайте нормализацию источников. В витрине держите две сущности: «как пришло» (сырой источник) и «как называется в отчетах» (нормализованный канал). Например, все варианты Google (включая авторазметку) приводите к одному каналу. Meta отделяйте от Instagram. Яндекс не смешивайте с органикой. Офлайн и партнеров фиксируйте отдельными правилами.
В первую очередь обычно унифицируют:
- справочник каналов и их групп (платный поиск, соцсети, партнеры, офлайн)
- правила для UTM и названий кампаний
- валюту, НДС и единые даты (часовой пояс)
- идентификаторы: lead_id, deal_id, client_id
- статусы и этапы воронки (только из утвержденного набора)
Отдельно решите, как хранить историю CRM. Для ROI важно не только текущее состояние, но и изменения: этапы, сумма, ответственный, дата закрытия. Самый надежный вариант - журнал событий или таблица истории, куда пишется каждая смена поля с временем.
Еще один частый перекос - повторные продажи и апсейл. Если клиент купил второй раз, не приписывайте весь доход к каналу привлечения. Разделяйте метрики: ROI привлечения (первая продажа) и ROI расширения (допродажи). Тогда маркетинг не будет выглядеть «волшебником» на старой базе.
Пример: в B2B компании вроде GSE.kz лид пришел из рекламы, потом ушел в длинный тендер, а через 4 месяца сумма сделки выросла после апсейла. Если в витрине есть история этапов и изменений суммы, видно, когда и за счет чего вырос доход, и какой канал действительно привел нового клиента.
Пошагово: как построить витрину данных
Витрина данных для продаж и маркетинга ценна не количеством таблиц, а тем, что цифры сходятся и их можно объяснить. Поэтому нужен короткий цикл: собрать, проверить, поправить.
Шаги, которые работают в реальных командах
-
Соберите список источников: CRM, рекламные кабинеты, веб-аналитика, биллинг, коллтрекинг, таблицы отдела. Для каждого источника запишите владельца данных, способ доступа и что считается «истиной» (например, суммы оплат - только из бухгалтерии).
-
Определите, как данные будут попадать в хранилище и как часто обновляться. Часто достаточно: расходы по рекламе раз в день, лиды и сделки каждый час, оплаты раз в сутки. Частота должна совпадать с тем, как вы принимаете решения.
-
Сделайте черновую витрину на 1-2 каналах, а не сразу на всех. Возьмите, например, контекст и органику, и проверьте логику на 10-20 реальных сделках: где появился лид, когда стал сделкой, когда пришла оплата, не потерялись ли статусы.
После первой проверки расширяйтесь аккуратно. Подключайте остальные каналы и справочники: единый список кампаний, каналов, регионов, продуктов. На этом шаге обычно всплывают дубли и расхождения.
Что обязательно проверить при расширении
- как склеиваются идентификаторы (телефон, email, client_id, deal_id) и что делать, если их несколько
- как убираются дубли лидов и контактов, чтобы не «раздувать» конверсии
- как учитываются возвраты и частичные оплаты, чтобы ROI не был завышен
Финальный слой делайте «для отчетов»: фиксированные поля, понятные названия, одинаковые правила расчета. Сразу настройте права доступа: маркетингу достаточно агрегатов по кампаниям, продажам нужны детали по лидам и сделкам, финансы должны подтверждать оплаты. Тогда отчеты будут совпадать у всех, а споры о цифрах станут редкостью.
Как считать ROI и какие метрики добавить рядом
ROI в витрине данных для продаж и маркетинга считается просто, но важно договориться, какую выручку подставлять. Базово: ROI = (выручка - расходы) / расходы. Для B2B чаще всего берут не сумму из КП, а подтвержденные деньги: оплату или выручку по закрытым сделкам.
Самая частая ошибка - считать ROI по «ожидаемой» выручке. Если вы используете сумму в сделке, зафиксируйте правило: это должен быть один и тот же тип выручки для всех каналов (например, «Closed Won сумма» или «Оплачено»). Если маржинальность сильно разная, полезнее считать ROI по валовой прибыли, а не по обороту.
ROMI отличается тем, что в расходах учитываются только маркетинговые затраты (реклама, подрядчики, инструменты). ROI шире: он включает всю цепочку, если вы добавляете затраты продаж (зарплаты, бонусы, обзвоны) и операционные расходы. ROMI удобен для сравнения каналов привлечения, ROI - для оценки, окупается ли воронка целиком.
Рядом с ROI почти всегда нужны метрики, которые объясняют, где ломается экономика:
- CPL (стоимость лида) и CPA (стоимость сделки/покупателя)
- CAC (стоимость привлечения клиента) с выбранным составом расходов
- конверсия лид -> квалификация -> сделка -> оплата
- средний чек и доля выигранных сделок
- срок цикла сделки (дней) и скорость движения по этапам
Если цикл сделки длинный, не сравнивайте «январские расходы» с «январской выручкой» напрямую. Обычно помогают два подхода: сравнение по когортам (месяц первого касания) и сравнение по дате оплаты/закрытия с лагом (например, окно 60-90 дней).
Возвраты, отмены и частичные оплаты учитывайте как корректировки. Для ROI удобнее использовать чистую выручку: оплаты минус возвраты. Частичные оплаты можно считать по факту платежей (кассовый подход) или распределять по графику, но правило должно быть одинаковым для всех каналов и периодов.
Атрибуция без усложнений: как связать лид с каналом
Чтобы витрина данных для продаж и маркетинга считала ROI прозрачно, нужно ответить на простой вопрос: какой канал «привел» лида. Практичный подход - закрепить за лидом один «канал по умолчанию» по понятным правилам, а рядом хранить альтернативные модели атрибуции для сравнения.
На старте обычно достаточно четырех моделей: first click (первое касание), last click (последний клик), линейная (всем касаниям поровну) и по позиции (например, 40% первому, 40% последнему, 20% середине). Если цикл сделки длинный, полезно держать два расчета рядом: по первому касанию для оценки верхней части воронки и по последнему клику для оценки «дожима».
Проблема номер один - лиды без UTM. Здесь важно не «угадывать», а ввести приоритеты источников и закрепить их в витрине:
- если есть gclid/yclid или явный рекламный источник, берете его
- если нет, но есть UTM, берете UTM
- если нет UTM, но есть referrer, считаете органикой или рефералом
- если нет и referrer (прямой заход), помечаете как «прямой»
- офлайн лиды (звонок, выставка) должны приходить с отдельной меткой источника
Отдельно задайте атрибуционное окно. Для быстрого продукта это может быть 7-14 дней, для B2B чаще 30-90. Слишком длинное окно завысит вклад рекламы, слишком короткое занизит, потому что лид «успеет забыть» первую точку входа.
И главное - честно используйте статус «неатрибутировано». Лучше видеть долю таких лидов и улучшать сбор данных, чем прятать проблему в «прямые» или «органику» и получать красивый, но неверный расчет ROI по каналам.
Пример: витрина для B2B-воронки от лида до оплаты
Представьте B2B-компанию в Казахстане, которая продает сложные решения: серверы, рабочие станции и внедрение. Заявки приходят с сайта (форма) и по телефону, а работа с клиентами ведется в CRM: лиды, сделки, счета, оплаты.
Маркетинг использует несколько источников трафика. Поиск приводит людей, которые уже «созрели» и ищут конкретную модель. Таргет в соцсетях чаще дает первые касания и более «сырые» лиды. Партнеры (интеграторы, реселлеры) приводят меньше заявок, но иногда с высоким средним чеком.
До появления витрины данных для продаж и маркетинга отчеты спорят друг с другом: в рекламных кабинетах видны клики и заявки, в CRM - сделки и деньги, а связать их в одну цепочку получается не всегда. Обычно всплывают одинаковые расхождения:
- дубли лидов: клиент оставил форму и потом позвонил, в CRM это два лида
- сделки без источника: менеджер создал сделку вручную и не заполнил поле «канал»
- расходы «висят в воздухе»: есть траты по кампании, но в данных нет ее идентификатора для связи с заявками
- разные статусы и даты: маркетинг считает по дате лида, продажи - по дате создания сделки или оплаты
После сборки витрины цепочка становится прозрачной: «расход -> лид -> сделка -> оплата». Решение по бюджету меняется не потому, что канал «плохой», а потому что видно, где теряются деньги. Поиск может давать меньше лидов, но больше оплат, и его имеет смысл защищать от сокращений. Таргет может оставаться выгодным, если отдел продаж быстро берет лиды в работу и есть понятные правила квалификации. Партнерский канал иногда показывает высокий ROI, но требует отдельного плана: совместные мероприятия, контроль качества передаваемых контактов, договоренности по этапам и ответственности.
Частые ошибки, из-за которых ROI становится недостоверным
Даже аккуратно собранная витрина данных для продаж и маркетинга может показывать красивый, но неправильный ROI, если в нее заложены неверные правила учета. Чаще всего проблема не в формулах, а в том, что разные команды по-разному понимают одни и те же цифры.
Типовые причины, из-за которых отчеты «ломаются»:
- путают лиды и контакты: контакт участвует в нескольких сделках, а лид конвертируется, и метрики начинают жить своей жизнью
- выбирают «не ту» дату и не проговаривают это: ROI по дате создания лида и ROI по дате выручки отвечают на разные вопросы
- не фиксируют изменения суммы сделки: суммы в B2B меняются, и без истории вчерашний ROI легко становится «другим» без реальных событий
- неполно или дважды учитывают расходы: комиссии, агентское вознаграждение, НДС, бонусы, возвраты часто размазаны по разным системам
- скрывают «неизвестный канал»: источник не заполнился, и его тихо относят к «прямым» или к самому успешному каналу, теряя сигнал о проблеме
Простой пример: у системного интегратора (например, при продаже серверов и инфраструктуры) цикл сделки длинный, а суммы корректируются после тендера. Если считать ROI по лидам за месяц, но выручку подтягивать по оплатам через квартал, без окна задержки и без истории изменений сумм отчет будет выглядеть как качели.
Минимальная защита: зафиксировать правила дат, хранить историю изменений сделки, вести единый справочник расходов и отдельно отслеживать долю «unknown» как метрику качества данных, а не как «корзину».
Чеклист перед запуском и следующие шаги
Перед тем как показывать цифры руководству, убедитесь, что витрина данных для продаж и маркетинга готова к жизни, а не только к красивому демо. Ошибки обычно прячутся в мелочах: разные названия полей, дубли лидов, некорректные окна времени.
Короткий чеклист перед запуском:
- подключены все нужные источники: CRM (лиды, сделки), рекламные кабинеты (расходы), справочники (продукт, регион, менеджер)
- согласованы ключевые поля и термины: что такое лид, MQL/SQL, сделка, выручка, валюта, статус оплаты
- устранены дубли и настроены правила склейки (email, телефон, ИИН/БИН, client_id, utm)
- заданы окна времени: когда расход считается относящимся к лиду и как долго «живет» канал
- настроены идентификаторы связки: единый lead_id/deal_id, а для рекламы - кампания, объявление, utm_source/medium
Дальше сделайте две контрольные проверки. Первая: сумма расходов в витрине должна сходиться с отчетами рекламных кабинетов за тот же период и в той же валюте. Вторая: при обновлениях сделки не должны «пропадать» или менять историю (вчера была выручка, сегодня ноль) без понятной причины и лога изменений.
Чтобы не увязнуть, начните с малого: один продукт, один регион, 2-3 канала (поиск, таргет, партнеры) и один понятный отчет - расходы, лиды, сделки, оплаченная выручка, ROI. Так проще заметить, где ломается связка. Частая ситуация: канал дает много лидов, но ноль оплат. Причина нередко не в канале, а в том, что оплаты фиксируются в другой системе и не попали в витрину.
Следующие шаги после пилота:
- автоматизировать обновления по расписанию и добавить мониторинг качества данных
- разграничить доступы для маркетинга, продаж и финансов, чтобы все смотрели на одно и то же
- зафиксировать версию модели и правил (что меняли и когда), чтобы ROI оставался сравнимым
Если для этого нужна инфраструктура и внедрение, можно опереться на системную интеграцию GSE.kz: подобрать серверы S200 под хранилище и рабочие нагрузки, а также организовать поддержку и стабильную работу витрины.
FAQ
Почему ROI не сходится, если отчеты в рекламе и CRM вроде правильные?
Чаще всего проблема в том, что расходы, лиды и выручка живут в разных системах и не связаны едиными правилами. Витрина фиксирует, как именно вы склеиваете клик, обращение, сделку и оплату, и дает одну «версию правды», чтобы цифры перестали расходиться между маркетингом и продажами.
Какие источники данных нужны в первую очередь для витрины?
Начните с CRM (лиды, контакты/компании, сделки, статусы), рекламных кабинетов (расходы, кампании), веб-аналитики (UTM, сессии, формы) и, если есть, коллтрекинга (звонки и их источники). Если оплаты подтверждаются в отдельной системе или у бухгалтерии, лучше сразу брать «факт денег» оттуда, чтобы ROI считался по реальным поступлениям.
Какие поля обязательны, чтобы связка «клик — лид — сделка — оплата» не ломалась?
Нужны дата и время события, канал/кампания, идентификатор источника (UTM или рекламные клики вроде gclid/yclid), а также устойчивые ID для склейки (lead_id, deal_id, client_id или заменяющий ключ). Для денег важно хранить сумму, валюту и статус, а также понимать, какую дату вы используете для выручки: закрытие сделки или оплату.
О чем нужно договориться по терминам до сборки витрины?
Сначала договоритесь, что считается лидом, а что — просто обращением или контактом, чтобы один человек не превращался в два лида из-за формы и звонка. Затем закрепите, какую выручку подставляете в ROI (сумма договора, счета или поступление денег) и какие статусы сделок участвуют в расчете. Без этого витрина будет считать корректно, но не то, что ожидает бизнес.
Как выбрать окна времени, чтобы ROI не «переезжал» между месяцами?
Нужно заранее выбрать окно, в пределах которого вы связываете лид с источником и расходом, например 30–90 дней для B2B. Параллельно определите, к какому периоду относятся расходы: по дате списания, акту или оплаты. Иначе вы будете сравнивать расходы одного месяца с выручкой другого и получать «качели» в ROI даже при стабильной воронке.
Какая минимальная структура витрины данных обычно работает?
Минимально достаточно таблиц расходов, касаний (визиты/заявки/звонки), лидов, сделок и справочников (каналы, кампании, продукты, регионы). Сырые данные лучше хранить отдельно и рядом добавлять рассчитанные поля: нормализованный канал, признаки дублей, выручку по оплате, даты первого и последнего касания. Так вы сможете менять логику расчетов, не теряя первоисточник.
Как привести каналы и кампании к единому виду, чтобы отчеты не дробились?
Заведите единые правила UTM и именования кампаний и проверяйте их автоматически, чтобы «google», «Google Ads» и «gads» не стали разными каналами. В витрине храните два поля: «как пришло» (сырой источник) и «как показываем в отчетах» (нормализованный канал). Отдельно приведите к одному виду валюты, часовые пояса и справочник статусов воронки.
Какую атрибуцию выбрать на старте и что делать с лидами без UTM?
Базово закрепите один «канал по умолчанию» на лид по понятному приоритету: рекламный идентификатор, затем UTM, затем referrer, затем прямой заход, а офлайн — только по явной метке. Параллельно можно считать альтернативы вроде first click и last click, чтобы понимать вклад верхней части воронки и «дожима». Важно оставлять статус «неатрибутировано», а не прятать такие лиды в «прямые», чтобы видеть качество данных.
Как правильно считать ROI в витрине и какие метрики смотреть рядом?
Сначала определите, какую выручку используете, и держите правило одинаковым для всех каналов и периодов; в B2B чаще берут оплаты или закрытые успешные сделки. Рядом с ROI полезно смотреть CPL/CPA, конверсии по этапам, средний чек и длительность цикла сделки, чтобы понимать причину цифры, а не только итог. Если маржинальность сильно различается, лучше перейти на расчет по валовой прибыли, иначе ROI по обороту будет вводить в заблуждение.
Какие ошибки чаще всего делают ROI недостоверным даже при наличии витрины?
Чаще всего ломают картину дубли лидов, сделки без источника, разные даты для расчетов и неполный учет расходов (комиссии, НДС, агентские). Еще одна частая проблема — отсутствие истории изменений в CRM, когда сумма и этап сделки меняются, а вы не видите, почему «вчера было иначе». Минимальная защита — правила дедупликации, единый справочник статусов и расходов, хранение истории сделок и отдельный контроль доли «unknown» как показателя качества данных.