Как посчитать Lead Velocity Rate в SQL

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

Зачем LVR

LVR = % growth qualified leads MoM. Jason Lemkin (SaaStr): «LVR predicts future revenue». Если LVR 10%/month → revenue grows ~10% в 90 days (lag period).

Формула

LVR = (qualified_leads_this_month - qualified_leads_last_month) / qualified_leads_last_month × 100%

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

WITH monthly_leads AS (
    SELECT
        DATE_TRUNC('month', qualified_at) AS month,
        COUNT(*) AS qualified_leads
    FROM leads
    WHERE qualified = TRUE
      AND qualified_at >= CURRENT_DATE - INTERVAL '12 months'
    GROUP BY 1
)
SELECT
    month,
    qualified_leads,
    LAG(qualified_leads) OVER (ORDER BY month) AS prev_month,
    (qualified_leads - LAG(qualified_leads) OVER (ORDER BY month))::NUMERIC * 100
    / NULLIF(LAG(qualified_leads) OVER (ORDER BY month), 0) AS lvr_pct
FROM monthly_leads
ORDER BY month;

По source

SELECT
    source,
    DATE_TRUNC('month', qualified_at) AS month,
    COUNT(*) AS leads,
    LAG(COUNT(*)) OVER (PARTITION BY source ORDER BY DATE_TRUNC('month', qualified_at)) AS prev_month_leads,
    (COUNT(*) - LAG(COUNT(*)) OVER (PARTITION BY source ORDER BY DATE_TRUNC('month', qualified_at)))::NUMERIC * 100
    / NULLIF(LAG(COUNT(*)) OVER (PARTITION BY source ORDER BY DATE_TRUNC('month', qualified_at)), 0) AS source_lvr_pct
FROM leads
WHERE qualified = TRUE
  AND qualified_at >= CURRENT_DATE - INTERVAL '6 months'
GROUP BY source, DATE_TRUNC('month', qualified_at)
ORDER BY source, month;

Channels с consistent positive LVR — scale spend. Negative — investigate.

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

LVR vs Revenue Growth

LVR predictive (lead → revenue lag = sales cycle):

WITH lvr_monthly AS (
    SELECT
        DATE_TRUNC('month', qualified_at) AS month,
        COUNT(*) AS leads
    FROM leads
    WHERE qualified = TRUE
    GROUP BY 1
),
revenue_monthly AS (
    SELECT
        DATE_TRUNC('month', closed_at) AS month,
        SUM(acv) AS revenue
    FROM closed_won_deals
    GROUP BY 1
),
joined AS (
    SELECT
        l.month AS lead_month,
        l.leads,
        r.revenue AS revenue_90d_later
    FROM lvr_monthly l
    JOIN revenue_monthly r ON r.month = l.month + INTERVAL '3 months'
)
SELECT
    lead_month,
    leads,
    revenue_90d_later,
    CORR(leads::NUMERIC, revenue_90d_later::NUMERIC) OVER () AS correlation
FROM joined;

LVR этого месяца ~ revenue через 90 days.

Trend

WITH monthly AS (
    SELECT
        DATE_TRUNC('month', qualified_at) AS month,
        COUNT(*) AS leads
    FROM leads
    WHERE qualified = TRUE
      AND qualified_at >= CURRENT_DATE - INTERVAL '12 months'
    GROUP BY 1
)
SELECT
    month,
    leads,
    (leads - LAG(leads) OVER (ORDER BY month))::NUMERIC * 100 / NULLIF(LAG(leads) OVER (ORDER BY month), 0) AS lvr,
    -- 3-month avg для smoothing
    AVG((leads - LAG(leads) OVER (ORDER BY month))::NUMERIC * 100 / NULLIF(LAG(leads) OVER (ORDER BY month), 0))
    OVER (ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS lvr_3m_avg
FROM monthly;

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

Ошибка 1. Qualified vs raw leads. Raw leads — vanity. Qualified — predictive. Use MQL / SQL.

Ошибка 2. Definition of «qualified». Changed → LVR jumps. Stable definition critical.

Ошибка 3. Seasonality. December → leads drop holidays. YoY > MoM для seasonal businesses.

Ошибка 4. LVR negative — emergency? One bad month — noise. Sustained negative — investigate.

Ошибка 5. Channel mix changes. Pause one channel → LVR drops. Looks bad, but intentional.

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

FAQ

Какой LVR ok?

10-20% MoM — healthy. 30%+ — hypergrowth. 0 — stagnant. Negative — declining demand.

LVR vs MoM revenue growth?

LVR — leading indicator (90 days lag). Revenue — lagging.

Why focus on LVR?

Sees demand pipeline before money arrives. Marketing performance signal.

MQL vs SQL для LVR?

SQL более qualified. MQL — earlier indicator. Track both.

LVR per quarter?

Yes — smoother. MoM noisy.