Перейти до змісту
Увійти

Теорія

Запрошення і вірусне зростання

Вірусне зростання із запрошень: вірусний коефіцієнт k, тривалість циклу, чому k менше 1 однаково вигідний і як вимірювати запрошення, не лестячи собі.

~9 хв читання · 9 вправ · 250 балів

Перед початком

Чи ми вірусні?

Theo готується до запитань інвесторів про Halves. Кожній групі потрібні учасники, тож у певному сенсі кожен користувач — маленький продавець, і інвестори спитають одне: чи вірусний Halves? Він хоче відповіді з даних, тобто від тебе.

У цьому уроці ти чесно виміряєш вірусне зростання: скільки нових користувачів приводить кожен користувач, скільки триває один цикл, чому запрошення окупаються, навіть коли зростання не наростає лавиною, і як не прикрашати результат.

Вірусний коефіцієнт k із фіксованим вікном

Вірусний коефіцієнт (k-factor) — кількість нових користувачів, яких кожен користувач приводить через запрошення:

k = нові користувачі із запрошень ÷ користувачі когорти = (запрошення ÷ користувач) × (нові користувачі ÷ запрошення)

k=invitationsuser×new users from invitationsinvitations=new users from invitationsusersk = \frac{\text{invitations}}{\text{user}} \times \frac{\text{new users from invitations}}{\text{invitations}} = \frac{\text{new users from invitations}}{\text{users}}

Друга форма показує дві частини, над якими можна працювати: скільки запрошень люди надсилають і скільки з них перетворюється на нових користувачів.

k потребує вікна. Люди запрошують місяцями, тож без вікна старші когорти завжди виглядають вірусніше просто тому, що мали більше часу. Зафіксуй вікно від реєстрації й використовуй те саме для кожної когорти. У Halves: запрошення, надіслані за перші 30 днів користувача, і запрошені, що зареєструвалися за цей час.

Когорта січня 2026: 4 646 користувачів за 30 днів надіслали 5 737 запрошень (1,2348 на користувача); 1 460 із них стали новими користувачами (0,2545 на запрошення). k = 1 460 ÷ 4 646 = 0,3142, те саме, що 1,2348 × 0,2545.

Подавай k з когортою й вікном: «0,31 за 30 днів, когорта січня 2026», ніколи не голим числом.

  • Так
    k, когорта січня 2026, 30 днів = 1 460 нових користувачів із запрошень ÷ 4 646 користувачів = 0,31.
  • Не так
    k = 1 460 ÷ 5 737 запрошень = 0,25.

    Це лише конверсія запрошень, один із множників k.

Ріст рахує лише нових людей

У продукті, побудованому навколо груп, багато прийнятих запрошень дістаються людям, які вже ним користуються. У Halves людина, яка вже має застосунок і долучається до ще однієї групи для поїздки, приймає запрошення, але Halves не отримує нового користувача.

Конверти-запрошення доходять до кількох людей: одні — новачки, інші вже мають застосунок і просто приєднуються до ще однієї групи.
Ріст — це лише запрошені, які раніше не користувалися Halves.

Тож чисельник k — це нові акаунти, створені із запрошень, а не прийняті запрошення. Січень 2026: 1 947 прийнятих, із них 487 від наявних користувачів, лишається 1 460 нових. k = 1 460 ÷ 4 646 = 0,31. Якщо рахувати всі прийняті, вийде 0,42 — на третину більше, і розрив схожий щомісяця (0,39–0,44 проти 0,29–0,33 за січень–травень).

Наявні користувачі, що долучаються до нових груп, усе одно важливі: активніші групи повертають людей. Це місце для метрики залученості поруч із k (наприклад, груп на одного наявного користувача), а не всередині k.

Перш ніж довіряти будь-якій метриці вірусності, попроси описати її чисельник словами: «нові акаунти, що прийшли із запрошення за 30 днів». Якщо у визначенні «прийняття», «запрошення» чи «приєднання до груп», воно міряє активність, а не ріст.

  • Так
    k = (1 947 прийнятих − 487 від наявних) ÷ 4 646 = 1 460 ÷ 4 646 = 0,31.
  • Не так
    k = 1 947 прийнятих запрошень ÷ 4 646 користувачів = 0,42.

    Рахує людей, які вже мали застосунок.

Два важелі всередині k

Оскільки k = запрошення на користувача × нові користувачі на запрошення, зміна k завжди йде з одного з двох місць, і вони потребують різних рішень.

  • Запрошення на користувача залежать від того, як часто продукт дає людям привід запросити: створення групи, витрата, яку має побачити хтось інший, нагадування розрахуватися.
  • Нові користувачі на запрошення залежать від того, що відбувається із запрошеним: яке повідомлення він отримує, кроки встановлення й реєстрації, чи потрапляє одразу в групу.

