f8b21af4be
10_Wiki/Topics 대규모 정리: - 오류 캡처/미완성 stub 문서 227개 제거 - 교차폴더 중복 43클러스터 병합 (63파일 → redirect) - 링크명 정규화: 깨진 링크 수정·redirect 직결·개념 매핑 ~2,400건 - 카테고리 MOC 6개 신규 생성 - Graph 섹션 미해결 related-keyword 링크 10,058건 제거 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
218 lines
6.2 KiB
Markdown
218 lines
6.2 KiB
Markdown
---
|
|
id: wiki-2026-0508-g-stack-principles
|
|
title: G-Stack Principles
|
|
category: 10_Wiki/Topics
|
|
status: verified
|
|
canonical_id: self
|
|
aliases: [G-Stack, growth stack, growth engineering, growth marketing]
|
|
duplicate_of: none
|
|
source_trust_level: B
|
|
confidence_score: 0.82
|
|
verification_status: applied
|
|
tags: [growth, growth-stack, marketing, analytics, experimentation]
|
|
raw_sources: []
|
|
last_reinforced: 2026-05-10
|
|
github_commit: pending
|
|
tech_stack:
|
|
language: TypeScript / Python
|
|
framework: GA4 / Mixpanel / GrowthBook / Amplitude
|
|
---
|
|
|
|
# G-Stack Principles (Growth Stack)
|
|
|
|
## 매 한 줄
|
|
> **"매 acquisition + activation + retention + revenue + referral 의 의 의 의 modern data + tooling stack"**. 매 product-led growth (PLG), 매 experimentation, 매 personalization. 매 stack: GA4 + Mixpanel/Amplitude + GrowthBook + Segment + Customer.io.
|
|
|
|
## 매 핵심
|
|
|
|
### 매 AARRR (Pirate metrics)
|
|
- **Acquisition**.
|
|
- **Activation**: 매 'aha' moment.
|
|
- **Retention**: 매 D1, D7, D30.
|
|
- **Revenue**.
|
|
- **Referral**.
|
|
|
|
### 매 stack tier
|
|
- **Analytics**: GA4, Mixpanel, Amplitude, PostHog.
|
|
- **CDP**: Segment, RudderStack.
|
|
- **Experimentation**: GrowthBook, Optimizely, LaunchDarkly.
|
|
- **Marketing automation**: Customer.io, Braze, Iterable.
|
|
- **CRM**: Salesforce, HubSpot.
|
|
- **Reverse ETL**: Hightouch, Census.
|
|
- **Warehouse**: Snowflake, BigQuery.
|
|
|
|
### 매 응용
|
|
1. **Onboarding optimize**.
|
|
2. **Retention email / push**.
|
|
3. **Pricing test**.
|
|
4. **Feature flag rollout**.
|
|
5. **Personalization**.
|
|
|
|
## 💻 패턴
|
|
|
|
### Event tracking (Segment)
|
|
```typescript
|
|
import { Analytics } from '@segment/analytics-next';
|
|
const analytics = new Analytics({ writeKey });
|
|
analytics.track('Sign Up Completed', {
|
|
plan: 'pro',
|
|
source: 'landing',
|
|
});
|
|
```
|
|
|
|
### A/B test (GrowthBook)
|
|
```typescript
|
|
import { GrowthBook } from '@growthbook/growthbook';
|
|
const gb = new GrowthBook({ apiHost, clientKey });
|
|
await gb.loadFeatures();
|
|
gb.setAttributes({ id: userId, country });
|
|
|
|
if (gb.isOn('new_pricing_page')) showNewPricing();
|
|
const variation = gb.getValue('hero_headline', 'default');
|
|
```
|
|
|
|
### Funnel analysis (Mixpanel)
|
|
```python
|
|
import mixpanel
|
|
mp = mixpanel.Mixpanel(token)
|
|
mp.track(distinct_id, 'Funnel Step', {'step': 1, 'name': 'view_landing'})
|
|
```
|
|
|
|
### Cohort retention
|
|
```python
|
|
import pandas as pd
|
|
def retention_curve(events_df):
|
|
events_df['cohort'] = events_df.groupby('user_id').date.transform('min').dt.to_period('M')
|
|
events_df['period'] = (events_df.date.dt.to_period('M') - events_df.cohort).apply(lambda x: x.n)
|
|
return events_df.groupby(['cohort', 'period']).user_id.nunique().unstack()
|
|
```
|
|
|
|
### Activation prediction
|
|
```python
|
|
import xgboost as xgb
|
|
def predict_activation(user_features):
|
|
"""매 user 의 의 의 activate?"""
|
|
return xgb.XGBClassifier().fit(X_train, y_train).predict_proba(user_features)[:, 1]
|
|
```
|
|
|
|
### Segment + reverse ETL
|
|
```typescript
|
|
// 매 warehouse → tool sync
|
|
// 매 Hightouch config:
|
|
{
|
|
source: 'snowflake',
|
|
query: 'SELECT email, ltv FROM users WHERE ltv > 1000',
|
|
destination: 'customer_io',
|
|
mode: 'upsert',
|
|
on: 'email',
|
|
}
|
|
```
|
|
|
|
### Email automation (Customer.io)
|
|
```python
|
|
import requests
|
|
requests.post(f'https://api.customer.io/v1/campaigns/{cid}/triggers',
|
|
json={'recipients': {'segment': {'id': 1}}, 'data': {'name': '{{first_name}}'}})
|
|
```
|
|
|
|
### Cohort-based feature flag
|
|
```typescript
|
|
gb.setAttributes({
|
|
id: user.id,
|
|
cohort: user.cohort,
|
|
isPro: user.plan === 'pro',
|
|
});
|
|
if (gb.isOn('new_dashboard')) showNewDashboard();
|
|
```
|
|
|
|
### LTV prediction
|
|
```python
|
|
def predict_ltv(user_features):
|
|
"""매 first 30-day signal → 매 12-month LTV."""
|
|
return xgb.XGBRegressor().fit(X_train, y_train).predict(user_features)
|
|
```
|
|
|
|
### Churn prediction
|
|
```python
|
|
def churn_probability(user_features):
|
|
return classifier.predict_proba(user_features)[:, 1]
|
|
|
|
def trigger_winback(users):
|
|
high_churn = users[churn_probability(user_features) > 0.7]
|
|
customer_io.send_campaign('winback', high_churn)
|
|
```
|
|
|
|
### Multi-touch attribution
|
|
```python
|
|
def first_touch_attribution(touchpoints):
|
|
return touchpoints[0]
|
|
|
|
def linear_attribution(touchpoints):
|
|
return [(tp, 1/len(touchpoints)) for tp in touchpoints]
|
|
|
|
def time_decay_attribution(touchpoints, half_life_days=7):
|
|
weights = [0.5 ** ((now - tp.date).days / half_life_days) for tp in touchpoints]
|
|
total = sum(weights)
|
|
return [(tp, w/total) for tp, w in zip(touchpoints, weights)]
|
|
```
|
|
|
|
### Eval metric
|
|
```python
|
|
def growth_metrics(users, period_days=30):
|
|
return {
|
|
'D1_retention': retention(users, day=1),
|
|
'D7_retention': retention(users, day=7),
|
|
'D30_retention': retention(users, day=30),
|
|
'avg_LTV': mean([u.ltv for u in users]),
|
|
'CAC': sum(u.acquisition_cost for u in users) / len(users),
|
|
'NRR': net_revenue_retention(users, period_days),
|
|
}
|
|
```
|
|
|
|
### Onboarding flow optimize
|
|
```python
|
|
def onboarding_funnel(events):
|
|
steps = ['signup', 'verify_email', 'create_first_project', 'invite_teammate', 'first_action']
|
|
drop_offs = []
|
|
for i in range(1, len(steps)):
|
|
rate = events[steps[i]].nunique() / events[steps[i-1]].nunique()
|
|
drop_offs.append((steps[i-1], steps[i], 1 - rate))
|
|
return drop_offs
|
|
```
|
|
|
|
## 매 결정 기준
|
|
| 상황 | Tool |
|
|
|---|---|
|
|
| Product analytics | Mixpanel / Amplitude / PostHog |
|
|
| Pipeline | Segment + warehouse + Hightouch |
|
|
| Experimentation | GrowthBook / Optimizely |
|
|
| Email | Customer.io / Braze |
|
|
| Open-source | PostHog + GrowthBook |
|
|
| Enterprise | Amplitude + LaunchDarkly + Braze |
|
|
|
|
**기본값**: 매 Segment + 매 warehouse + 매 PostHog/Amplitude + 매 GrowthBook + 매 Customer.io + 매 cohort retention focus.
|
|
|
|
## 🔗 Graph
|
|
- 응용: [[E-commerce-Optimization]] · [[Dynamic-Creative-Optimization]]
|
|
- Adjacent: [[Feature-Flag]]
|
|
|
|
## 🤖 LLM 활용
|
|
**언제**: 매 SaaS / consumer product. 매 PLG.
|
|
**언제 X**: 매 enterprise sales-led only.
|
|
|
|
## ❌ 안티패턴
|
|
- **Vanity metrics**: 매 page views, signups.
|
|
- **No experimentation discipline**: 매 noise as truth.
|
|
- **Tool sprawl**: 매 5+ overlapping.
|
|
- **No cohort analysis**: 매 average misleading.
|
|
|
|
## 🧪 검증 / 중복
|
|
- Verified (Reforge, GrowthBook docs, Segment docs, Pirate metrics McClure).
|
|
- 신뢰도 B.
|
|
|
|
## 🕓 Changelog
|
|
| 날짜 | 변경 |
|
|
|---|---|
|
|
| 2026-05-08 | Phase 1 |
|
|
| 2026-05-10 | Manual cleanup — AARRR + 매 Segment / GrowthBook / cohort / LTV / churn code |
|