Как посчитать trial extension rate в SQL

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

Зачем extension rate

Если в продукте есть фича «продлить trial ещё на 7 дней», важно понимать, кто и зачем ею пользуется. Высокий extension rate = trial не успел убедить юзера (или сложный onboarding). Низкая конверсия extension → paid = extension лечит не ту проблему. Trial extension — один из главных рычагов конверсии в paid.

Формула

extension_rate = users_with_extension / users_who_started_trial
extension_to_paid = users_paid_after_extension / users_with_extension

Обе на одной cohort.

Extension rate в SQL

WITH cohort AS (
    SELECT user_id, trial_started_at
    FROM trials
    WHERE trial_started_at BETWEEN '2026-03-01' AND '2026-03-31'
),
extended AS (
    SELECT user_id
    FROM trial_extensions
    WHERE extension_date <= trial_started_at + INTERVAL '14 days'
)
SELECT
    (SELECT COUNT(*) FROM cohort) AS trials_started,
    (SELECT COUNT(*) FROM extended) AS extensions_granted,
    (SELECT COUNT(*) FROM extended)::NUMERIC * 100
    / NULLIF((SELECT COUNT(*) FROM cohort), 0) AS extension_rate_pct;

10-20% — типичная extension rate для SaaS B2C.

Extension → paid конверсия

WITH cohort AS (
    SELECT user_id, trial_started_at FROM trials
    WHERE trial_started_at BETWEEN '2026-03-01' AND '2026-03-31'
),
extended AS (
    SELECT DISTINCT user_id
    FROM trial_extensions
    WHERE extension_date <= (SELECT trial_started_at FROM cohort WHERE cohort.user_id = trial_extensions.user_id) + INTERVAL '14 days'
),
paid AS (
    SELECT DISTINCT user_id FROM subscriptions WHERE status = 'active'
)
SELECT
    COUNT(*) FILTER (WHERE e.user_id IS NOT NULL) AS extended,
    COUNT(*) FILTER (WHERE e.user_id IS NOT NULL AND p.user_id IS NOT NULL) AS paid_after_extension,
    COUNT(*) FILTER (WHERE e.user_id IS NOT NULL AND p.user_id IS NOT NULL)::NUMERIC * 100
    / NULLIF(COUNT(*) FILTER (WHERE e.user_id IS NOT NULL), 0) AS extension_to_paid_pct
FROM cohort c
LEFT JOIN extended e USING (user_id)
LEFT JOIN paid p USING (user_id);

Если из extended 30% становятся paid — extension работает. Если 5% — extension прячет проблему конверсии.

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

По каналу

SELECT
    u.utm_source,
    COUNT(DISTINCT t.user_id) AS trials_started,
    COUNT(DISTINCT te.user_id) AS extensions,
    COUNT(DISTINCT te.user_id) * 100.0 / NULLIF(COUNT(DISTINCT t.user_id), 0) AS extension_rate_pct
FROM trials t
JOIN users u USING (user_id)
LEFT JOIN trial_extensions te
  ON te.user_id = t.user_id
 AND te.extension_date <= t.trial_started_at + INTERVAL '14 days'
WHERE t.trial_started_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY u.utm_source
ORDER BY extension_rate_pct DESC;

Канал с самым высоким extension rate — там юзеры дольше принимают решение.

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

Ошибка 1. Считать extension вне cohort window. Если юзер расширил trial спустя 6 месяцев — это другой кейс, не «нужно больше времени».

Ошибка 2. Multiple extensions = double count. Один юзер может продлевать дважды. Используйте DISTINCT user_id.

Ошибка 3. Считать extension rate без конверсии. Высокая extension rate сама по себе ничего не значит. Конверсия в paid важнее.

Ошибка 4. Не различать manual vs automatic extension. Юзер активно запросил продление vs auto-extension от support — разные сигналы.

Ошибка 5. Включать в cohort юзеров без полного trial. Cancellation в первые 24 часа — не успели потрогать. Фильтруйте.

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

FAQ

Сколько % extensions «нормально»?

10-20% для B2C SaaS. B2B иногда выше: 25-40%.

Extension лучше free trial?

Часто да: юзер уже знает продукт, просто нужно больше времени.

Auto-grant vs paid extension?

Auto-grant — мягче, конверсия ниже. Paid extension (опция «продли за полцены») — серьёзный сигнал намерения.

Можно ли неограниченные extensions?

Технически да, но это «новый freemium». Лучше fix 1-2 extensions max.

Extension влияет на churn?

Часто увеличивает overall conversion на 5-15%, но decreases urgency. Trade-off.