Что болело до этого

Половина спора на отчёте это спор о словах. Клиент говорит «прибыль» и имеет в виду выручку. Агентство говорит «доход» и имеет в виду ровно то же самое. Дальше обе стороны обсуждают цифры, посчитанные по разным правилам.

Вторая боль: отчёт выглядит хорошо, денег в кассе нет. Мы собрали тринадцать настоящих жалоб с планёрок и созвонов и сделали из них раздел диагностики.

Третья боль оказалась нашей собственной. Ревизия задач двумя ролями, финдиром и маркетологом агентства, показала: в треке для новичков не было ни одной задачи про деньги владельца. Ни CPO, ни ROMI, ни ДРР. Зато восемь задач про показы, охваты и CPM, четыре из них повторяли друг друга.

Четвёртое. По запросу «маркетинговые метрики» в поиске лежат статьи-словари. Прочитать можно, посчитать свою ситуацию нельзя.

  • «CTR высокий, продаж нет»
  • «Лидов много, денег нет»
  • «ROMI в отчёте плюс, кассы нет»
  • «Директ показывает 100 конверсий, в CRM 40»
  • «Отдел продаж говорит: лиды мусорные»

Что собрали

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

  • Тренажёр из 143 задач в четырёх треках: новичок, собственник, маркетолог, клиентские кейсы. У задачи четыре варианта, формула, пошаговое решение и вывод «зачем это знать бизнесу». Разбор проходит по всем вариантам: «1 500 ₽ выходит, если взять только кабинет и забыть про работу агентства и сервисы»
  • Справочник из 59 метрик: расшифровка, формула, пример в рублях, частая ошибка расчёта. Фильтры по семи темам и по роли читателя
  • Таблица девяти показателей, по которым принимают решения: CR, CPL, CPO, CAC, LTV, окупаемость привлечения, ДРР, ROAS, ROMI. Каждый кликается и ведёт в свою карточку
  • Калькулятор юнит-экономики на шести ползунках. На выходе CAC, LTV в валовой прибыли, LTV/CAC, срок окупаемости, ДРР, ROAS, ROMI, шкала окупаемости и вердикт словами
  • Три интерактивные воронки. В денежной есть ступень «прибыль после маркетинга», которой нет в бухгалтерии: она показывает, сколько маркетинг съел от маржинальной прибыли
  • Диагностика по симптому: 13 жалоб, у каждой связка «что смотрим / в чём причина / что чиним»
  • Блок «Обозначения»: 16 денежных терминов с формулой, примером и графой «путают с». Это канон страницы, по нему выровнен весь остальной текст
  • Раздел UTM: таблица пяти параметров и конструктор ссылок на 10 пресетов с транслитерацией
  • Разбор по темам на вкладках, FAQ из 20 вопросов, две темы оформления, адаптив от телефона до мониторов шире 2300 px
!
Про поиск говорим честно

Позиций, трафика и числа пользователей в этом кейсе нет, и вот почему. Страница живёт на демо-домене агентства, а он целиком закрыт от индексации серверным заголовком. Счётчиков посещаемости на странице нет ни одного, прогресс тренажёра хранится только в браузере человека и на сервер не уходит. Брать такие цифры физически неоткуда, придумывать их мы не станем. Поисковая часть работы (микроразметка, семантика, карта сайта, llms.txt) собрана и ждёт переезда на основной домен: он привязан к уходу сайта с Тильды. Чеклист переезда из восьми пунктов уже написан, результат будем считать после него.

Как устроено внутри

Страницу руками не правят. Есть один шаблон и семь файлов данных: задачи, метрики, ключевые показатели, воронки, глоссарий, UTM, вопросы. Генератор на Python в 834 строки подставляет данные в шаблон и собирает готовый файл вместе с картой сайта.

Главный приём: одни и те же данные идут и в видимый текст, и в микроразметку Schema.org. Расхождение между тем, что читает человек, и тем, что читает робот, становится невозможным. Количество задач, метрик и терминов нигде не написано руками, числа подставляются метками и склоняются по-русски. В конце сборки идёт проверка, что незаполненных меток не осталось.

Второй приём: задачи лежат в HTML ровно один раз. Тренажёр читает их из data-атрибутов списка «Все задачи с решениями». Один список работает сразу как текст для поисковика, как материал для разбора на созвоне и как источник данных для интерактива. Дублирующего JSON на странице нет вообще. Без этого приёма версия на 122 задачах весила 830 КБ.

