Как посчитать Trial Conversion в SQL

Закрепи формулу trial conversion в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать trial conversion в Telegram

Зачем Trial Conversion

В SaaS и подписочных моделях главный funnel: trial → paid. Если CR падает на 5 п.п. — катастрофа: пятилетний clientLifetime превратился в трёхлетний, unit-экономика просела.

Что такое Trial Conversion

Trial Conversion — доля пользователей, перешедших с бесплатного trial на paid-подписку.

Trial Conversion = paid_users / trial_users × 100%

Period обычно: 30 / 60 / 90 дней с trial-старта (зависит от модели).

Базовый расчёт

Данные: subscriptions(user_id, started_at, plan_type, paid_at).

WITH trial_users AS (
    SELECT user_id, started_at
    FROM subscriptions
    WHERE plan_type = 'trial'
      AND started_at >= '2026-01-01'
      AND started_at <  '2026-04-01'
),
converted AS (
    SELECT DISTINCT t.user_id
    FROM trial_users t
    JOIN subscriptions s ON s.user_id = t.user_id
    WHERE s.plan_type IN ('basic', 'premium')
      AND s.paid_at IS NOT NULL
      AND s.started_at > t.started_at
      AND s.started_at <  t.started_at + INTERVAL '30 days'
)
SELECT
    (SELECT COUNT(*) FROM trial_users) AS trials,
    (SELECT COUNT(*) FROM converted) AS converted,
    (SELECT COUNT(*) FROM converted)::NUMERIC * 100
        / NULLIF((SELECT COUNT(*) FROM trial_users), 0) AS trial_conv_pct;

Важно: временное окно для conversion должно соответствовать модели (30/60/90 дней).

Trial Conversion по cohort

WITH cohort AS (
    SELECT
        user_id,
        DATE_TRUNC('month', started_at) AS cohort_month
    FROM subscriptions
    WHERE plan_type = 'trial'
      AND started_at >= '2026-01-01'
),
converted AS (
    SELECT
        c.cohort_month,
        c.user_id
    FROM cohort c
    JOIN subscriptions s ON s.user_id = c.user_id
        AND s.plan_type IN ('basic', 'premium')
        AND s.paid_at IS NOT NULL
        AND s.started_at < (SELECT MIN(started_at) FROM subscriptions WHERE user_id = c.user_id AND plan_type = 'trial') + INTERVAL '30 days'
)
SELECT
    c.cohort_month,
    COUNT(DISTINCT c.user_id) AS trials,
    COUNT(DISTINCT cv.user_id) AS converted,
    COUNT(DISTINCT cv.user_id)::NUMERIC * 100
        / NULLIF(COUNT(DISTINCT c.user_id), 0) AS conv_pct
FROM cohort c
LEFT JOIN converted cv ON cv.user_id = c.user_id
GROUP BY c.cohort_month
ORDER BY c.cohort_month;
Закрепи формулу trial conversion в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать trial conversion в Telegram

По тарифам / сегментам

WITH stats AS (
    SELECT
        u.acquisition_channel,
        COUNT(DISTINCT CASE WHEN s.plan_type = 'trial' THEN s.user_id END) AS trials,
        COUNT(DISTINCT CASE WHEN s.plan_type IN ('basic','premium') AND s.paid_at IS NOT NULL THEN s.user_id END) AS paid
    FROM users u
    JOIN subscriptions s ON s.user_id = u.user_id
    WHERE s.started_at >= '2026-01-01'
    GROUP BY u.acquisition_channel
)
SELECT
    acquisition_channel,
    trials,
    paid,
    paid::NUMERIC * 100 / NULLIF(trials, 0) AS conv_pct
FROM stats
ORDER BY conv_pct DESC;

Частые ошибки

Ошибка 1. Не фиксировать окно конверсии. Юзер заплатил через год после trial — это conversion? В стандартной логике — нет.

Ошибка 2. Включать не-trials. Если юзер пришёл сразу на paid (без trial) — это не trial conversion, это direct purchase.

Ошибка 3. Дубль trial. Юзер взял trial 2 раза (на разные продукты). Считайте уникальных по user_id × product.

Ошибка 4. Сравнивать cohort с разной длительностью окна. Cohort января имеет 4 месяца на конверсию. Cohort апреля — 1 месяц. Сравнение нечестное. Используйте same-window comparison.

Ошибка 5. Конверсия без revenue. 30% trial → paid — может означать $10/мес юзера. 5% trial → paid — может быть $1000/мес enterprise. Смотрите revenue-weighted.

Ошибка 6. Игнорировать downgrade. Юзер с premium перешёл на basic = paid? Да, но это не «full» conversion.

Связанные темы

FAQ

Какая Trial Conversion считается хорошей?

В B2B SaaS — 15-25%. В B2C — 5-15%. Зависит от cost и сложности продукта.

Free trial или freemium?

Free trial — limited time. Freemium — limited features. Conversion обычно выше у trial (давление времени).

Какое окно конверсии?

Сколько длится trial + 7 дней grace period. Если trial 14 дней — окно 21 день.

Trial Conversion упал — что делать?

Декомпозиция: onboarding (юзеры не активируются?), value (продукт не показывает value?), pricing (дорого?), competitor.

Trial → Paid → Churn — это conversion?

Технически да, но low-quality. Смотрите 90-day или 12-month retained conversion.