Halves, травень 2026 проти січня: k знизився з 0,3142 до 0,2931. Запрошень на користувача майже стільки ж (1,2348 → 1,2176), а нових користувачів на запрошення стало менше: з 25,45% до 24,07% (1 755 ÷ 7 290). Тож дивитися треба на шлях запрошеного, а не на те, як запрошують.

Розкладай k щоразу, коли він рухається, так само як воронку чи ARPU. Одне число не скаже команді росту, над якою половиною петлі працювати.

  • Так
    Травень: 7 290 ÷ 5 987 = 1,2176 запрошення на користувача × 1 755 ÷ 7 290 = 24,07% = k 0,2931.
  • Не так
    Конверсія запрошень у травні = 2 340 прийнятих ÷ 7 290 надісланих = 32,10%.

    Серед прийнятих 585 наявних користувачів; рахуються лише нові акаунти.

Нижче 1 k множить кожен канал

Кожен користувач, приведений будь-яким каналом, — зерно (seed) — у середньому запрошує k нових користувачів. Ті запрошують ще k², і так далі. Коли k менше 1, покоління меншають, і ряд має суму:

усього = зерно × (1 + k + k² + …) = зерно ÷ (1 − k)

total=seed×(1+k+k2+… )=seed1−k\text{total} = \text{seed} \times (1 + k + k^2 + \dots) = \frac{\text{seed}}{1 - k}
Справедливо для k менше 1.

Halves, січень–травень 2026 разом: k = 8 281 ÷ 26 638 = 0,3109, тож множник 1 ÷ (1 − 0,3109) = 1,4511. У травні соцмережі й пошукова реклама в магазинах привели 2 169 користувачів; із запрошеннями з них виходить 2 169 × 1,4511 ≈ 3 147, приблизно на 978 більше, ніж рахують рекламні звіти. Вартість на кожного підсумкового користувача приблизно на 31% нижча, ніж показує сам платний CAC, — якщо ці запрошені не прийшли б і так.

При k близько 0,31 кожне покоління запрошених менше, і ланцюжок згасає, але 2 169 куплених рекламою користувачів травня все одно приводять ще близько 978.

Дві звички: об'єднуй кілька порівнянних когорт для k, щоб один дивний місяць не керував множником; і тримай сезон окремо (червневий k 0,55 дав би множник 2,20).

Не додавай k один раз (2 169 × 1,31 ≈ 2 843): так ти рахуєш лише перше покоління запрошених і забуваєш, що вони теж запрошують.

  • Так
    Усього = 2 169 ÷ (1 − 0,3109) = 2 169 × 1,4511 ≈ 3 147 користувачів.
  • Не так
    Усього = 2 169 × (1 + 0,3109) ≈ 2 843 користувачі.

    Рахує лише перше покоління запрошених.

Як читати k нижче 1: множник, а не двигун

Поріг k = 1 відділяє два дуже різні продукти.

  • k більше 1: кожне покоління запрошених більше за попереднє, тож самі запрошення можуть підтримувати ріст: це двигун. Мало які продукти довго втримують такий рівень.
  • k менше 1: кожне покоління менше, і ланцюжок згасає. Запрошення не можуть самі виростити продукт, але вони множать кожен інший канал на 1 ÷ (1 − k).
Людина передає конверти-запрошення друзям, ті передають ще менше, і ланцюжок згасає.
Нижче одиниці кожне коло менше, але воно все одно додає користувачів понад рекламу.

Помилка — читати «нижче 1» як «не має значення». У Halves k = 0,31 означає, що кожен користувач із реклами, пошуку в магазині чи преси приводить ще приблизно 0,45 через запрошення. Це знижує фактичну вартість кожного платного користувача й робить скорочення інших каналів дорожчим, бо відсутні користувачі теж нікого не запросять.

Протилежна помилка — називати продукт «вірусним», бо в одному сезоні k близький до 1. Червневий k Halves 0,55 — ефект сезону поїздок.

Добра форма речення: «k = 0,31 (30 днів, когорти січня–травня): запрошення множать інші канали приблизно на 1,45, але самі ріст не забезпечують».

  • Так
    «За k = 0,31 запрошення самі нас не виростять, але додають приблизно 45% до кожного іншого каналу.»
  • Не так
    «k лише 0,31, тож запрошення для росту насправді не важливі.»

    Ігнорує множник 1,45 на кожного залученого користувача.

Тривалість вірусного циклу: швидкість, а не обсяг

