Product market fit (PMF): что это и как увидеть его в данных
Product market fit — соответствие продукта рынку. Как проверить PMF по данным: кривая удержания когорт и плато, опрос Шона Эллиса и порог 40%, доля органики, повторные платежи, типичные ошибки.
Содержание статьи
Регистраций в июле на 60% больше, чем в июне. Основатель пишет инвесторам, что product market fit найден, и просит бюджет на рекламу. Аналитик открывает когорты и видит другое: три четверти прироста привёл новый платный канал, и через месяц из него остаётся треть пользователей, а из рекомендаций — две трети. Ниже — что такое product market fit (PMF), по каким данным его проверяют и как посчитать главный признак, кривую удержания, на учебной базе.
Коротко
Product market fit (PMF, продукт маркет фит) — состояние, в котором продукт решает задачу конкретного рынка настолько хорошо, что люди продолжают им пользоваться и платить без постоянного подталкивания.
- Главный количественный признак — кривая удержания когорты перестаёт падать и идёт ровно. Если она уходит к нулю, рост держится только на притоке новых пользователей.
- Опрос Шона Эллиса дополняет поведение: доля ответивших «очень расстроюсь», если продукт исчезнет. Ориентир — 40%, и это эмпирическое правило, а не статистический порог.
- Рост регистраций сам по себе о PMF не говорит: его можно купить рекламой.
- PMF бывает у сегмента, а не у продукта целиком. Считайте удержание по каналам и типам клиентов, а не одно среднее.
- Смотрите только на зрелые когорты — те, у которых окно наблюдения уже закрыто.
Что такое product market fit простыми словами
Термин разошёлся после заметки Марка Андриссена «The only thing that matters» (июнь 2007 года). В ней PMF описан как ситуация, когда команда находится на хорошем рынке с продуктом, способным этот рынок удовлетворить. Саму формулировку Андриссен приписывает инвестору Энди Рэклеффу из Benchmark Capital и называет его именем правило: для стартапа важно только одно — дойти до PMF.
У Андриссена признаки PMF описаны как ощущения: без него клиенты не понимают ценности, сарафанное радио молчит, сделки не закрываются; с ним продукт покупают быстрее, чем команда успевает нанимать поддержку. Описание узнаваемое, но аналитику с ним работать нельзя: «чувствуется» не положишь в отчёт и не сравнишь между кварталами.
Рабочий перевод на язык данных такой: PMF есть, если заметная и стабильная доля привлечённых пользователей остаётся с продуктом надолго. «Остаётся» — значит совершает действие, ради которого продукт существует, и продолжает платить, если продукт платный. Всё остальное — рост, выручка, отзывы — следствия, и по отдельности их можно получить и без PMF.
PMF часто путают с результатом MVP. MVP отвечает на вопрос, нужна ли вещь хоть кому-то; PMF — на вопрос, нужна ли она достаточному числу людей настолько, что они не уходят.
Как понять, что есть product market fit: кривая удержания
Возьмите людей, которые пришли в один период, и для каждой недели после регистрации посчитайте, какая доля из них была активна. Получится кривая удержания когорты. В первые недели она падает у любого продукта: часть людей зашла из любопытства. Вопрос в том, что происходит дальше.
Вариантов два. Кривая выполаживается: начиная с какой-то недели доля активных почти не меняется. Значит, в когорте есть ядро, которому продукт нужен постоянно. Либо кривая продолжает снижаться к нулю — тогда каждая когорта со временем уходит целиком, и база живёт только за счёт новых регистраций. Брайан Балфур в заметке 2013 года формулирует это осторожно: если кривая в какой-то момент становится плоской, PMF, вероятно, найден для какого-то рынка или аудитории. Оговорка «для какого-то» важна, к ней вернёмся ниже.
Важна не только форма, но и высота плато. Плато на 5% и плато на 45% — оба формально «ровные», но во втором случае из ста привлечённых остаются сорок пять, и на этом можно строить экономику. Универсальной нормы высоты нет: у ежедневного мессенджера и у сервиса годовой отчётности естественная частота использования разная. Поэтому и шаг кривой выбирают под продукт — день, неделя или месяц.
Второе решение — что считать активностью. Открытие приложения — слабый сигнал: человек мог зайти и ничего не сделать. Надёжнее удержание по ключевому действию — тому, что стоит в основе вашей North Star: созданный отчёт, заказ, отправленное сообщение.
Retention(N) = пользователи когорты, активные на неделе N ÷ размер когортыНеделя N — дни с 7N по 7N + 6 после регистрации. В знаменателе вся когорта, а не те, кто дожил до прошлой недели.
Пример: кривая удержания на учебной базе
Посчитаем кривую на учебной базе «Маяк» — это данные SaaS-сервиса отчётов: регистрации с 1 июня по 29 августа 2026 года, выгрузка закрыта 30 августа в 13:00. Активность — событие app_open. Ключевые действия в этой базе записаны один раз на пользователя (только первый отчёт), поэтому возвраты по ним не построить; для продакшена это был бы первый пункт в списке доработок трекинга.
Берём июньские когорты и недели с 0 по 7, то есть дни 0–55 после регистрации. У пользователя, пришедшего 30 июня, 55-й день — 24 августа, так что окно закрыто у всей когорты. Июльские регистрации в этот расчёт брать нельзя: у них последние недели ещё не наступили.
| week_n | active_users | cohort_size | retention_pct |
|---|---|---|---|
| 0 | 1042 | 1042 | 100.0 |
| 1 | 780 | 1042 | 74.9 |
| 2 | 707 | 1042 | 67.9 |
| 3 | 610 | 1042 | 58.5 |
| 4 | 534 | 1042 | 51.2 |
| 5 | 532 | 1042 | 51.1 |
| 6 | 478 | 1042 | 45.9 |
| 7 | 467 | 1042 | 44.8 |
Учебные данные. Неделя 0 равна 100% по построению: первое открытие приложения приходится на день регистрации.
WITH cohort AS (
SELECT user_id, signup_date
FROM users
WHERE signup_date BETWEEN DATE '2026-06-01' AND DATE '2026-06-30'
),
activity AS (
-- одна строка = пользователь был активен на неделе week_n
SELECT DISTINCT
c.user_id,
CAST(FLOOR((CAST(e.event_time AS date) - c.signup_date) / 7.0) AS integer) AS week_n
FROM cohort AS c
JOIN events AS e ON e.user_id = c.user_id
WHERE e.event_name = 'app_open'
AND CAST(e.event_time AS date) - c.signup_date BETWEEN 0 AND 55
)
SELECT
week_n,
COUNT(*) AS active_users,
(SELECT COUNT(*) FROM cohort) AS cohort_size,
ROUND(CAST(100.0 * COUNT(*) / (SELECT COUNT(*) FROM cohort) AS numeric(18, 6)), 1) AS retention_pct
FROM activity
GROUP BY week_n
ORDER BY week_n;Что видно в этих данных и чего не видно
Кривая замедляется. За первую неделю когорта теряет 25,1 процентного пункта, за следующие три — по 7–9, а с четвёртой недели по седьмую суммарно 6,4: с 51,2% до 44,8%. До нуля далеко: на восьмой неделе жизни приложение открывают 467 человек из 1042.
Но утверждать, что плато достигнуто, по этим данным нельзя. Между пятой и шестой неделями кривая ещё потеряла 5,2 пункта, и только последний шаг — 1,1 пункта — похож на ровный участок. Одна точка — не плато. Честный вывод для отчёта: «снижение замедляется, на восьмой неделе активны 45% когорты; чтобы подтвердить плато, нужны ещё 4–8 недель наблюдения». В учебной базе этих недель нет: события записаны только за первые два месяца жизни пользователя.
Есть и вторая оговорка. Открытие приложения раз в неделю — мягкий критерий. Если бы «активность» означала созданный отчёт, кривая легла бы ниже, и уровень 45% нельзя сравнивать с чужими цифрами, посчитанными по другому действию.
Минимум — несколько естественных циклов использования продукта после того, как кривая перестала заметно падать. Для недельного продукта это месяцы, для сервиса с годовой подпиской — больше года, и до тех пор приходится опираться на опережающие сигналы.
PMF у сегмента: удержание по каналам
Среднее по когорте скрывает, из кого она состоит. В июне в «Маяке» не было платного поиска, в июле он появился. Посмотрим на регистрации 1–26 июля по каналам: у них закрыты недели с 0 по 4 (34-й день последней когорты — 29 августа, последний полный день выгрузки).
Учебные данные. Размеры когорт: referral 288, organic 450, partner 199, paid_search 394. В среднем по всем каналам на неделе 4 — 47,1%.
WITH cohort AS (
SELECT user_id, signup_date, channel
FROM users
WHERE signup_date BETWEEN DATE '2026-07-01' AND DATE '2026-07-26'
),
flags AS (
SELECT
c.user_id,
c.channel,
MAX(CASE WHEN CAST(e.event_time AS date) - c.signup_date BETWEEN 7 AND 13 THEN 1 ELSE 0 END) AS w1,
MAX(CASE WHEN CAST(e.event_time AS date) - c.signup_date BETWEEN 14 AND 20 THEN 1 ELSE 0 END) AS w2,
MAX(CASE WHEN CAST(e.event_time AS date) - c.signup_date BETWEEN 21 AND 27 THEN 1 ELSE 0 END) AS w3,
MAX(CASE WHEN CAST(e.event_time AS date) - c.signup_date BETWEEN 28 AND 34 THEN 1 ELSE 0 END) AS w4
FROM cohort AS c
LEFT JOIN events AS e ON e.user_id = c.user_id AND e.event_name = 'app_open'
GROUP BY c.user_id, c.channel
)
SELECT
COALESCE(channel, 'все каналы') AS channel,
COUNT(*) AS cohort_size,
ROUND(CAST(100.0 * SUM(w1) / COUNT(*) AS numeric(18, 6)), 1) AS w1_pct,
ROUND(CAST(100.0 * SUM(w2) / COUNT(*) AS numeric(18, 6)), 1) AS w2_pct,
ROUND(CAST(100.0 * SUM(w3) / COUNT(*) AS numeric(18, 6)), 1) AS w3_pct,
ROUND(CAST(100.0 * SUM(w4) / COUNT(*) AS numeric(18, 6)), 1) AS w4_pct
FROM flags
GROUP BY ROLLUP (channel)
ORDER BY w4_pct DESC;Как читать разбивку по каналам
Средние 47,1% на четвёртой неделе складываются из очень разных кривых. У пришедших по рекомендации удержание 65,3%, и между третьей и четвёртой неделями оно не упало (64,2% и 65,3%) — это единственный канал, где уже просматривается ровный участок. У платного поиска 33,0%, и каждая неделя ниже предыдущей.
Отсюда две вещи. Первая: PMF описывают для сегмента. Фраза «у нас есть PMF» без уточнения, у кого, почти всегда слишком широка; точнее сказать «у пользователей, пришедших по рекомендации, удержание выходит на плато около 65%». Вторая: канал — это ещё и состав аудитории. Реклама могла привести людей с другой задачей, и низкое удержание платного поиска говорит не «продукт плохой», а «этой аудитории он подходит хуже». Проверять стоит и другие разрезы: размер компании, тариф, устройство, первое ключевое действие.
Не забывайте про размер сегментов: 288 пользователей в referral дают для доли 65% погрешность около ±5,5 пункта. Разрыв с платным поиском в 32 пункта за неё далеко выходит, а различие между partner и organic — нет.
Опрос Шона Эллиса: правило 40%
Кривой удержания нужно время. Опрос, который Шон Эллис описал в своём блоге в мае 2009 года, даёт сигнал раньше. Вопрос один: что вы почувствуете, если больше не сможете пользоваться продуктом? Вариантов четыре: очень расстроюсь; немного расстроюсь; не расстроюсь; уже не пользуюсь.
Ориентир Эллиса: если «очень расстроюсь» выбирают больше 40% пользователей, продукт для них необходим, и на этом можно строить бизнес. Если большинство отвечает «немного расстроюсь», продукт приятен, но без него обойдутся. Число 40% — наблюдение практика: по пересказу Рахула Вохры из Superhuman, Эллис пришёл к нему, сравнив почти сотню стартапов. Исходные данные не опубликованы, так что 39% и 41% — один и тот же результат.
Кого спрашивать. Эллис советует случайную выборку из тех, кто дошёл до основного сценария продукта, пользовался им минимум дважды и заходил в последние две недели. Новичок ещё не видел ценности, а ушедший уже проголосовал ногами. Из этого следует главное ограничение: опрос задаётся выжившим. Продукт, из которого уходит 95% регистраций, может набрать 60% «очень расстроюсь» среди оставшихся. Поэтому опрос читают вместе с удержанием, а не вместо него. Балфур называет его опережающим индикатором, но не доказательством.
Сколько нужно ответов. Вохра пишет, что направление видно примерно с 40 ответов. Точность при этом невелика. Допустим, из 40 ответивших 16 выбрали «очень расстроюсь»: это 40%, а 95-процентный интервал — от 25% до 55%. При 200 ответах и той же доле интервал сужается до 33–47%. На 40 ответах можно отличить 15% от 50%, но нельзя — 35% от 45%.
Опрос полезен ещё и тем, что показывает, для кого продукт необходим. Superhuman начал с 22% «очень расстроюсь», а когда оставил в расчёте только типы пользователей, похожих на эту группу, получил 33% — и дальше строил продукт под них.
p = ответы «очень расстроюсь» ÷ все ответы; 95%-й интервал ≈ p ± 1,96 × √(p(1 − p) ÷ n)Условный пример: n = 40, p = 0,4 → ±15,2 п. п.; n = 200 → ±6,8 п. п. Заранее решите, входят ли в знаменатель ответы «уже не пользуюсь», и не меняйте правило между опросами.
Другие метрики product market fit: органика, рекомендации, повторные платежи
Удержание отвечает на вопрос, остаются ли люди. Ещё два вопроса — откуда они приходят и платят ли повторно.
Источник роста. Посчитаем по месяцам, сколько регистраций дали бесплатные каналы и какая доля новых пользователей отправила приглашение коллеге. Август в базе неполный (до 29-го числа), но для долей это не мешает.
| signup_month | signups | paid_search | organic_referral | organic_referral_pct | invited_pct |
|---|---|---|---|---|---|
| 2026-06-01 | 1042 | 0 | 770 | 73.9 | 24.4 |
| 2026-07-01 | 1676 | 482 | 949 | 56.6 | 24.9 |
| 2026-08-01 | 1895 | 533 | 1065 | 56.2 | 24.4 |
WITH inviters AS (
SELECT DISTINCT user_id
FROM events
WHERE event_name = 'invite_sent'
)
SELECT
CAST(date_trunc('month', u.signup_date) AS date) AS signup_month,
COUNT(*) AS signups,
SUM(CASE WHEN u.channel = 'paid_search' THEN 1 ELSE 0 END) AS paid_search,
SUM(CASE WHEN u.channel IN ('organic', 'referral') THEN 1 ELSE 0 END) AS organic_referral,
ROUND(CAST(100.0 * SUM(CASE WHEN u.channel IN ('organic', 'referral') THEN 1 ELSE 0 END) / COUNT(*) AS numeric(18, 6)), 1) AS organic_referral_pct,
ROUND(CAST(100.0 * COUNT(i.user_id) / COUNT(*) AS numeric(18, 6)), 1) AS invited_pct
FROM users AS u
LEFT JOIN inviters AS i ON i.user_id = u.user_id
GROUP BY 1
ORDER BY 1;Что эти сигналы говорят о росте
Регистраций в июле на 634 больше, чем в июне, и 482 из них, то есть 76%, пришли из платного поиска. Доля органики и рекомендаций упала с 73,9% до 56,6%. При этом бесплатные каналы тоже выросли — с 770 до 949 регистраций, и доля новичков, отправивших приглашение, держится около 24–25%. Картина смешанная: продукт рекомендуют с прежней частотой, но основную часть заголовка «+60%» купили, и купленная аудитория удерживается хуже всех.
Повторные платежи. Из июньских когорт первый платёж сделали 282 человека, последний из них — 20 июля, так что срок первого продления у всех наступил до конца выгрузки. Продлили хотя бы раз 170, это 60,3%. Для подписки продление — тот же вопрос об удержании, заданный деньгами, и обмануть его труднее, чем открытие приложения.
| Сигнал | Как посчитать | Что тревожно |
|---|---|---|
| Кривая удержания когорты | доля когорты с ключевым действием на неделе или месяце N; только зрелые когорты | кривая продолжает падать с прежним наклоном; плато в единицах процентов |
| Удержание по сегментам | та же кривая по каналам, тарифам, типам клиентов | плато нет ни в одном сегменте; рост идёт в сегменте с худшим удержанием |
| Опрос Эллиса | доля «очень расстроюсь» среди недавно активных, с интервалом | заметно ниже 40% при достаточной выборке; высокий результат при уходящих когортах |
| Доля органики и рекомендаций | регистрации из бесплатных каналов ÷ все регистрации, по месяцам | доля падает, а абсолютное число бесплатных регистраций не растёт |
| Приглашения и рекомендации | доля новых пользователей, отправивших приглашение | доля снижается от когорты к когорте |
| Повторные платежи | доля плательщиков, оплативших второй период; только те, у кого срок продления наступил | большинство платит один раз; продления падают в новых когортах |
WITH first_pay AS (
SELECT p.user_id, p.paid_at AS first_paid_at
FROM payments AS p
JOIN users AS u ON u.user_id = p.user_id
WHERE p.payment_type = 'first'
AND u.signup_date BETWEEN DATE '2026-06-01' AND DATE '2026-06-30'
),
renewed AS (
SELECT DISTINCT user_id
FROM payments
WHERE payment_type = 'renewal'
)
SELECT
COUNT(*) AS payers,
MAX(f.first_paid_at) AS last_first_payment,
COUNT(r.user_id) AS renewed_once,
ROUND(CAST(100.0 * COUNT(r.user_id) / COUNT(*) AS numeric(18, 6)), 1) AS renewed_pct
FROM first_pay AS f
LEFT JOIN renewed AS r ON r.user_id = f.user_id;Ошибки при оценке PMF
Ошибки здесь стоят дорого: по выводу «PMF есть» начинают масштабировать рекламу и нанимать отдел продаж.
- Рост за счёт платного трафика принимают за PMF. Регистрации и даже выручка растут, пока растёт бюджет. Проверка простая: что останется от графика, если убрать платные каналы, и как удерживается купленная аудитория.
- Смотрят на среднее по всем когортам. Общий retention смешивает старых и новых пользователей, каналы и сегменты. Когда меняется состав притока, среднее движется без всякого изменения в продукте.
- Берут незрелые когорты. Если посчитать «седьмую неделю» по всем 4613 пользователям «Маяка», получится 13,5% вместо 44,8%: у большинства эта неделя ещё не наступила, а в знаменатель они попали. Обратная ошибка — оборвать кривую на третьей неделе и назвать последнюю точку плато.
- Путают PMF сегмента и PMF рынка. Плато у пользователей по рекомендации не обещает того же у аудитории из рекламы. Масштабировать стоит привлечение тех, у кого плато уже есть.
- Меряют удержание по слабому действию. Открытие приложения, вход, просмотр страницы завышают кривую. Нужен признак полученной ценности.
- Читают опрос без удержания. 50% «очень расстроюсь» среди сорока самых активных пользователей не отменяют кривую, уходящую к нулю.
- Считают PMF достигнутым навсегда. Рынок, конкуренты и состав аудитории меняются; кривые новых когорт нужно сравнивать со старыми регулярно.
Частые вопросы
PMF — что это, если совсем коротко?
Это соответствие продукта рынку: люди, для которых продукт сделан, продолжают им пользоваться и платить, а не уходят после первой пробы. В данных это видно как кривая удержания когорты, которая выходит на плато.
Какой retention считается признаком PMF?
Единого числа нет: оно зависит от частоты использования и типа продукта. Смотрят на форму — выполаживается ли кривая — и на то, хватает ли высоты плато, чтобы окупить привлечение.
Можно ли измерить PMF до запуска продукта?
Нет. До запуска проверяют спрос: интервью, лист ожидания, предзаказы. PMF требует поведения реальных пользователей на протяжении нескольких циклов использования.
Достаточно ли опроса Шона Эллиса, чтобы объявить PMF?
Нет. Опрос задают тем, кто остался, поэтому он не видит ушедших. Это ранний сигнал и способ найти сегмент, которому продукт необходим; подтверждают его удержанием и повторными платежами.
Что делать, если кривая удержания не выходит на плато?
Разбить её по сегментам и первым действиям и искать группу, где плато есть. Если такая группа нашлась, продукт и привлечение сужают до неё. Если нет — менять нужно ценность продукта, а не воронку.
Итог
Product market fit — не ощущение и не одна цифра, а несколько согласованных наблюдений: кривая удержания зрелых когорт перестаёт падать, это видно хотя бы в одном понятном сегменте, недавно активные пользователи говорят, что без продукта им будет плохо, а рост идёт не только из купленного трафика. На учебных данных «Маяка» вывод получился сдержанным: снижение замедляется, у пользователей по рекомендации намечается плато около 65%, а платный поиск раздувает регистрации и удерживается вдвое хуже. Такой вывод полезнее громкого «PMF найден»: из него понятно, что проверять дальше и куда не стоит нести бюджет.
Все запросы из статьи выполняются на продуктовой базе: подставьте другой месяц, другой разрез или другое событие и посмотрите, как меняется кривая. В Симуляторе SQL-аналитика удержание, активацию и воронку считают на этой же базе продукта.
Материалы по теме

Ошибка выжившего: что это, примеры и как она искажает анализ
Ошибка выжившего простыми словами: вывод по тем, кто остался. История Вальда без легенд и четыре примера из аналитики продукта с SQL и Python: выручка, удержание, опрос, A/B-тест.

Когортный анализ: что это, как построить и читать таблицу
Когортный анализ простыми словами: как построить когортную таблицу в SQL, pandas и Excel, читать её по строкам, столбцам и диагоналям и что делать с незрелыми когортами.

Когорты и retention в SQL: как считать возвращаемость по датам
Разбираем когортный retention в SQL: как определить дату старта, посчитать D1 и D7, собрать матрицу возвращаемости и сравнить каналы без самообмана.