테마
Epic Spec: E-04 Phase 2 순이익 번역
메타
| 항목 | 값 |
|---|---|
| Epic ID | E-04 |
| Sprint | S52 |
| 상태 | approved |
| PO 승인일 | - |
| 담당 | 수민 (FE), 하록 (BE) |
1. WHY: 왜 이 기능이 필요한가?
문제 정의
셀러가 ROAS를 보는 진짜 이유는 순이익을 극대화하기 위해서다. 그러나 쿠팡은 원가를 모르니 ROAS(프록시 지표)만 제공할 수밖에 없다.
[셀러의 고통]
1. ROAS 441%인데... 이게 좋은 건가?
2. 입찰가를 올려야 할까, 내려야 할까?
3. 결국 "감"으로 광고 설정 변경
4. 잘못된 판단 → 순이익 손실장사왕만 할 수 있는 것
쿠팡 광고센터: 원가 모름 → ROAS만 제공
↓
장사왕: 원가 있음 → 순이익 기반 판단 가능
↓
"ROAS 441%인데 실제로는 100원당 12원밖에 안 남아요"
"입찰가 200원→150원으로 낮추면 100원당 25원 남아요"
↓
이건 쿠팡이 절대 못하는 것 = 우리의 해자(Moat)근거 데이터
| 지표 | 수치 | 출처 | 비고 |
|---|---|---|---|
| "ROAS 이해 안 됨" VOC | 다수 | 채널톡 | 초보 셀러 |
| Sprint 50 Intent Rate | 9.1% | GA4 | 행동 전환 낮음 |
| "그래서 뭘 해야 하죠?" VOC | 핵심 | 채널톡 | 판단 대신 니즈 |
기대 효과
- 판단 대신 서비스: "ROAS 몇 %" → "100원당 X원 남아요"
- 행동 유도: "입찰가 200원→150원" 구체적 가이드
- 차별화: 쿠팡/경쟁사가 절대 따라올 수 없는 영역
2. WHAT: 상세 요구사항
데이터 제약사항 (2026-01-26 DB 분석 결과)
⚠️ 쿠팡 광고 스크랩 데이터 한계로 인한 제약. 아래 분석은
snapshot_service_db실사 기준.
✅ 사용 가능한 데이터 (진단 가능)
| 데이터 | 테이블 | 컬럼 | 활용 |
|---|---|---|---|
| 순이익 | CoupangAdCampaignProductDaily | netProfit | 100원당 순이익 계산 |
| 마진율 | CoupangAdCampaignProductDaily | marginRate | BEP ROAS 계산 |
| ROAS | 계산 | conversionAmount / adCost × 100 | 효율 판단 |
| CPC | 계산 | adCost / clickCount | 광고비 효율 |
| CTR | 계산 | clickCount / exposureCount × 100 | 노출 효율 |
| CVR | 계산 | orderCnt / clickCount × 100 | 전환 효율 |
| 광고 유형 | CoupangAdCampaignProductDaily | adType | 자동/수동 조언 분기 |
✅ 영역별 데이터 (2026-01-27 추가)
| 데이터 | 테이블 | 컬럼 | 활용 |
|---|---|---|---|
| 노출 영역 | CoupangAdExposureDaily | exposureArea | 검색/비검색/리타게팅 분리 |
| 영역별 노출 | CoupangAdExposureDaily | exposureCount | 영역별 효율 분석 |
| 영역별 클릭 | CoupangAdExposureDaily | clickCount | 영역별 CTR 계산 |
| 영역별 광고비 | CoupangAdExposureDaily | adCost | 영역별 CPC/ROAS 계산 |
| 영역별 전환매출 | CoupangAdExposureDaily | conversionAmount | 영역별 순이익 계산 |
노출 영역 분포 (DB 분석 2026-01-27, 최근 30일)
- 검색 영역: 48.2% (CTR 3.15%, CPC 861원, ROAS 338%)
- 비검색 영역: 33.2% (CTR 0.11%, CPC 295원, ROAS 388%)
- 리타게팅(외부 채널): 18.6% (CTR 2.98%, CPC 39원, ROAS 313%)
❌ 사용 불가능한 데이터
| 데이터 | 상태 | 대안 |
|---|---|---|
| 목표 ROAS | 쿠팡 미제공 | BEP ROAS 기반 방향성 제시 |
| 입찰가 | 쿠팡 미제공 | CPC 기반 방향성 제시 |
📌 핵심 원칙
1. 구체적 값("목표 ROAS 400%로") 대신 방향성("목표 ROAS를 높여보세요") 제시
2. 광고 유형(adType)에 따라 자동/수동 조언 분기
3. BEP ROAS를 기준점으로 활용 (= 손익분기 ROAS)
4. 100원당 순이익을 핵심 지표로 사용핵심 기능
| # | 기능 | 설명 | 필수 여부 | 데이터 |
|---|---|---|---|---|
| 1 | 순이익 번역 UI | "ROAS 441% → 100원당 12원 남음" | 필수 | ✅ 가능 |
| 2 | Margin Room 설정 | 셀러 성향 (보수형/균형형/공격형) | 필수 | ✅ 가능 |
| 3 | 캠페인 행동 조언 | 순이익 + BEP ROAS 기반 방향성 제시 | 필수 | ✅ 가능 |
| 4 | ❌ 입찰가 없음 → 스펙아웃 | |||
| 5 | 셀러 타입 자동 분류 | 마진 변동성 기반 추천 | 선택 (P1) | ✅ 가능 |
비즈니스 로직
로직 1: 번역 레벨 (Translation Levels)
[번역의 깊이 - 4단계]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Level 1: 정보 번역 (Information)
┌─────────────────────────────────────────────────────────────────┐
│ ROAS 441% │
│ ───────────────── │
│ 💰 100원당 12원 남음 │
└─────────────────────────────────────────────────────────────────┘
→ 단순 숫자 변환, 가치 낮음
Level 2: 판단 번역 (Judgment)
┌─────────────────────────────────────────────────────────────────┐
│ ROAS 441% → 100원당 12원 남음 │
│ │
│ 💡 마진 대비 광고비가 과해요 │
│ (마진율 30%인데 광고비가 25% 먹고 있어요) │
└─────────────────────────────────────────────────────────────────┘
→ 좋고 나쁨 판단 추가
Level 3: 행동 번역 (Action) ⭐ Phase 2 목표
┌─────────────────────────────────────────────────────────────────┐
│ ROAS 441% → 100원당 12원 남음 │
│ │
│ 💡 마진 대비 광고비가 과해요 │
│ │
│ 📋 추천 액션: │
│ 목표 ROAS를 400% → 500%로 올리면 │
│ 100원당 25원 남을 수 있어요 (+13원 ↑) │
│ │
│ [쿠팡 광고센터에서 목표 ROAS 조정하기 →] │
└─────────────────────────────────────────────────────────────────┘
→ 구체적 행동과 예상 결과 제시
Level 4: 결과 번역 (Outcome) - 미래
┌─────────────────────────────────────────────────────────────────┐
│ 이번 달 예상: │
│ 현재대로 유지 → 순이익 50만원 │
│ 조언대로 변경 → 순이익 80만원 (+30만원) │
└─────────────────────────────────────────────────────────────────┘
→ 월간/누적 영향 계산 (Phase 3+)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Phase 2 목표: Level 3 (행동 번역) 달성
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 2: 순이익 번역 계산식
[기본 계산식]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
순이익 = 전환매출 - 상품원가 - 광고비
= conversionAmount - (totalPurchaseCost × saleQuantity) - adCost
100원당 순이익 = (순이익 / 광고비) × 100
[예시]
광고비: 100,000원
전환매출: 441,000원 (ROAS 441%)
상품원가: 300,000원 (마진율 32%)
순이익: 441,000 - 300,000 - 110,000 = 31,000원
100원당 순이익: 31원
BUT 실제로는...
광고비 VAT 포함하면: 110,000원
실제 순이익: 441,000 - 300,000 - 110,000 = 31,000원
실제 100원당: 28원
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[표시 규칙]
• 양수: "100원당 X원 남음" (초록색)
• 0~소액: "100원당 거의 본전" (노란색)
• 음수: "100원당 X원 손해" (빨간색)로직 2-1: 영역별 순이익 번역 ⭐ 신규 (2026-01-27)
[영역별 순이익 번역 - 검색/비검색/리타게팅]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 WHY: 캠페인 전체 ROAS가 좋아도, 특정 영역에서 손해볼 수 있음
→ 영역별 순이익을 보여줘야 "어디서 새는지" 알 수 있음
[영역별 계산식]
검색 영역:
• 검색 순이익 = 검색 전환매출 - (검색 전환 상품원가) - 검색 광고비
• 검색 100원당 = (검색 순이익 / 검색 광고비) × 100
비검색 영역:
• 비검색 순이익 = 비검색 전환매출 - (비검색 전환 상품원가) - 비검색 광고비
• 비검색 100원당 = (비검색 순이익 / 비검색 광고비) × 100
리타게팅(외부 채널):
• 리타게팅 순이익 = 리타게팅 전환매출 - (리타게팅 전환 상품원가) - 리타게팅 광고비
• 리타게팅 100원당 = (리타게팅 순이익 / 리타게팅 광고비) × 100
[데이터 소스]
• 테이블: CoupangAdExposureDaily (prod_service_db)
• 분류 키: exposureArea ("검색 영역", "비검색 영역", "리타게팅(외부 채널)")
• JOIN: 캠페인별 원가 데이터 필요
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[예시: 캠페인 A 영역별 순이익]
전체: ROAS 350% → 100원당 15원 남음
┌─────────────────────────────────────────────────────────────────┐
│ 📊 영역별 분석 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 🔍 검색 광고 │
│ 광고비: 50,000원 (50%) │
│ ROAS: 380% → 100원당 28원 남음 ✅ │
│ │
│ 📺 비검색 광고 │
│ 광고비: 30,000원 (30%) │
│ ROAS: 250% → 100원당 -8원 손해 🔴 │
│ │
│ 🎯 리타게팅 │
│ 광고비: 20,000원 (20%) │
│ ROAS: 420% → 100원당 35원 남음 ✅ │
│ │
│ ─────────────────────────────────────────────────────────────── │
│ 💡 비검색에서 손해가 나고 있어요. 비검색 입찰가를 낮춰보세요. │
└─────────────────────────────────────────────────────────────────┘
[영역별 기여도 분석]
• 전체 순이익: 15,000원
├─ 검색 기여: +14,000원 (93%)
├─ 비검색 기여: -2,400원 (-16%)
└─ 리타게팅 기여: +7,000원 (47%)
→ 비검색이 전체 순이익을 깎아먹고 있음!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[영역별 표시 규칙]
| 영역 | 100원당 순이익 | 표시 |
|------|---------------|------|
| 검색 | ≥ 30 | 🟢 검색에서 잘 벌고 있어요 |
| 검색 | 0 ~ 29 | 🟡 검색은 본전이에요 |
| 검색 | < 0 | 🔴 검색에서 손해예요 |
| 비검색 | ≥ 30 | 🟢 비검색에서 잘 벌고 있어요 |
| 비검색 | 0 ~ 29 | 🟡 비검색은 본전이에요 |
| 비검색 | < 0 | 🔴 비검색에서 손해예요 |
| 리타게팅 | ≥ 30 | 🟢 리타게팅에서 잘 벌고 있어요 |
| 리타게팅 | 0 ~ 29 | 🟡 리타게팅은 본전이에요 |
| 리타게팅 | < 0 | 🔴 리타게팅에서 손해예요 |
※ 리타게팅 특성: CPC가 매우 낮아(~39원) 대체로 효율 좋음
※ E-03 Surface Layer와 연계: 영역별 Status Badge와 동기화로직 3: Margin Room 설정
[Margin Room = 광고에 쓸 수 있는 여유 마진]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
셀러 성향에 따라 "순이익의 몇 %까지 광고비로 쓸 것인가" 결정
┌─────────────────────────────────────────────────────────────────┐
│ Margin Room 설정 │
│ │
│ 💰 현재 평균 마진율: 32% │
│ 📊 최근 3개월 마진 변동성: ±8% (중간) │
│ │
│ 추천: 균형형 │
│ │
│ ○ 보수형 (Conservative) │
│ 광고비 ≤ 순이익의 50% │
│ "안전하게, 확실한 이익만" │
│ │
│ ● 균형형 (Balanced) ← 추천 │
│ 광고비 ≤ 순이익의 70% │
│ "적당한 성장과 안전의 균형" │
│ │
│ ○ 공격형 (Aggressive) │
│ 광고비 ≤ 순이익의 90% │
│ "매출 성장 우선, 이익은 나중에" │
│ │
│ [설정 저장] │
└─────────────────────────────────────────────────────────────────┘
[변동성 기반 추천 기준]
| 마진 변동성 | 추천 타입 | 이유 |
|------------|----------|------|
| 낮음 (±5% 이내) | 공격형 가능 | 예측 가능, 리스크 낮음 |
| 중간 (±5~10%) | 균형형 추천 | 적당한 버퍼 필요 |
| 높음 (±10% 이상) | 보수형 권장 | 마진 급락 대비 필요 |로직 4: 캠페인 행동 조언 (자동 광고)
[자동 광고 사용자용 - BEP ROAS 기반 조언]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 데이터 제약: 목표 ROAS는 쿠팡 스크랩 데이터에 없어 구체적 값 제시 불가
→ BEP ROAS 및 순이익 기반으로 판단
현재 상태:
• BEP ROAS: 367% (마진율 30% 기준)
• 실제 ROAS: 280%
• 100원당 순이익: 5원 (거의 본전)
• Margin Room: 균형형 (70%)
┌─────────────────────────────────────────────────────────────────┐
│ 캠페인 A 🟡 주의 │
│ │
│ ROAS 280% → 100원당 5원 남음 (거의 본전) │
│ │
│ 💡 Margin Room(균형형) 기준으로 광고비가 과해요 │
│ │
│ 📋 추천: 쿠팡 광고센터에서 목표 ROAS를 높여보세요 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 현재 ROAS: 280% ││
│ │ BEP ROAS: 367% (이 이상이면 순이익 발생) ││
│ │ ││
│ │ 💡 목표 ROAS를 높이면: ││
│ │ • 입찰가가 자동으로 낮아져요 ││
│ │ • 노출은 줄 수 있지만, 효율이 올라가요 ││
│ │ ││
│ │ ※ 목표 ROAS 현재값은 쿠팡 광고센터에서 확인하세요 ││
│ └─────────────────────────────────────────────────────────────┘│
│ │
│ [쿠팡 광고센터에서 목표 ROAS 높이기 →] │
└─────────────────────────────────────────────────────────────────┘
[BEP ROAS 계산 로직]
BEP ROAS = 100 / marginRate × 100
예) 마진율 30% → BEP ROAS = 100 / 30 × 100 = 333%로직 5: 캠페인 행동 조언 (CPC 기반 방향성)
[CPC 기반 방향성 조언]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ 데이터 제약: 입찰가는 쿠팡 스크랩 데이터에 없어 구체적 값 제시 불가
→ CPC 및 순이익 기반으로 방향성 제시
현재 상태:
• CPC: 180원 (계산됨: adCost / clickCount)
• 허용 CPC: 120원 (계산됨: (평균 주문금액 × CVR) / BEP ROAS)
• 100원당 순이익: 8원
• Margin Room: 균형형 (70%)
┌─────────────────────────────────────────────────────────────────┐
│ 캠페인 B 🟡 주의 │
│ │
│ ROAS 320% → 100원당 8원 남음 │
│ │
│ 💡 CPC가 허용 범위보다 높아서 순이익이 적어요 │
│ │
│ 📋 추천: 쿠팡 광고센터에서 입찰가를 낮춰보세요 │
│ │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 현재 CPC: 180원 ││
│ │ 허용 CPC: 120원 (이 이하면 적정 순이익) ││
│ │ ││
│ │ 💡 입찰가를 낮추면: ││
│ │ • CPC가 낮아져서 광고 효율이 올라가요 ││
│ │ • 노출은 줄 수 있지만, 순이익이 개선돼요 ││
│ │ ││
│ │ ※ 현재 입찰가는 쿠팡 광고센터에서 확인하세요 ││
│ └─────────────────────────────────────────────────────────────┘│
│ │
│ [쿠팡 광고센터에서 입찰가 조정하기 →] │
└─────────────────────────────────────────────────────────────────┘
[허용 CPC 계산 로직]
허용 CPC = (평균 주문금액 × CVR) / BEP ROAS × Margin Room%
예) 평균 주문금액 30,000원, CVR 3%, BEP ROAS 367%, MarginRoom 70%
→ 허용 CPC = (30,000 × 0.03) / 3.67 × 0.7 = 171원
※ Margin Room이 높을수록(공격형) 허용 CPC가 높아짐
- 공격형(90%): 광고비 많이 쓸 의향 → 높은 CPC 허용 (220원)
- 균형형(70%): 적정 광고비 → 적정 CPC 허용 (171원)
- 보수형(30%): 광고비 적게 쓸 의향 → 낮은 CPC만 허용 (73원)로직 6: 조언 판정 플로우 (Decision Tree)
[Phase 2 순이익 번역 → 조언 판정 플로우 v4.0]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 v4.0 핵심 변경
• MECE 보장: 하나의 캠페인 → 하나의 케이스만 분류
• 단일 경로: 우선순위 기반 순차 체크
• 자동/수동 완전 분리: 모든 액션 케이스에 광고유형 분기
[Step 0: Pre-condition]
원가 입력 여부?
├─ NO → P-E1 (원가 미입력) → 종료
└─ YES → Step 1로
[Step 1: 대분류 - 100원당 순이익]
100원당 순이익 = ((전환매출 - 원가 - 광고비) / 광고비) × 100
BEP ROAS = (100 / marginRate) × 100
├─ < 0 (손해) → 🔴 Step 2A
├─ 0 ~ 29 (본전) → 🟡 Step 2B
└─ ≥ 30 (건강) → 🟢 Step 2C
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Step 2A: 🔴 손해 분기] - 마진 우선 체크
마진율 체크 (구조적 문제 우선)
├─ 마진 < 10% → P-1a → 종료
├─ 10% ≤ 마진 < 15% → P-1b → 종료
└─ 마진 ≥ 15% → Step 3A (광고 효율 문제)
[Step 3A: 광고 유형 분기]
├─ 자동광고 → Step 4A-자동
└─ 수동광고 → Step 4A-수동
[Step 4A-자동: 자동광고 손해 - ROAS 기반]
ROAS vs BEP ROAS 비교
├─ ROAS < BEP × 0.8 → P-2a → 종료
└─ ROAS ≥ BEP × 0.8 → P-3a → 종료
[Step 4A-수동: 수동광고 손해 - CPC 기반] (우선순위 순서)
├─ CPC ≥ 허용CPC × 1.5 → P-4a → 종료
├─ 허용CPC × 1.3 ≤ CPC < 허용CPC × 1.5 → P-4b → 종료
├─ CVR < 3% AND 클릭 ≥ 50 → P-5 → 종료
└─ 그 외 → P-2b → 종료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Step 2B: 🟡 본전 분기] - MarginRoom 기준
광고비 vs MarginRoom 비교
├─ 광고비 > MarginRoom → Step 3B-초과
└─ 광고비 ≤ MarginRoom → Step 3B-이내
[Step 3B-초과: MarginRoom 초과]
├─ 자동광고 → P-6a → 종료
└─ 수동광고 → P-6b → 종료
[Step 3B-이내: MarginRoom 이내]
마진율 체크
├─ 마진 < 15% → P-7 → 종료
└─ 마진 ≥ 15% → Step 4B
[Step 4B: 최적화 여지]
├─ 자동광고 → P-8a → 종료
└─ 수동광고 → P-8b → 종료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Step 2C: 🟢 건강 분기] - 마진 기준 확장 가능성
마진율 체크
├─ 마진 ≥ 30% → Step 3C-스케일업
├─ 20% ≤ 마진 < 30% → Step 3C-소폭확장
└─ 마진 < 20% → P-9c → 종료
[Step 3C-스케일업: 마진 ≥ 30%]
├─ 자동광고 → P-9a-자동 → 종료
└─ 수동광고 → P-9a-수동 → 종료
[Step 3C-소폭확장: 20% ≤ 마진 < 30%]
├─ 자동광고 → P-9b-자동 → 종료
└─ 수동광고 → P-9b-수동 → 종료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━로직 7: 조언 케이스별 상세 테이블 (1:1:1 매칭)
📌 조언 원칙: 광고 유형(adType)에 따라 자동/수동 조언 분기. 구체적 값("목표 ROAS 400%로", "입찰가 150원으로") 대신 방향성("높여보세요", "낮춰보세요") 제시.
📐 플레이스홀더 계산식
| 플레이스홀더 | 의미 | 계산식 | 데이터 소스 |
|---|---|---|---|
{X} (ROAS) | 현재 ROAS (%) | (conversionAmount / adCost) × 100 | CoupangAdCampaignProductDaily |
{Y} (BEP ROAS) | 손익분기 ROAS (%) | (100 / marginRate) × 100 | CoupangAdCampaignProductDaily.marginRate |
{M} (마진율) | 현재 마진율 (%) | marginRate | CoupangAdCampaignProductDaily.marginRate |
{C} (CPC) | 현재 CPC (원) | adCost / clickCount | 계산 |
{AC} (허용CPC) | 허용 CPC (원) | (평균주문금액 × CVR) / BEP ROAS × MarginRoom% | 계산 |
BEP ROAS 예시: 마진율 30% → (100/30) × 100 = 333%
케이스 정의서 (진단-메시지-액션 1:1:1)
📌 구조: 각 케이스는 진단 1개, 메시지 1개, 액션 1개로 구성됨.
- 진단: Badge(🔴🟡🟢) + 상태 한줄 요약
- 메시지: 사용자에게 보여줄 설명 (원인 + 방향성)
- 액션: 쿠팡 광고센터 버튼 라벨 또는 장사왕 내 행동
🔴 손해 케이스 (100원당 순이익 < 0)
📌 분기 우선순위: 마진 체크 → 광고유형 분기 → 세부 조건
- 자동광고: ROAS vs BEP ROAS 비교
- 수동광고: CPC vs 허용 CPC 비교
| 케이스 | 조건 | 진단 | 메시지 | 액션 |
|---|---|---|---|---|
| P-1a | 마진 < 10% | 🔴 마진 구조 한계 | 마진 {M}%로는 광고비를 감당할 수 없어요. 광고보다 자연 판매에 집중하세요. | 광고 중단 검토 |
| P-1b | 10% ≤ 마진 < 15% | 🔴 마진 개선 필요 | 마진 {M}%로는 광고비 감당이 빠듯해요. 판매가를 조금 올리면 흑자 전환 가능해요. | 판매가 인상 검토 |
| P-2a | 마진 ≥ 15% + 자동 + ROAS < BEP×0.8 | 🔴 효율 대폭 개선 필요 | ROAS {X}%가 BEP {Y}%보다 많이 낮아요. 목표 ROAS를 높여보세요. | 목표 ROAS 높이기 |
| P-2b | 마진 ≥ 15% + 수동 + 기타 | 🔴 효율 개선 필요 | 광고 효율이 낮아서 손해예요. 입찰가를 낮춰보세요. | 입찰가 낮추기 |
| P-3a | 마진 ≥ 15% + 자동 + ROAS ≥ BEP×0.8 | 🔴 효율 소폭 개선 필요 | ROAS {X}%가 BEP {Y}%에 거의 다 왔어요. 목표 ROAS를 조금만 높이면 흑자예요. | 목표 ROAS 조금 높이기 |
| P-4a | 마진 ≥ 15% + 수동 + CPC ≥ 허용×1.5 | 🔴 CPC 과다 | CPC {C}원이 허용 {AC}원을 크게 초과해요. 입찰가를 낮춰보세요. | 입찰가 낮추기 |
| P-4b | 마진 ≥ 15% + 수동 + 허용×1.3 ≤ CPC | 🔴 CPC 높음 | CPC {C}원이 허용 {AC}원보다 조금 높아요. 입찰가를 조금 낮추면 본전 이상 가능해요. | 입찰가 조금 낮추기 |
| P-5 | 마진 ≥ 15% + 수동 + CVR < 3% + 클릭 ≥ 50 | 🔴 전환율 점검 필요 | 클릭은 오는데 구매로 안 이어져요. 상세페이지나 가격을 점검해보세요. | 상세페이지 점검 |
🟡 본전 케이스 (0 ≤ 100원당 순이익 < 30)
| 케이스 | 조건 | 진단 | 메시지 | 액션 |
|---|---|---|---|---|
| P-6a | 광고비 > MarginRoom AND 자동광고 | 🟡 효율 개선 필요 | {MarginRoom타입} 기준으로 광고비가 과해요. 쿠팡 광고센터에서 목표 ROAS를 높여보세요. | 목표 ROAS 높이기 |
| P-6b | 광고비 > MarginRoom AND 수동광고 | 🟡 효율 개선 필요 | {MarginRoom타입} 기준으로 광고비가 과해요. 쿠팡 광고센터에서 입찰가를 낮춰보세요. | 입찰가 낮추기 |
| P-7 | 광고비 ≤ MarginRoom AND 마진 < 15% | 🟡 현 수준 유지 | 돈은 벌고 있지만, 마진 {M}%라 확장해도 크게 달라지지 않아요. | 현 수준 유지 |
| P-8a | 광고비 ≤ MarginRoom AND 마진 ≥ 15% AND 자동광고 | 🟡 최적화 여지 있음 | 지금 괜찮아요. 목표 ROAS를 조금 높이면 순이익이 더 늘어날 수 있어요. | 목표 ROAS 조금 높이기 |
| P-8b | 광고비 ≤ MarginRoom AND 마진 ≥ 15% AND 수동광고 | 🟡 최적화 여지 있음 | 지금 괜찮아요. 입찰가를 조금 낮추면 순이익이 더 늘어날 수 있어요. | 입찰가 조금 낮추기 |
🟢 건강 케이스 (100원당 순이익 ≥ 30)
📌 자동/수동 분리: 확장 조언 시 광고유형에 따라 조정 대상이 다름
- 자동광고: 목표 ROAS 낮추기 또는 예산 증액
- 수동광고: 입찰가 올리기 또는 예산 증액
| 케이스 | 조건 | 진단 | 메시지 | 액션 |
|---|---|---|---|---|
| P-9a-자동 | 100원당 ≥ 30 + 마진 ≥ 30% + 자동 | 🟢 스케일업 가능 | 잘 벌고 있어요! 목표 ROAS를 낮추거나 예산을 늘려 매출을 더 키워보세요. | 목표 ROAS 낮추기 |
| P-9a-수동 | 100원당 ≥ 30 + 마진 ≥ 30% + 수동 | 🟢 스케일업 가능 | 잘 벌고 있어요! 입찰가를 올리거나 예산을 늘려 매출을 더 키워보세요. | 입찰가 올리기 |
| P-9b-자동 | 100원당 ≥ 30 + 20% ≤ 마진 < 30% + 자동 | 🟢 소폭 확장 가능 | 수익 나고 있어요! 목표 ROAS를 조금 낮춰서 테스트해보세요. | 목표 ROAS 조금 낮추기 |
| P-9b-수동 | 100원당 ≥ 30 + 20% ≤ 마진 < 30% + 수동 | 🟢 소폭 확장 가능 | 수익 나고 있어요! 입찰가를 조금 올려서 테스트해보세요. | 입찰가 조금 올리기 |
| P-9c | 100원당 ≥ 30 + 마진 < 20% | 🟢 현 수준 유지 | 순이익은 나고 있지만 마진이 낮아서 광고비 늘리면 오히려 손해볼 수 있어요. | 현 수준 유지 |
⚪ 예외 케이스
| 케이스 | 조건 | 진단 | 메시지 | 액션 |
|---|---|---|---|---|
| P-E1 | 원가 = NULL | ⚪ 원가 미입력 | 원가를 입력하면 이 캠페인이 돈을 버는지 알려드릴게요. | 원가 입력하기 |
케이스 번호 매핑표
| 영역 | 케이스 | 총 개수 |
|---|---|---|
| 🔴 손해 | P-1a, P-1b, P-2a, P-2b, P-3a, P-4a, P-4b, P-5 | 8개 |
| 🟡 본전 | P-6a, P-6b, P-7, P-8a, P-8b | 5개 |
| 🟢 건강 | P-9a-자동, P-9a-수동, P-9b-자동, P-9b-수동, P-9c | 5개 |
| ⚪ 예외 | P-E1 | 1개 |
| 총계 | 19개 |
로직 7-1: 영역별 조언 로직 ⭐ 신규 (2026-01-27)
[영역별 순이익 기반 추가 조언]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 목적: 캠페인 전체 조언(로직 6-7) + 영역별 세부 조언 제공
📌 E-03 연계: Surface Layer 영역별 진단과 메시지 동기화
[영역별 조언 판정 플로우]
Step 1: 영역별 데이터 존재 확인
├─ 검색 데이터 있음 → 검색 영역 조언
├─ 비검색 데이터 있음 → 비검색 영역 조언
└─ 리타게팅 데이터 있음 → 리타게팅 영역 조언 (참고 수준)
Step 2: 영역별 100원당 순이익 계산
Step 3: 영역별 상태 판정 + 조언 매칭
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[영역별 조언 케이스]
🔍 검색 영역 조언:
| 케이스 | 조건 | 조언 메시지 | 액션 |
|--------|------|-------------|------|
| A-S1 | 검색 100원당 < 0 + 자동 | 검색에서 손해예요. 목표 ROAS를 높여보세요. | 목표 ROAS 높이기 |
| A-S2 | 검색 100원당 < 0 + 수동 | 검색에서 손해예요. 검색 입찰가를 낮춰보세요. | 검색 입찰가 낮추기 |
| A-S3 | 검색 100원당 ≥ 30 | 검색에서 잘 벌고 있어요! | 현 수준 유지 |
📺 비검색 영역 조언:
| 케이스 | 조건 | 조언 메시지 | 액션 |
|--------|------|-------------|------|
| A-N1 | 비검색 100원당 < 0 | 비검색에서 손해예요. 비검색 입찰가를 낮춰보세요. | 비검색 입찰가 낮추기 |
| A-N2 | 비검색 100원당 0~29 | 비검색은 본전이에요. 비검색 입찰가를 조금 낮춰보세요. | 비검색 입찰가 조금 낮추기 |
| A-N3 | 비검색 100원당 ≥ 30 | 비검색에서 잘 벌고 있어요! | 현 수준 유지 |
🎯 리타게팅 영역 조언:
| 케이스 | 조건 | 조언 메시지 | 액션 |
|--------|------|-------------|------|
| A-R1 | 리타게팅 100원당 < 0 | 리타게팅 효율이 낮아요. 상품 페이지 전환율을 확인해보세요. | 상품 페이지 점검 |
| A-R2 | 리타게팅 100원당 ≥ 0 | 리타게팅은 괜찮아요. (CPC가 낮아서 효율 좋은 편) | 현 수준 유지 |
※ 리타게팅은 셀러 컨트롤 제한적 → "참고" 수준 조언
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[영역별 우선순위]
전체가 손해일 때, 어느 영역을 먼저 고쳐야 하나?
우선순위 = 해당 영역의 "손해 금액" 기준
├─ 손해 금액이 가장 큰 영역 먼저 표시
├─ 리타게팅은 셀러 컨트롤 어려움 → 항상 마지막
└─ 검색 vs 비검색은 광고비 비중 고려
[예시]
• 검색 손해: -5,000원
• 비검색 손해: -8,000원
• 리타게팅 손해: -1,000원
→ "비검색에서 가장 많은 손해가 나고 있어요. 비검색 입찰가를 먼저 낮춰보세요."
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[UI 표시 예시]
┌─────────────────────────────────────────────────────────────────┐
│ 캠페인 A 🟡 주의 │
│ │
│ 전체: ROAS 280% → 100원당 5원 남음 (본전) │
│ │
│ ▼ 영역별 분석 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 🔍 검색 100원당 +25원 🟢 광고비 비중 50% │ │
│ │ 📺 비검색 100원당 -15원 🔴 광고비 비중 35% │ │
│ │ 🎯 리타게팅 100원당 +10원 🟡 광고비 비중 15% │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 💡 비검색에서 손해가 나고 있어요. │
│ 비검색 입찰가를 낮추면 전체 순이익이 개선돼요. │
│ │
│ [쿠팡 광고센터에서 비검색 입찰가 낮추기 →] │
└─────────────────────────────────────────────────────────────────┘로직 8: 키워드 행동 조언
[키워드별 입찰가 조정 가이드]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
캠페인 A의 키워드 분석 (수동 광고)
┌─────────────────────────────────────────────────────────────────┐
│ 🔑 키워드별 순이익 분석 │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 🟢 "강아지 간식" 100원당 +35원 (Good!) │ │
│ │ 현재 입찰가 150원 → 유지 추천 │ │
│ ├───────────────────────────────────────────────────────────┤ │
│ │ 🟡 "강아지 사료" 100원당 +8원 (본전) │ │
│ │ 현재 입찰가 200원 → 150원 추천 (+10원 예상) │ │
│ ├───────────────────────────────────────────────────────────┤ │
│ │ 🔴 "애견용품" 100원당 -12원 (손해) │ │
│ │ 현재 입찰가 180원 → 100원 또는 제외 추천 │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ 📊 요약: │
│ • 수익 키워드: 3개 (유지) │
│ • 조정 필요: 5개 (입찰가 낮추기) │
│ • 제외 검토: 2개 (손해 지속) │
│ │
│ [쿠팡 광고센터에서 키워드 관리하기 →] │
└─────────────────────────────────────────────────────────────────┘
[키워드 분류 기준]
| 상태 | 조건 | 추천 액션 |
|------|------|----------|
| 🟢 수익 | 100원당 +20원 이상 | 유지 또는 입찰가 소폭 상향 |
| 🟡 본전 | 100원당 0~+20원 | 입찰가 10~20% 하향 |
| 🔴 손해 | 100원당 음수 | 입찰가 30%+ 하향 또는 제외 |User Story (상세)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-01: ROAS를 순이익으로 이해하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a ROAS가 뭔지 잘 모르는 초보 셀러
I want to "100원당 X원 남음"으로 번역된 순이익을 보고 싶다
So that 내 광고가 돈을 버는지 알 수 있다
[수락 기준]
Given 캠페인에 원가 데이터가 입력되어 있을 때
When 캠페인 카드를 볼 때
Then ROAS 옆에 "100원당 X원 남음" 번역이 표시된다
And 양수면 초록색, 본전이면 노란색, 음수면 빨간색으로 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-02: 내 성향에 맞는 Margin Room 설정하기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 광고 전략을 세우려는 셀러
I want to 내 성향(보수형/균형형/공격형)에 맞는 Margin Room을 설정하고 싶다
So that 그에 맞는 맞춤 조언을 받을 수 있다
[수락 기준]
Given 설정 페이지에서
When Margin Room 설정 섹션을 볼 때
Then 현재 마진율과 변동성 기반 추천 타입이 표시된다
And 보수형/균형형/공격형 중 하나를 선택할 수 있다
And 선택 후 저장하면 이후 조언에 반영된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-03: 자동 광고에서 목표 ROAS 조정 가이드 받기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 자동 광고를 사용하는 셀러
I want to 목표 ROAS를 얼마로 설정해야 하는지 알고 싶다
So that 쿠팡 광고센터에서 바로 조정할 수 있다
[수락 기준]
Given Margin Room 대비 광고비가 과할 때
When 캠페인 카드를 펼치면
Then "목표 ROAS를 X%로 올리면" 조언이 표시된다
And 예상 순이익 변화 (+Y원)가 표시된다
And "쿠팡 광고센터에서 목표 ROAS 조정하기" 버튼이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-04: 수동 광고에서 입찰가 조정 가이드 받기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 수동 광고를 사용하는 셀러
I want to 입찰가를 얼마로 조정해야 하는지 알고 싶다
So that 구체적인 금액으로 조정할 수 있다
[수락 기준]
Given Margin Room 대비 CPC가 높을 때
When 캠페인 카드를 펼치면
Then "입찰가 X원 → Y원" 구체적 조언이 표시된다
And 예상 순이익 변화 (+Z원)가 표시된다
And "쿠팡 광고센터에서 입찰가 조정하기" 버튼이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-04-1: 영역별 순이익 분석 보기 ⭐ 신규 (2026-01-27)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 캠페인 전체 ROAS는 괜찮은데 어디서 새는지 모르는 셀러
I want to 검색/비검색/리타게팅 영역별 순이익을 보고 싶다
So that 문제 영역을 찾아서 집중 개선할 수 있다
[수락 기준]
Given 캠페인에 영역별 데이터가 있을 때
When 캠페인 카드를 펼치고 "영역별 분석"을 볼 때
Then 검색/비검색/리타게팅 각각의 "100원당 X원" 순이익이 표시된다
And 각 영역의 광고비 비중(%)이 표시된다
And 손해 영역이 있으면 해당 영역 우선 개선 조언이 표시된다
And 리타게팅은 "참고" 수준으로 표시된다 (셀러 컨트롤 제한적)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-05: 키워드별 순이익 분석 보기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 수동 광고로 키워드를 직접 관리하는 셀러
I want to 어떤 키워드가 돈을 벌고 어떤 키워드가 손해인지 알고 싶다
So that 키워드별로 입찰가를 조정하거나 제외할 수 있다
[수락 기준]
Given 캠페인에 키워드가 등록되어 있을 때
When 키워드 분석 섹션을 볼 때
Then 키워드별 "100원당 X원" 순이익이 표시된다
And 수익/본전/손해로 분류되어 표시된다
And 손해 키워드에는 "입찰가 낮추기" 또는 "제외 검토" 조언이 표시된다
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
US-06: 원가 미입력 시 안내 받기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
As a 아직 원가를 입력하지 않은 셀러
I want to 원가 입력이 필요하다는 안내를 받고 싶다
So that 순이익 번역 기능을 사용할 수 있다
[수락 기준]
Given 캠페인에 원가 데이터가 없을 때
When 캠페인 카드를 볼 때
Then ROAS만 표시되고 순이익 번역은 표시되지 않는다
And "원가를 입력하면 순이익을 계산할 수 있어요" 안내가 표시된다
And "원가 입력하기" 버튼이 표시된다사용자 시나리오
시나리오 1: ROAS 해석 못하는 초보 셀러
페르소나: 김셀러 (초보, 자동광고, ROAS 의미 모름)
1. 김셀러가 광고 진단 페이지 진입
2. 캠페인 A 카드에서 "ROAS 441%" 옆에 "100원당 12원 남음" 표시
3. 김셀러: "아, 100원 광고하면 12원 버는구나. 괜찮네!"
4. 캠페인 B는 "ROAS 180%" 옆에 "100원당 8원 손해" 표시 (빨간색)
5. 김셀러: "이건 손해구나. 뭘 해야 하지?"
6. 카드 펼치면: "목표 ROAS를 300% → 400%로 올리면 100원당 +5원 예상"
7. 김셀러: "그래, 올려봐야겠다"
8. [쿠팡 광고센터에서 목표 ROAS 조정하기 →] 클릭
결과: ROAS 몰라도 순이익 기반으로 판단하고 행동 가능
---
시나리오 2: Margin Room 설정 + 키워드 관리
페르소나: 박셀러 (중급, 수동광고, 키워드 20개 운영)
1. 박셀러가 설정 > Margin Room 설정 진입
2. "마진 변동성: ±8% (중간) → 균형형 추천" 확인
3. 균형형 선택, 저장
4. 캠페인 C 키워드 분석 진입
5. 키워드 20개 중:
- 🟢 수익: 8개 ("강아지 간식" 등)
- 🟡 본전: 7개 ("강아지 사료" 등)
- 🔴 손해: 5개 ("애견" 등)
6. 손해 키워드 5개에 "입찰가 180원 → 100원" 조언 표시
7. 박셀러: "이 키워드들 입찰가 낮춰야겠다"
8. [쿠팡 광고센터에서 키워드 관리하기 →] 클릭
결과: Margin Room 기반 맞춤 조언으로 키워드별 최적화 가능3. HOW: 플로우 & 화면
페이지 구조
[Surface Layer - 캠페인 카드 (순이익 번역 포함)]
┌───────────────────────────────────────────────────────────────┐
│ 🟢 캠페인 A │
│ │
│ ROAS 441% │
│ ──────────────── │
│ 💰 100원당 12원 남음 ← 순이익 번역 (L1) │
│ │
│ 광고비 ₩100,000 | 매출 ₩441,000 | 순이익 ₩31,000 │
│ │
│ [펼쳐보기 ▼] │
└───────────────────────────────────────────────────────────────┘
[펼쳐진 상태 - 행동 조언 포함]
┌───────────────────────────────────────────────────────────────┐
│ 🟡 캠페인 B │
│ │
│ ROAS 280% │
│ ──────────────── │
│ 💰 100원당 5원 남음 (거의 본전) ← 순이익 번역 (L1) │
│ │
│ 광고비 ₩200,000 | 매출 ₩560,000 | 순이익 ₩10,000 │
│ │
├───────────────────────────────────────────────────────────────┤
│ │
│ 💡 Margin Room(균형형) 기준으로 광고비가 과해요 ← 판단 (L2) │
│ │
│ 📋 추천: 목표 ROAS를 높여보세요 ← 행동 조언 (L3) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 현재 목표 ROAS: 300% │ │
│ │ ↓ │ │
│ │ 권장 목표 ROAS: 400% │ │
│ │ │ │
│ │ 예상 변화: │ │
│ │ • 100원당 순이익: 5원 → 18원 (+13원) ✨ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [쿠팡 광고센터에서 목표 ROAS 조정하기 →] │
│ │
│ [접기 ▲] │
└───────────────────────────────────────────────────────────────┘
[설정 - Margin Room]
┌───────────────────────────────────────────────────────────────┐
│ ⚙️ 설정 > Margin Room │
├───────────────────────────────────────────────────────────────┤
│ │
│ 💰 현재 평균 마진율: 32% │
│ 📊 최근 3개월 마진 변동성: ±8% (중간) │
│ │
│ 추천: 균형형 ✨ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ○ 보수형 (Conservative) │ │
│ │ 광고비 ≤ 순이익의 50% │ │
│ │ "안전하게, 확실한 이익만" │ │
│ │ │ │
│ │ ● 균형형 (Balanced) ← 추천 │ │
│ │ 광고비 ≤ 순이익의 70% │ │
│ │ "적당한 성장과 안전의 균형" │ │
│ │ │ │
│ │ ○ 공격형 (Aggressive) │ │
│ │ 광고비 ≤ 순이익의 90% │ │
│ │ "매출 성장 우선, 이익은 나중에" │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [설정 저장] │
└───────────────────────────────────────────────────────────────┘디자인 요청사항
| 항목 | 내용 |
|---|---|
| 톤앤매너 | 친근하고 쉬운 표현, "판단 대신" 느낌 |
| 컬러 | 순이익 양수=초록, 본전=노랑, 손해=빨강 |
| 숫자 | 큰 글씨로 "100원당 X원" 강조 |
| 참고 | 토스 금융 앱, 뱅크샐러드 |
4. EDGE: 예외 & 엣지 케이스
데이터 예외
| 상황 | 처리 방법 |
|---|---|
| 원가 미입력 | 순이익 번역 미표시, "원가 입력 필요" 안내 |
| 광고비 0원 | "광고 데이터 없음" 표시 |
| 마진율 음수 | "원가가 판매가보다 높아요" 경고 |
| 변동성 계산 불가 | 데이터 3개월 미만 시 "균형형" 기본 추천 |
계산 예외
| 상황 | 처리 방법 |
|---|---|
| 100원당 순이익 < -50원 | "-50원 이상 손해" 표시 (캡) |
| 예상 변화 계산 불가 | "예상 변화를 계산할 수 없어요" 표시 |
| 키워드 데이터 부족 | 클릭 10건 미만 시 분석 제외 |
사용자 예외
| 상황 | 처리 방법 |
|---|---|
| Margin Room 미설정 | 균형형(70%) 기본 적용 |
| 자동/수동 구분 불가 | 공통 조언만 표시 |
5. 성공 지표
5.1 지표 체계 개요
┌─────────────────────────────────────────────────────────────┐
│ Phase 2 순이익 번역 지표 체계 │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 내 판단] │
│ Primary: 조언 확인률 ≥ 30% AND 쿠팡 이동률 ≥ 40% │
│ Secondary: Margin Room 설정률 ≥ 50% │
├─────────────────────────────────────────────────────────────┤
│ [Sprint 이후 확인] │
│ Lagging: 조언 후 ROAS 개선율 ≥ 15% │
│ Ultimate: KR2 이탈율 ≤ 15% 기여 │
├─────────────────────────────────────────────────────────────┤
│ [Guard Rails] │
│ • "계산 틀림" CS ≤ 광고분석 CS의 5% │
│ • 원가 입력 안내 후 입력률 ≥ 20% │
│ • 광고분석 이탈률 기존 대비 20% 이상 증가 금지 │
└─────────────────────────────────────────────────────────────┘5.2 Sprint 내 판단 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Primary | 조언 확인률 | 조언 카드 펼침 유저 / 순이익 번역 노출 유저 | ≥ 30% |
| Primary | 쿠팡 이동률 | 쿠팡 링크 클릭 유저 / 조언 카드 펼침 유저 | ≥ 40% |
| Secondary | Margin Room 설정률 | 설정 완료 유저 / 순이익 번역 노출 유저 | ≥ 50% |
| Secondary | 복귀율 | 쿠팡 이동 후 세션 내 복귀 유저 / 쿠팡 이동 유저 | ≥ 50% |
5.3 Sprint 이후 확인 지표
| 계층 | 지표 | 산식 | 목표 |
|---|---|---|---|
| Lagging | ROAS 개선율 | 조언 후 7일 ROAS 개선 캠페인 / 조언 확인 캠페인 | ≥ 15% |
| Lagging | 100원당 순이익 개선 | 조언 후 7일 100원당 순이익 변화 | +5원 이상 |
| Ultimate | 이탈율 기여 | Phase 2 사용자 이탈율 vs 전체 이탈율 | KR2 연결 |
5.4 Guard Rails (위반 시 롤백 검토)
- "계산 틀림" CS가 광고분석 CS의 5% 초과하지 않을 것
- 원가 입력 안내 후 입력률이 20% 미만이면 UX 개선 필요
- 광고분석 페이지 이탈률이 기존 대비 20% 이상 증가하지 않을 것
- 키워드 분석 진입률이 기존 대비 30% 이상 감소하지 않을 것
5.5 성공 판단 기준
[Sprint 종료 시점]
✅ 성공: 조언 확인률 ≥ 30% AND 쿠팡 이동률 ≥ 40%
⚠️ 부분 성공: 둘 중 하나만 달성
❌ 실패: 둘 다 미달성 OR Guard Rails 위반
[Sprint +2주 후]
✅ 가설 검증: ROAS 개선율 ≥ 15%
→ "순이익 번역 조언이 실제 행동 변화를 유도했다"6. 이벤트 트래킹 명세
6.1 이벤트 목록
| 이벤트명 | 트리거 시점 | 우선순위 |
|---|---|---|
view_profit_translation | 순이익 번역 노출 | P0 |
expand_profit_advice | 조언 카드 펼침 | P0 |
click_action_advice | 추천 액션 클릭 | P0 |
click_coupang_link | 쿠팡 광고센터 링크 클릭 | P0 |
set_margin_room | Margin Room 설정 저장 | P0 |
view_keyword_analysis | 키워드 분석 진입 | P1 |
click_keyword_action | 키워드별 액션 클릭 | P1 |
view_cost_input_guide | 원가 입력 안내 노출 | P1 |
click_cost_input | 원가 입력하기 클릭 | P1 |
6.2 핵심 이벤트 상세
view_profit_translation
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "view_profit_translation",
params: {
campaign_id: "camp_12345",
profit_per_100: 12, // 100원당 순이익
profit_status: "profit", // profit | breakeven | loss
roas: 441,
end_roas: 350,
margin_rate: 32, // 마진율 (%)
ad_type: "auto", // auto | manual
margin_room_type: "balanced", // conservative | balanced | aggressive
is_demo: "N"
}
});expand_profit_advice
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "expand_profit_advice",
params: {
campaign_id: "camp_12345",
profit_per_100: 5,
profit_status: "breakeven",
advice_case: "P-C1-a", // 조언 케이스 코드
advice_type: "roas_up", // roas_up | roas_down | bidding_down | bidding_up | maintain | stop
current_target_roas: 300,
recommended_target_roas: 400,
expected_profit_change: 13, // 예상 100원당 변화
is_demo: "N"
}
});click_action_advice
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "click_action_advice",
params: {
campaign_id: "camp_12345",
advice_case: "P-C1-a",
advice_type: "roas_up",
action_code: "target_roas_adjust", // target_roas_adjust | bidding_adjust | keyword_manage | cost_input | page_check
current_value: "300%",
recommended_value: "400%",
expected_profit_change: 13,
is_demo: "N"
}
});click_coupang_link
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "click_coupang_link",
params: {
campaign_id: "camp_12345",
advice_case: "P-C1-a",
link_type: "target_roas", // target_roas | bidding | keyword
source: "profit_advice_card", // profit_advice_card | keyword_analysis
is_demo: "N"
}
});set_margin_room
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "set_margin_room",
params: {
margin_room_type: "balanced", // conservative | balanced | aggressive
previous_type: "aggressive", // 이전 설정 (첫 설정 시 null)
avg_margin_rate: 32, // 평균 마진율
margin_volatility: "medium", // low | medium | high
recommended_type: "balanced", // 시스템 추천 타입
is_recommended_selected: "Y", // 추천 타입 선택 여부
is_demo: "N"
}
});view_keyword_analysis
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "view_keyword_analysis",
params: {
campaign_id: "camp_12345",
total_keywords: 20,
profit_keywords: 8, // 🟢 수익 키워드 수
breakeven_keywords: 7, // 🟡 본전 키워드 수
loss_keywords: 5, // 🔴 손해 키워드 수
ad_type: "manual",
is_demo: "N"
}
});click_keyword_action
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "click_keyword_action",
params: {
campaign_id: "camp_12345",
keyword_id: "kw_67890",
keyword_name: "강아지 간식",
keyword_status: "loss", // profit | breakeven | loss
profit_per_100: -12,
action_type: "bidding_down", // bidding_down | bidding_up | exclude | maintain
current_bidding: 180,
recommended_bidding: 100,
is_demo: "N"
}
});view_cost_input_guide
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "view_cost_input_guide",
params: {
campaign_id: "camp_12345",
trigger_location: "campaign_card", // campaign_card | keyword_analysis
is_demo: "N"
}
});click_cost_input
javascript
dataLayer.push({
event: "ad_analysis",
event_name: "click_cost_input",
params: {
campaign_id: "camp_12345",
trigger_location: "campaign_card",
is_demo: "N"
}
});6.3 측정 타이밍
| 시점 | 확인 항목 |
|---|---|
| 릴리즈 D+3 | 이벤트 수집 정상 여부 |
| 릴리즈 D+7 | Primary 지표 초기값 (조언 확인률, 쿠팡 이동률) |
| 릴리즈 D+14 | 전체 KPI 1차 판정, Guard Rails 점검 |
| 릴리즈 D+21 | Lagging 지표 확인 (ROAS 개선율) |
7. 개발 범위 및 우선순위
7.1 P0 (필수, MVP)
| 항목 | 설명 | 담당 |
|---|---|---|
| 100원당 순이익 계산 API | 캠페인별 순이익 계산 로직 | BE |
| 순이익 번역 UI | "100원당 X원 남음" 표시 | FE |
| 조언 케이스 판정 로직 | 20개 케이스 분기 로직 | BE |
| 캠페인 조언 카드 | 타이틀/메시지/액션 표시 | FE |
| 쿠팡 광고센터 링크 | 목표 ROAS/입찰가 조정 링크 | FE |
| Margin Room 설정 UI | 보수형/균형형/공격형 선택 | FE |
| Margin Room API | 설정 저장/조회 | BE |
7.2 P1 (중요)
| 항목 | 설명 | 담당 |
|---|---|---|
| 키워드별 순이익 분석 | 키워드별 100원당 계산 | BE + FE |
| 키워드 조언 카드 | 키워드별 입찰가 조정 가이드 | FE |
| 마진 변동성 계산 | 3개월 마진 변동성 분석 | BE |
| 이벤트 트래킹 | DataLayer 이벤트 전송 | FE |
| 원가 미입력 안내 | 원가 입력 유도 UI | FE |
7.3 P2 (선택)
| 항목 | 설명 | 담당 |
|---|---|---|
| 셀러 타입 자동 분류 | 마진 변동성 기반 추천 | BE |
| 예상 변화 시뮬레이션 | 목표 ROAS/입찰가 변경 시 예상 순이익 | BE |
8. 의존성 & 제약 (기존 6번)
기술 의존성
| 의존 항목 | 상태 | 비고 |
|---|---|---|
| 원가 데이터 (Product 테이블) | ✅ 확인됨 | marginRate 사용 |
| 자동/수동 광고 구분 | ⏳ BE 확인 필요 | API 필요 |
| E-03 Surface Layer | E-03 완료 후 | UI 확장 |
제약 조건
- 원가 의존: 원가 미입력 시 핵심 기능 사용 불가
- 예측 한계: 목표 ROAS 변경 시 실제 결과는 다를 수 있음 (면책 필요)
- 키워드 데이터: 수동 광고만 키워드 분석 가능
9. 스토리 목록
Epic Spec 승인 후 분해
| Story ID | 제목 | 규모 | 우선순위 | 담당 | 상태 |
|---|---|---|---|---|---|
| E-04-S-01 | 순이익 번역 UI (100원당 X원) | M | P0 | FE | draft |
| E-04-S-02 | Margin Room 설정 UI/API | M | P0 | FE/BE | draft |
| E-04-S-03 | 캠페인 행동 조언 (자동 광고) | L | P0 | FE/BE | draft |
| E-04-S-04 | 캠페인 행동 조언 (수동 광고) | L | P0 | FE/BE | draft |
| E-04-S-05 | 키워드별 순이익 분석 | L | P1 | FE/BE | draft |
| E-04-S-06 | GA4 이벤트 트래킹 (9개 이벤트) | S | P1 | FE | draft |
Story Point 추정
| 규모 | Story | 합계 |
|---|---|---|
| L (3pt) | S-03, S-04, S-05 | 9 |
| M (2pt) | S-01, S-02 | 4 |
| S (1pt) | S-06 | 1 |
| 총합 | 14 SP |
의존성 그래프
[BE] 순이익 계산 API (S-03,S-04 공통)
│
┌────┴────┬────────────────┐
▼ ▼ ▼
[FE] S-01 [FE/BE] S-02 [FE/BE] S-05
번역UI MarginRoom 키워드분석
│ │
└────┬────┘
▼
[FE/BE] S-03, S-04
조언 케이스
│
▼
[FE] S-06 GA410. QA 체크리스트
기능 테스트
순이익 번역
- [ ] 100원당 순이익 양수 → 초록색 "X원 남음" 표시
- [ ] 100원당 순이익 0~10 → 노란색 "거의 본전" 표시
- [ ] 100원당 순이익 음수 → 빨간색 "X원 손해" 표시
- [ ] 원가 미입력 시 → "원가 입력 필요" 안내 표시
- [ ] 광고비 0원 시 → "광고 데이터 없음" 표시
Margin Room 설정
- [ ] 보수형/균형형/공격형 3종 선택 가능
- [ ] 현재 마진율, 변동성 표시
- [ ] 추천 타입 하이라이트
- [ ] 설정 저장 후 유지
- [ ] 미설정 시 균형형(70%) 기본 적용
자동 광고 조언
- [ ] 목표 ROAS 상향 조언 표시
- [ ] 현재 → 권장 목표 ROAS 표시
- [ ] 예상 100원당 순이익 변화 표시
- [ ] "쿠팡 광고센터에서 조정하기" 링크 동작
수동 광고 조언
- [ ] 입찰가 하향 조언 표시
- [ ] 현재 → 권장 입찰가 표시
- [ ] 예상 100원당 순이익 변화 표시
- [ ] "쿠팡 광고센터에서 조정하기" 링크 동작
키워드 분석
- [ ] 키워드별 100원당 순이익 표시
- [ ] 🟢/🟡/🔴 상태별 분류
- [ ] 손해 키워드에 "입찰가 낮추기/제외" 조언
- [ ] 수익 키워드에 "유지" 조언
- [ ] 요약 (수익/조정필요/제외검토 개수)
영역별 순이익 분석 ⭐ 신규 (2026-01-27)
- [ ] 검색/비검색/리타게팅 영역별 데이터 존재 확인
- [ ] 영역별 "100원당 X원" 순이익 표시
- [ ] 영역별 광고비 비중(%) 표시
- [ ] 영역별 🟢/🟡/🔴 상태 표시
- [ ] 손해 영역 우선 개선 조언 표시
- [ ] 리타게팅은 "참고" 수준 표시 (셀러 컨트롤 제한적)
- [ ] 영역별 기여도 분석 (어느 영역이 전체 순이익에 기여/손해)
- [ ] 영역별 조언 케이스 판정 (A-S1~3, A-N1~3, A-R1~2)
계산 로직 테스트
- [ ] 100원당 순이익 = ((전환매출 - 원가 - 광고비) / 광고비) × 100
- [x]
VAT 포함 광고비 계산 (×1.1)→ ETL 시 VAT 포함 완료 - [ ] 마진율 = (판매가 - 원가) / 판매가 × 100
- [ ] End ROAS = 100 / 마진율 × 100
- [ ] 허용 CPC = (평균 주문금액 × CVR) / BEP ROAS × Margin Room%
조언 케이스 로직 테스트 (v4.0 MECE 기준)
🔴 손해 케이스 (8개)
- [ ] P-1a: 마진 < 10% → 광고 중단 검토
- [ ] P-1b: 10% ≤ 마진 < 15% → 판매가 인상 검토
- [ ] P-2a: 마진 ≥ 15% + 자동 + ROAS < BEP×0.8 → 목표 ROAS 높이기
- [ ] P-2b: 마진 ≥ 15% + 수동 + 기타 → 입찰가 낮추기
- [ ] P-3a: 마진 ≥ 15% + 자동 + ROAS ≥ BEP×0.8 → 목표 ROAS 조금 높이기
- [ ] P-4a: 마진 ≥ 15% + 수동 + CPC ≥ 허용×1.5 → 입찰가 낮추기
- [ ] P-4b: 마진 ≥ 15% + 수동 + 허용×1.3 ≤ CPC < 허용×1.5 → 입찰가 조금 낮추기
- [ ] P-5: 마진 ≥ 15% + 수동 + CVR < 3% + 클릭 ≥ 50 → 상세페이지 점검
🟡 본전 케이스 (5개)
- [ ] P-6a: 광고비 > MarginRoom + 자동 → 목표 ROAS 높이기
- [ ] P-6b: 광고비 > MarginRoom + 수동 → 입찰가 낮추기
- [ ] P-7: 광고비 ≤ MarginRoom + 마진 < 15% → 현 수준 유지
- [ ] P-8a: 광고비 ≤ MarginRoom + 마진 ≥ 15% + 자동 → 목표 ROAS 조금 높이기
- [ ] P-8b: 광고비 ≤ MarginRoom + 마진 ≥ 15% + 수동 → 입찰가 조금 낮추기
🟢 건강 케이스 (5개)
- [ ] P-9a-자동: 100원당 ≥ 30 + 마진 ≥ 30% + 자동 → 목표 ROAS 낮추기
- [ ] P-9a-수동: 100원당 ≥ 30 + 마진 ≥ 30% + 수동 → 입찰가 올리기
- [ ] P-9b-자동: 100원당 ≥ 30 + 20% ≤ 마진 < 30% + 자동 → 목표 ROAS 조금 낮추기
- [ ] P-9b-수동: 100원당 ≥ 30 + 20% ≤ 마진 < 30% + 수동 → 입찰가 조금 올리기
- [ ] P-9c: 100원당 ≥ 30 + 마진 < 20% → 현 수준 유지
⚪ 예외 케이스 (1개)
- [ ] P-E1: 원가 = NULL → 원가 입력 안내
이벤트 트래킹 테스트
- [ ] view_profit_translation 이벤트 발생
- [ ] expand_profit_advice 이벤트 발생
- [ ] click_action_advice 파라미터 정확성
- [ ] click_coupang_link 이벤트 발생
- [ ] set_margin_room 이벤트 발생
- [ ] view_keyword_analysis 이벤트 발생
- [ ] GA4 DebugView에서 확인
엣지 케이스 테스트
- [ ] 마진율 음수 → "원가가 판매가보다 높아요" 경고
- [ ] 100원당 순이익 < -50원 → "-50원 이상 손해" 표시 (캡)
- [ ] 데이터 3개월 미만 → 변동성 계산 불가, 균형형 추천
- [ ] 키워드 클릭 10건 미만 → 분석 제외
- [ ] 자동/수동 구분 불가 → 공통 조언만 표시
체크리스트
PO 승인 전 체크
- [x] 문제 정의가 명확한가?
- [x] 비즈니스 로직이 구체적인가? (계산식, 조건 등)
- [x] 와이어프레임/플로우가 있는가?
- [x] 엣지 케이스가 정의되었는가?
- [x] 성공 지표가 측정 가능한가?
- [ ] 기술 의존성이 확인되었는가? (자동/수동 구분 API)
미결 사항
| 항목 | 상태 | 담당 |
|---|---|---|
| 자동/수동 광고 구분 API | ✅ DB 컬럼 존재 확인됨 | 하록 |
| 예측 정확도 면책 문구 | ✅ 불필요 확인 | 윤재 |
| 디자인 요청 | ⏳ 스프린트 시작 전 전달 예정 | 윤재 |
승인
| 항목 | 확인 |
|---|---|
| PO 승인 | ✅ |
| 승인일 | 2026-01-20 |
| 비고 | 자동/수동 구분 컬럼 DB에 존재 확인됨, 면책 문구 불필요 |
참고 자료
전략 문서
- 전략 문서:
.context/global/strategy.md(Phase 2 상세 설계 섹션) - Product Roadmap: Notion
- ROAS → 순이익 가설: One Pager
번역 레벨 참고
| Level | 이름 | 예시 | Phase 2 목표 |
|---|---|---|---|
| 1 | 정보 번역 | "100원당 12원 남음" | ✅ |
| 2 | 판단 번역 | "광고비가 과해요" | ✅ |
| 3 | 행동 번역 | "목표 ROAS 400%로" | ✅ 목표 |
| 4 | 결과 번역 | "월 80만원 예상" | Phase 3+ |
변경 이력
| 버전 | 날짜 | 내용 |
|---|---|---|
| v2.6 | 2026-01-27 | 영역별 순이익 번역 로직 추가: 로직 2-1 (영역별 계산식), 로직 7-1 (영역별 조언 A-S/A-N/A-R), US-04-1 (영역별 분석 스토리), QA 체크리스트 |
| v2.5 | 2026-01-27 | 허용 CPC 계산식 수정: (1-MarginRoom%) → MarginRoom% (공격형일수록 높은 CPC 허용) |
| v2.4 | 2026-01-27 | MECE Decision Tree v4.0 정합성 확보: 케이스 매핑표/QA 체크리스트 동기화 (손해 8개, 본전 5개, 건강 5개, 예외 1개 = 총 19개) |
| v2.3 | 2026-01-26 | VAT 계산 제거: ETL 시 VAT 포함 완료로 ×1.1 불필요 |
| v2.2 | 2026-01-26 | 데이터 제약 수정: 광고 유형(adType) 사용 가능으로 변경, 플레이스홀더 계산식 추가 |
| v2.1 | 2026-01-26 | 1일치 정책 조정: P-E1 삭제, P-2a→P-2a-자동/P-2a-수동 분리 |
| v2.0 | 2026-01-23 | Notion PRD 수준으로 상세화: 조언 케이스 테이블(20개), 판정 플로우, 이벤트 트래킹 JS 코드, 성공 지표 계층 구조, QA 체크리스트, 개발 범위 우선순위 추가 |
| v1.0 | 2026-01-19 | 초안 작성 |
작성일: 2026-01-19최종 수정: 2026-01-27 (영역별 순이익 번역 로직 추가)
