A/B-тестирование landing page
Гипотеза одной переменной, MDE и длительность, secondary metrics, типичные ошибки (peeking, novelty effect).
Спроектируй A/B-тест для {{landing_url}}. Primary metric = {{primary_metric}}, baseline = {{current_conversion}}%, traffic = {{weekly_traffic}}/week.
Главный принцип: A/B-тест без гипотезы и MDE — это не эксперимент, а гадание. Если не готов посчитать sample size — не запускай.
Этап 1. Гипотеза (одна переменная)
Шаблон:
Мы верим что [изменение X]
приведёт к [эффекту Y]
потому что [механизм / inside]
Мы поймём что правы если [metric] вырастет на ≥ [MDE]%
Правило: одна переменная. Если меняешь hero + CTA + form одновременно — не узнаешь что сработало.
Плохо vs хорошо:
❌ "Сделаем landing лучше"
❌ "Поменяем hero, цвет CTA и social proof"
✓ "Заменим headline 'Project management for teams' на 'Cut meeting time in half' — гипотеза: outcome-focused копий конвертит лучше для нашего ICP"
Этап 2. Что меняем — приоритизация по импакту
Иерархия по ожидаемому эффекту (сверху — больше impact):
| Элемент | Типичный uplift | Note |
|---|---|---|
| Hero copy / value prop | 10-30% | Если message-market fit weak — самый большой рычаг |
| Hero visual (image vs video vs demo) | 5-20% | Особенно для visual продуктов |
| Social proof (logos, count, testimonials) | 5-15% | Эффект зависит от target audience trust level |
| CTA copy ("Try free" vs "Get started" vs "Book demo") | 2-10% | Маленький, но cheap test |
| Form length (fields count) | 5-30% | Каждое лишнее поле = -5-10% completion |
| Pricing presentation | 5-20% | Anchor, monthly/annual default, plan order |
| Page structure (sections order) | 3-10% | Above-the-fold critical |
| CTA button color | 0-2% | Bikeshedding, почти всегда noise |
Совет: не тестируй button color пока hero copy не оптимизирован.
Этап 3. MDE и длительность
MDE (Minimum Detectable Effect) = минимальный uplift который тест может задетектить со statistical power 80%, significance 95%
Sample size calculator inputs:
- Baseline conversion: {{current_conversion}}%
- MDE: целевой uplift (обычно 5-20% relative)
- Statistical significance: 95% (α = 0.05)
- Statistical power: 80% (β = 0.20)
Формула (для конверсии):
n per variant ≈ (16 × p × (1-p)) / (delta^2)
где p = baseline conversion (в долях), delta = MDE × p (абсолютное изменение)
Пример:
- Baseline 5%, MDE = 10% relative (= 0.5% absolute)
- n per variant ≈ 16 × 0.05 × 0.95 / (0.005)^2 ≈ 30,400
- Total = 60,800 visitors
Длительность теста:
duration_weeks = (2 × n) / weekly_traffic
Правило: минимум 1 полная неделя (захватывает weekly seasonality), даже если sample size достигнут раньше. Максимум 4-6 недель — иначе novelty effect или внешние факторы исказят.
Этап 4. Secondary metrics — обязательно
Primary metric может вырасти за счёт ухудшения другого. Защита — secondary:
- Bounce rate (если landing стал хуже engagement)
- Scroll depth (видели ли весь page)
- Time on page
- Click-through to next step (если primary = signup, то trial activation)
- Downstream conversion (signup → activation → revenue)
- Mobile vs desktop split (вдруг winner только на одной платформе)
Real story: changed CTA — конверсия на signup +15%, но trial activation downstream −20%. Net negative. Без downstream metric — победа была бы false win.
Этап 5. Сегментация результатов
Не смотри только overall. Разделяй:
- New vs returning visitor
- Mobile vs desktop
- Traffic source (organic, paid, referral)
- Geo
- Device class (low-end mobile особенно)
Иногда treatment выигрывает overall, но проигрывает в важном сегменте (e.g. mobile = 60% traffic). Решение по сегменту.
Этап 6. Anti-patterns
- ❌ Peeking — смотреть результат каждый день и останавливать когда p<0.05. False positive rate растёт с N peeks. Решение: pre-register stop time, не смотри early
- ❌ Не учёл novelty effect — новый дизайн "wow" в week 1, эффект уходит в week 3. Запускай минимум 2 недели
- ❌ Multiple variants без correction — A vs B vs C vs D, считаешь каждый против A. Bonferroni correction нужна (α / k)
- ❌ Тест без MDE — собрал 1000 visitors, "winner на 3%", noise. Не достаточно power чтобы детектить 3% uplift
- ❌ Не учёл seasonality — тест в Black Friday week vs обычная неделя — результаты не generalisable
- ❌ Изменил test mid-flight — добавил третий variant через неделю → result invalid
- ❌ Optimized для primary, ignored downstream — see Stage 4
- ❌ Statistical significance ≠ practical significance — uplift 0.5% при N=1M статистически значим, но не стоит ship complexity
- ❌ Стартовал без traffic baseline — если weekly_traffic = 500, любой A/B на conversion невозможен мата
Этап 7. Документирование
Pre-test:
- Hypothesis (one paragraph)
- What's changing (with screenshots before/after)
- Primary metric + MDE + sample size + planned duration
- Secondary metrics
- Stop conditions (early stop if -X% downstream)
Post-test:
- Result: winner / no significant difference / loser
- Effect size (with CI), not just p-value
- Segment breakdown
- Learnings (что узнали даже если null result)
- Decision: ship / iterate / kill
На выходе
- Конкретная гипотеза (одна переменная)
- Sample size calculation с цифрами
- Test duration estimate
- Primary + secondary metrics
- Segmentation plan
- Pre-registered stop conditions
- Template для post-test write-up
Аудит производительности (Core Web Vitals)
Глубокая проверка LCP, INP, CLS с привязкой к коду и приоритизированным планом исправлений.
Hero-копирайт для лендинга (3 варианта)
Три разных подхода к заголовку и подзаголовку: ценность, проблема, амбиция.
Лендинг за 30 минут
Быстрая сборка лендинга: оффер, proof, CTA, mobile-first структура — без перфекционизма, но с дисциплиной.