01
Сначала определите единицу и управленческий вопрос
Для клуба удобной единицей обычно становится уникальный платящий клиент. Он может купить абонемент, продлить его, сменить тариф, получить подарочную карту и посещать разные филиалы. Если считать отдельный абонемент, одно продление превратит одного человека в несколько юнитов и занизит ценность клиентской истории. Если считать лид, дешёвые заявки могут создать красивый CAC без связи с оплатой.
Зафиксируйте вопрос до формулы. ARPU показывает доход периода на активного члена. Реализованный LTV показывает, сколько выручки уже получено в среднем от исторического плательщика. CAC показывает рекламный расход на нового плательщика. LTV/CAC сопоставляет полученный доход и стоимость привлечения. Окупаемость оценивает, сколько месячных ARPU требуется для покрытия CAC.
Эти метрики отвечают за доход и привлечение. Полная прибыльность требует маржинальности, переменных расходов, ФОТ, аренды, налогов и стоимости обслуживания. Поэтому юнит-экономику рассматривают рядом с P&L и движением денег. Высокое отношение LTV к CAC ещё не гарантирует положительный финансовый результат клуба.
Запишите scope: организация, филиалы, направления, валюта, часовой пояс, даты и состав дохода. Для первой приёмки возьмите один закрытый месяц и один клуб. После проверки расширяйте расчёт на сеть и сравнение филиалов.
- юнит: уникальный платящий клиент;
- период: календарный месяц организации;
- доход: утверждённые источники членства;
- расход привлечения: проверяемые рекламные затраты;
- результат: коэффициенты и исходные счётчики вместе.
02
Подготовьте канонические источники
Список продаж должен содержать подтверждённую оплату, дату, сумму, валюту, клиента, тип продукта и организацию. Для членства обычно включают новые абонементы, продления, оплаченные смены тарифа и активированные подарочные покупки. Возвраты и отмены учитываются по финансовому ledger, чтобы итог совпадал с рабочей отчётностью.
Клиентская база должна различать активное членство, завершённое членство, первую оплату и объединённые профили. При merge дублей все прежние продажи связываются с профилем survivor. Один телефон, один Telegram-профиль или похожее имя сами по себе не являются безопасным основанием для автоматического объединения.
Рекламные расходы собираются по датам, валюте и каналу. Для расхода в другой валюте нужна базовая сумма, рассчитанная по утверждённому источнику курса. Сумма из рекламного кабинета, агентская комиссия, производство креативов и зарплата маркетинга могут входить в CAC по разным правилам. Состав закрепляется в metric dictionary и не меняется посреди сравниваемого периода.
Посещения берутся из подтверждённых check-in или отметок занятия. Запись без фактического визита не считается посещением. Отмена и неявка остаются в отдельной операционной аналитике. Даты приводятся к часовому поясу организации, иначе ночные оплаты и визиты попадут в соседний день.
03
Рассчитайте ARPU за закрытый месяц
Базовая формула ProGym: ARPU = выручка членства за период / активные члены клуба. Активный член определяется по статусу членства на выбранную дату согласно правилам организации. В числитель входят только утверждённые источники дохода в базовой валюте.
Пример. За закрытый месяц клуб получил 180 000 000 UZS от абонементов, продлений, подарков и смен тарифа. Активная база составляет 600 человек. ARPU равен 300 000 UZS в месяц. Это средняя выручка на активного члена, а не средний чек отдельной продажи и не прибыль.
Проверьте знаменатель. Если использовать число оплат, клиент с тремя покупками станет тремя пользователями. Если использовать базу на произвольный день, сезонное открытие или завершение абонементов изменит результат. Согласуйте дату среза или метод средней активной базы и сохраняйте его версию.
При наличии операции в другой валюте возможны два честных варианта. Первый: привести её по утверждённому курсу и сохранить исходную сумму, валюту, курс и базовую сумму. Второй: исключить операцию и скрыть ARPU до исправления покрытия. Подстановка текущего курса задним числом делает сравнение периодов нестабильным.
04
Отделите реализованный LTV от прогнозного
В ProGym реализованный LTV = исторический доход членства / количество уникальных исторических плательщиков. Он показывает фактически полученную выручку на человека по доступной истории. Продления и смены тарифа увеличивают числитель, но тот же клиент остаётся одной единицей.
Пример. За всю доступную историю клуб получил 5 400 000 000 UZS от 2 000 уникальных плательщиков. Реализованный LTV равен 2 700 000 UZS. После объединения двух дублей число плательщиков уменьшается до 1 999, а оплаты остаются в истории survivor. Проекция пересчитывает результат по канонической личности.
Прогнозный LTV отвечает на другой вопрос. Его можно строить через ARPU, валовую маржу, срок жизни или churn, а также по когортам. Такой расчёт зависит от допущений и качества истории. Показывайте формулу, версию и диапазон сценария. Не смешивайте прогнозную прибыль с реализованной выручкой в одном значении.
Для нового клуба история короткая, поэтому реализованный LTV будет естественно ниже зрелого клуба. Сравнивайте когорты одинакового возраста: например, клиентов, впервые оплативших шесть месяцев назад. Общий lifetime полезен для текущей картины, а когортный анализ помогает понять изменение продукта и удержания.
05
Свяжите CAC с первой подтверждённой оплатой
Формула: CAC = рекламный расход периода / новые платящие клиенты периода. Новым плательщиком считается человек, чья первая подтверждённая оплата клубу попала в выбранный интервал. Повторная покупка, продление и смена тарифа не создают нового клиента.
Пример. Клуб потратил 45 000 000 UZS и получил 150 новых плательщиков. CAC равен 300 000 UZS. Если CRM показывает 1 000 лидов, стоимость лида составляет 45 000 UZS, но CAC остаётся 300 000 UZS. Обе метрики полезны на разных этапах воронки.
Расход и новые клиенты могут иметь временной лаг. Кампания конца месяца приведёт часть покупателей в следующем периоде. Для оперативного отчёта используйте единое правило по дате первой оплаты. Для анализа канала добавьте атрибуционное окно и когорту, сохранив исходный календарный CAC.
Когда рекламный источник отдаёт сумму только в исходной валюте, зависимые коэффициенты скрываются. Ноль означает подтверждённое отсутствие расхода, null означает недостаток данных. Это различие защищает команду от ложного вывода о бесплатном привлечении.
- первая оплата подтверждена финансовым контуром;
- один клиент считается один раз после merge;
- расход относится к той же организации и периоду;
- валюта и базовая сумма проверяемы;
- бесплатный и неизвестный расход различаются.
06
Посчитайте LTV/CAC и срок окупаемости
LTV/CAC = реализованный LTV / CAC. По примеру выше 2 700 000 / 300 000 = 9x. Это отношение выручки к рекламному расходу, потому что реализованный LTV в нашем примере выражен выручкой. Для отношения маржинальной ценности к полной стоимости привлечения нужно заменить числитель и состав CAC на утверждённые управленческие показатели.
Payback = CAC / месячный ARPU. При CAC 300 000 UZS и ARPU 300 000 UZS срок составляет один месяц. Формула показывает скорость покрытия рекламного расхода выручкой. Она не учитывает переменные затраты, поэтому финансовое решение проверяется через маржинальный payback и P&L.
Ориентир 3x часто используют как сигнал для обсуждения баланса привлечения и ценности клиента. ProGym показывает его в интерфейсе как внутреннюю подсказку. Клуб утверждает собственные уровни по формату, маржинальности и стадии роста. Студия персональных тренировок, семейный спортивный центр и большая сеть имеют разные затраты и денежный цикл.
Смотрите динамику и состав. Рост LTV/CAC может возникнуть из-за удержания и допродаж, а может из-за временного падения рекламных расходов. Снижение CAC при падении новых плательщиков тоже требует разбора. Рядом должны оставаться LTV, CAC, ARPU, число новых клиентов и сумма расхода.
07
Закройте churn и доход на визит
Churn закрытого периода показывает долю членов, завершивших членство, относительно утверждённой базы начала периода. Точная формула фиксируется в словаре метрик. Открытый месяц не получает финальное значение: клиент ещё может продлить членство, а администратор завершить обработку заморозки или переноса.
Пример. На начало месяца было 620 членов, у 31 членство завершилось по правилам периода. Churn равен 5%. Если часть из них продлилась до закрытия, система использует канонический итог, а не промежуточный статус из напоминания менеджера.
Доход на визит = выручка членства / подтверждённые посещения. При 180 000 000 UZS и 3 600 визитах показатель равен 50 000 UZS. Он помогает сравнить фактическое использование клуба с доходом, но сам по себе не оценивает прибыль занятия или тренера.
Сопоставьте доход на визит с заполняемостью, оплатой тренеров, вместимостью и типом услуги. Низкое значение может отражать активное использование годовых карт, а высокое значение может возникнуть при редких визитах. Решение зависит от цели клуба: загрузка, удержание, маржа или доступность направления.
08
Включите контроль полноты и запрет ложного нуля
У каждой метрики храните formula, owner, scope, timezone, event date, filters, currency, version и drill-down. Рядом с результатом показывайте дату обновления и coverage. Пользователь должен понимать, какие операции включены и почему значение отсутствует.
Система работает fail-closed. Неполная валюта скрывает зависимый ARPU или LTV. Рекламный расход без базовой суммы скрывает CAC, LTV/CAC и payback. Открытый период скрывает churn. Доступные проверяемые суммы и счётчики остаются на экране, чтобы сотрудник мог исправить конкретный источник.
Запретите замену null на ноль в экспорте и дашборде. Нулевой CAC означает, что подтверждённый рекламный расход равен нулю. Отсутствующий CAC означает, что расход не загрузился или не прошёл валютную проверку. Нулевой churn возможен только после закрытия периода и подтверждения, что завершившихся членств нет.
Для сети показывайте coverage по каждому филиалу до общего рейтинга. Филиал с полными данными и филиал с отсутствующим рекламным расходом нельзя сравнивать по LTV/CAC. Сначала устраните расхождение источников, затем включайте бенчмарк.
09
Проведите приёмку на реальных данных клуба
Возьмите закрытый месяц и десять клиентов разных типов: первая покупка, продление, смена тарифа, подарок, возврат, завершение членства, заморозка и объединённый дубль. Для каждого проследите сумму, дату, валюту, организацию и канонический профиль. Сверьте агрегаты с финансовым ledger и клиентскими карточками.
Положительный сценарий должен показать полный набор: ARPU, реализованный LTV, CAC, LTV/CAC, payback, доход на визит и churn. Состав дохода складывается в общую сумму, а движение базы объясняет активных членов. Повторная загрузка возвращает тот же результат.
Отрицательные сценарии важнее красивого дашборда. Добавьте историческую оплату в другой валюте без курса, рекламный расход без base amount и откройте текущий период. Проверьте, что зависимые коэффициенты скрыты с точной причиной. Затем исправьте источник и убедитесь, что значение появилось после повторного расчёта.
Проверьте безопасность двумя организациями. Сотрудник клуба видит только свою organization из Telegram-сессии. Изменение query, raw UUID или URL не должно открыть данные другого tenant. Обычной роли без финансового разрешения маршрут недоступен. Экспорт следует тем же правилам.
Завершите UX-проверкой на desktop и телефоне шириной 390 пикселей. Все шесть метрик читаются без горизонтальной прокрутки, вкладка остаётся доступной, touch targets имеют высоту от 44 пикселей, loading, empty и error различаются. Тексты объясняют формулу обычными словами.
- агрегаты совпали с ledger и CRM;
- merge не удвоил клиента;
- новый плательщик определён первой оплатой;
- валютные исключения видимы;
- null не превратился в ноль;
- organization isolation подтверждена;
- результат одинаково понятен на desktop и mobile.
10
Превратите расчёт в ежемесячный управленческий цикл
После закрытия месяца финансовый ответственный подтверждает ledger и валютные пересчёты. Маркетинг сверяет рекламные расходы и новых плательщиков. Руководитель клуба смотрит ARPU, LTV, CAC, payback, churn и движение базы. Расхождения получают владельца и срок исправления.
Сравнивайте периоды по одной версии формулы. Изменение состава дохода или CAC оформляется новой версией и применяется с зафиксированной даты. Исторические отчёты сохраняют прежнее определение либо пересчитываются отдельным утверждённым процессом.
Решения связываются с конкретным рычагом. Низкий ARPU ведёт к разбору тарифов, допродаж и состава базы. Высокий CAC ведёт к каналам, конверсии пробного занятия и скорости ответа. Слабый реализованный LTV ведёт к продлениям, возврату бывших членов и качеству продукта. Рост churn ведёт к когортам, посещаемости и причинам завершения.
В ProGym рабочая вкладка использует те же данные, что членство, продажи, рекламные расходы и посещения. Руководитель получает расчёт с объяснимым происхождением, а команда может перейти из коэффициента к процессу, который на него влияет.