Выводы
01
Retention: strict-плюс есть, rolling его не подтверждает. По strict day-N (Firebase user_pseudo_id → backend uid, когорта 19 июня) тест выше на всех горизонтах: D1 +1.9 пп (57.0% vs 58.8%, z=0.88), D3 +0.5 пп, D7 +0.2 пп (z=0.10), D14 +1.0 пп (z=0.52) — но ни одна дельта не значима. По rolling («вернулся хотя бы раз к дню N», R20) разница исчезает: D7 control даже чуть выше (81.9% vs 81.1%), D14 обе ≈88%. Значимого эффекта на удержание нет.
02
Реальные покупки: контроль впереди по деньгам. 294 покупателя vs 265 (−9.9%), CR от дошедших до маркета 6.88% vs 6.23% (Δ−0.66 п.п., z=1.23, p≈0.22 — незначимо, контроль ведёт). Выручка $2 309 vs $1 822 (−21%), ARPPU $7.85 vs $6.87 (−12.5%), ARPU/дошедшего $0.541 vs $0.428. Первичных покупателей 283 vs 253, повторных покупок 21 vs 19. Якорь — DoppyEvents.transactions (R16), дедуп LIMIT 1 BY transaction_id, is_fraud не фильтруется (R5/B7). Армы geo-сбалансированы — разрыв не страновой.
03
WhyBuyGlasses: одинаковый охват, ×2.2 глубина просмотра. До экрана доходит близкое число юзеров (1 492 vs 1 414). Но тест просматривает 45.7 слайда vs 21.1 в control (+116%) — эффект стабилен всё время теста. Streak-контекст делает оффер релевантным, но в покупки это по-прежнему не конвертирует.
04
Создание контента: тест стабильно сильнее. Publish_Tap +12.4%/юзер, VideoCapture_Appear +10.3%, Create_Tap +11.1%. Streak-механика мотивирует снимать видео. Если приоритет — UGC-supply и creator pipeline, тест лучше.
05
Итоговый trade-off: деньги против supply. Тест → больше контента (+12% публикаций/юзер), выше вовлечённость (сессии +3.8%, feed +4.5%), глубже изучает оффер, чуть выше strict-retention (незначимо). Контроль → деньги: ARPPU +14%, больше покупателей, выше CR (Δ+0.66 п.п. в пользу контроля, незначимо). Если решать по выручке — контроль; если по UGC-supply — тест.
06
Осторожно с интерпретацией. Флаг применён ко ВСЕМ пользователям (не только новые регистрации), когорта retention — существующие активные юзеры. Армы: 6 560 control / 6 503 test (assigned = активны в окне). События атрибутированы джойном по арм-мапу (арм — свойство юзера), БЕЗ требования флага на каждом событии: иначе Session_Start и ранние события сессии занижаются почти вдвое (63k vs 106k). DAU по Session_Start, чтобы серверные батчи не искажали кривую.
Источники данных (снапшот 07.07.2026, окно Jun 19 – Jul 6): PostHog events → DoppyEvents.posthog_events_message. Арм-мап = argMax($feature/ANDROID_POST_REGISTRATION_DEEPLINK по timestamp), identity = distinct_id 24-hex = backend uid, 13 063 юзера (6 560 / 6 503); события/воронки атрибутированы джойном по арм-мапу без флаг-фильтра. Retention → DoppyEvents.firebase_doppy_raw (user_id → backend uid = splitByString(':',user_id)[1], любое событие = активность, когорта Jun 19, strict day-N + rolling R20; экспорт полон по Jul 6 — зрелы D1/D3/D7 и D14). Покупки → DoppyEvents.transactions (R16-якорь: transaction_type=marketplace_purchase_buyer, purchase_type=external, fiat_asset≠'', дедуп LIMIT 1 BY transaction_id; is_fraud НЕ фильтруется per R5/B7 — в transactions его нет; знаменатель CR — Market_Appear reachers 4 271 / 4 256; 20 покупателей unattributed, $118). GEO из $geoip_country_code. Официальный эксперимент в PostHog — статус Draft (start_date = null), флаг активен, тест продолжается. CH-запросы через HTTP-интерфейс (curl) с прокинутым арм-мапом как external table.