Сейчас собранный файл весит 885 КБ, в gzip 177 КБ, и содержит весь контент без подгрузок. Длину держим порциями: задачи по 10 с кнопкой «показать ещё», метрики по 12, справочные разделы во вкладках, диагностика и FAQ аккордеонами. Внешних JS-библиотек ноль: ни GSAP, ни jQuery, ни счётчиков. Единственная внешняя ссылка это шрифты.

Грабли, на которые наступили

Собрали по истории правок и по собственным проверкам. Полезнее всего оказались первые три.

  • Вырезали секцию по маркерам-комментариям и утащили вместе с ней границу зоны. На живом сайте ссылка «Тренажёр» повела в никуда, нумерация зон пошла 01, 03, 04, 05, тренажёр потерял свой фон. Коварство в том, что баланс тегов при этом сошёлся, и обычная проверка ничего не увидела. Теперь после структурной правки проверяем три вещи отдельно: якоря против списка существующих id, число открытых обёрток зон против закрывающих, нумерацию подряд
  • Поправили варианты ответа и забыли пересчитать индекс правильного: верным ответом стал случайный вариант. Поймал агент в роли финдира на задаче про окупаемость. Правило: индекс сверяем по тексту ответа, память здесь не работает
  • Семь из одиннадцати ссылок из таблиц в справочник молча не работали. Карточки CAC, LTV, ДРР, ROAS, ROMI лежали в скрытой порции «показать ещё», и клик по якорю просто ничего не делал. Починили функцией, которая сначала раскрывает порцию, потом доводит до карточки и подсвечивает её
  • Слияние пяти справочных секций во вкладки убило пять заголовков с поисковыми фразами. Вывод: сворачивая секции в табы, заголовки опускаем на уровень ниже внутрь панелей
  • Заголовок внутри кнопки аккордеона невалиден и не попадает в дерево доступности. Переделали по паттерну ARIA: заголовок снаружи, кнопка внутри. Фолбэк без JS через класс на body мигал, ушли на @media (scripting: none)
  • Первый экран пугал не ту аудиторию: в мокапе стояла задача уровня «собственник» с ROAS и валовой прибылью. Заменили на самую простую, про цену заявки
  • Файл llms.txt правится руками и уже отстал от страницы: говорит про три уровня при четырёх треках и про «более тридцати показателей» при 59. Ровно та болезнь, ради которой и делали генератор

Сколько это заняло

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

Внутри этих двух суток шесть волн переработки, все по замечаниям. Рост с 40 задач до 143. Разбор четырьмя ролями: маркетолог агентства, финдир, редактор, SEO. Ревизия актуальности двумя ролями: 243 решения по 122 задачам, после неё убрали 9 смысловых дублей, 12 задач перенесли в другой трек, 25 переписали, 20 добавили. Наведение единой денежной терминологии дало 72 замены после двух независимых финдиров и двух терминологов. В финале страницу сократили примерно на четверть.

Отдельная грабля про организацию работы. Одному агенту поручили свести 243 решения ревизоров в план целиком: он писал ответ больше 25 минут и не доехал. Ту же работу разбили на три партии и получили результат за 8 минут.

Частые вопросы

Сколько стоит доступ к тренажёру?

Нисколько. Это бесплатный контент-проект L7, он лежит по адресу marketing.l7agency.ru/metriki/ и открыт всем. Регистрации нет: прогресс по 143 задачам хранится в вашем браузере и на сервер не уходит.

Какие метрики можно посчитать прямо на странице?

Калькулятор юнит-экономики работает на шести ползунках. На выходе он даёт CAC, LTV в валовой прибыли, LTV/CAC, срок окупаемости, ДРР, ROAS и ROMI, плюс вердикт словами. Рядом лежит справочник из 59 метрик: расшифровка, формула, пример в рублях и частая ошибка расчёта.

Чем это отличается от статей со списком метрик?

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

У меня заявок много, а денег нет. Тренажёр поможет?

Для этого сделан раздел диагностики по симптому. Мы собрали 13 настоящих жалоб с планёрок и созвонов, у каждой связка «что смотрим / в чём причина / что чиним». Там же денежная воронка со ступенью «прибыль после маркетинга»: она показывает, сколько маркетинг съел от маржинальной прибыли.

Страница тяжёлая, на телефоне откроется?

Откроется. Собранный файл весит 885 КБ, в gzip 177 КБ, и содержит весь контент без подгрузок. Внешних JS-библиотек ноль: ни GSAP, ни jQuery, ни счётчиков. Задачи выдаются порциями по 10, вёрстка тянется от телефона до мониторов шире 2300 px.