Тривалість вірусного циклу (viral cycle time) — скільки часу минає від приходу користувача до приходу тих, кого він запросив. У Halves медіана — 6 днів для когорт січня–травня й 3 дні в червні, коли групи для поїздок збираються швидко.

Коли k менше 1, тривалість циклу змінює, коли приходять додаткові користувачі, а не скільки їх. Сума від зерна — це зерно ÷ (1 − k), і часу в цій формулі немає: 2 169 платних користувачів травня перетворяться приблизно на 3 147, хоч запрошені прийдуть за 3 дні, хоч за 30. Коротший цикл усе одно важливий: додаткові користувачі приходять за тижні, тож прогноз чи грошовий план бачить їх раніше, а платні витрати повертаються швидше.

Формула: Справедливо для k менше 1. · є вище

Коли k більше 1, картина інша: ланцюжок не закінчується, і коротший цикл робить ріст значно стрімкішим, бо покоління змінюють одне одне швидше.

Тож подавай обидва числа разом. k каже, скільки додає петля; тривалість циклу — як швидко. І міряй тривалість циклу медіаною (значенням посередині впорядкованого ряду), бо кілька запрошених, які прийшли через місяці, сильно відтягнуть середнє.

  • Так
    «k = 0,31, медіанний цикл 6 днів: 2 169 платних користувачів травня приводять ще близько 978 за кілька тижнів.»
  • Не так
    «Скоротити цикл до 3 днів — і запрошення дадуть удвічі більше.»

    Нижче 1 сума — це зерно ÷ (1 − k), без часу.

П’ять правил чесного k

k, який витримає наступний квартал, дотримується кількох правил:

  1. Фіксоване вікно від реєстрації, однакове для кожної когорти (30 днів у Halves).
  2. Лише нові акаунти в чисельнику; наявні користувачі, що долучаються до груп, ідуть у метрику залученості.
  3. За когортою й сезоном. Когорти Halves січня–травня дають 0,29–0,33; червень дає 0,55, бо групи для поїздок підтягують друзів за кілька днів. Якщо цитувати найкращий місяць, ти обіцяєш ріст, якого решта року не дасть.
  4. Об'єднано для планування. Для множника об'єднуй порівнянні когорти (0,3109 за січень–травень), а не обирай одну.
  5. Перевірено на інкрементальність. Частина запрошених встановила б застосунок і так, із магазину чи за порадою друга. Скільки саме, покаже лише holdout-група: сховай кнопку запрошення для невеликої випадкової частки нових груп, скажімо 5%, і порівняй, скільки нових користувачів приходить через них.

Перші чотири правила роблять k порівнянним; п'яте — правдивим. Поки holdout не проведено, так і кажи: «k як виміряно; частка тих, хто прийшов би й так, ще невідома».

  • Так
    «k = 0,31 (30 днів, когорти січня–травня 2026, лише нові акаунти); holdout заплановано.»
  • Не так
    «Наш k — 0,55.»

    Сезон поїздок у червні подано як увесь рік.

Як читати holdout: інкрементальний k

Holdout-група, як її визначає урок Кейс: версія чи трафік?, — випадкова частина, яку лишають без функції; для запрошень це невелика частка нових груп, що ніколи не бачать кнопки запрошення. Їхні друзі однаково можуть знайти Halves самі, тож різниця між групами — це те, що справді додають запрошення:

За більшістю столиків друзі передають одне одному конверти-запрошення, а за кількома їх немає зовсім.
Якщо прибрати запрошення для кількох груп, видно, скільки вони справді додають.

інкрементальний k = нові користувачі на користувача з кнопкою − нові користувачі на користувача без неї

У вигаданому прикладі групи з кнопкою приводять 0,31 нового користувача на учасника за 30 днів, а holdout-групи — 0,12. Тоді 0,12 прийшли б і так, а кнопка додає 0,19: множник для планування — 1 ÷ (1 − 0,19) ≈ 1,23, а не 1,45.

Читай його як будь-який тест: різниця з інтервалом, рандомізація за групою (кластерна одиниця з уроку Хто потрапляє в тест: тригери й кластерна рандомізація) і достатньо груп, щоб побачити ефект, який має значення.

Як це складається докупи: k = запрошення × конверсія, виміряний у фіксованому вікні на нових акаунтах, прочитаний як множник разом із тривалістю циклу й виправлений holdout-групою. Далі — Канали й атрибуція в маркетингу.

  • Так
    «Інкрементальний k = 0,31 − 0,12 = 0,19; плануємо з множником близько 1,23.»
  • Не так
    «Holdout-групи все одно отримали 0,12, отже, справжній k — 0,12.»

    0,12 — це те, що приходить без запрошень; ефект запрошень — різниця.

Готові потренуватися?

Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.

Розпочати вправи