MEASUREMENT PLAN · v2.0 핵심판

선주 모바일 GA4 측정 설계서

핵심만 남긴 판입니다. 이벤트 34개 → 10개.
“이 이벤트가 없으면 어떤 의사결정을 못 하는가”에 답이 없으면 뺐습니다.

이벤트 10개화면 7개커스텀 정의 8개공통 파라미터 4개웹뷰 53% 대응

선주 모바일 GA4 측정 설계서 (핵심판)


1. 무엇을 왜 재는가

선주앱은 마케팅 퍼널이 아니라 공급자의 운영 도구입니다. 그래서 딱 세 가지만 봅니다.

#질문이 질문에 답하는 이벤트
1선주가 돈을 버는 흐름이 도는가owner_confirm
2선주가 돈을 잃는 지점은 어디인가owner_cancel · owner_close_now
3신규 선주가 첫 매출까지 오는가owner_product_createowner_confirm

나머지(조황·공지·명단 열람 등)는 화면 조회수(screen_view)로 충분합니다. 이벤트로 따로 만들지 않습니다.


2. 규칙 4개

  1. 선주앱 커스텀 이벤트는 전부 owner_ 프리픽스. 표준 이벤트는 프리픽스를 못 붙이므로 user_property af_app_role=owner 로 구분한다.
  2. 화면 조회는 screen_view 하나로 통일한다. page_view 는 쓰지 않는다.
  3. 웹뷰(비중 53%)에 gtag/GTM을 직접 심지 않는다. AF.track() 브릿지 → 네이티브 SDK 단일 경로. 웹 스트림의 '페이지 변경 기반 이벤트'는 OFF.
  4. 선주앱에서 purchase / booking_purchase 를 절대 보내지 않는다. 손님앱과 매출이 이중 집계된다.

3. 공통 파라미터 4개 · user_property 3개

모든 이벤트에 자동으로 실립니다.

파라미터값 예시왜 필요한가
screen_idOWN_HOME어느 화면에서 벌어진 일인지
view_layernative / webview웹뷰 53%가 문제인지 아닌지 가르는 축
entry_fromtab / push / deeplink푸시가 실제로 선주를 부르는지
app_version2.14.0배포 전후 비교
user_property왜 필요한가
af_app_roleowner / captain손님앱과 섞이지 않게
owner_ship_count_band1 / 2_3 / 4_9 / 10p1척 선주와 다척 선주는 행동이 다름
owner_tenure_bandd0_7 / d8_30 / d31_90 / d90p신규 온보딩 분석의 기준축
선박ID·업체ID·권한·요금제·인증상태는 일단 뺐습니다. 지금 그 값으로 내릴 결정이 없습니다. 필요해지면 7장 보류 목록에서 꺼내 씁니다.

4. 화면 — screen_view (7개)

screen_view 이벤트 하나에 screen_id 파라미터만 바꿔 넣습니다.

screen_id화면
OWN_HOME홈 (확정 대기)
OWN_PROD_DAILY상품관리 · 일자별
OWN_PROD_MASTER상품관리 · 마스터
OWN_PROD_CREATE상품 등록
OWN_RSV_LIST예약자 명단
OWN_SETTLE정산관리
OWN_FISH조황관리

바텀시트·토스트·탭 전환에는 screen_view 를 보내지 않습니다(예약자 명단만 예외 — 체류가 길어 화면으로 취급).


5. 이벤트 10개 (전부)

#이벤트시점파라미터이걸로 무엇을 아는가
1owner_confirm예약 확정 완료count int · pax int · hours_since_payment number핵심 전환. 확정까지 몇 시간 걸리는지
2owner_cancel예약 취소 완료cancel_reason · count int · refund_amount number · days_to_departure int손실액과 사유. 기상인지 오버부킹인지
3owner_product_create상품 등록 완료create_type daily/master · is_first_product 1/0온보딩 첫 관문 통과
4owner_close_now즉시마감 실행fill_rate number 0.64빈 배로 나가는 비율. 마감 시점 소진율
5owner_seat_adjust남은좌석 저장before_seat int · after_seat int좌석을 늘리는지 줄이는지
6owner_bulk_edit일괄수정 저장date_count int · changed_fields seat,close일괄수정이 실제로 쓰이는지
7owner_manual_add예약자 직접 추가pax int앱 밖(전화) 예약 비중
8owner_call_tap예약자 번호 탭 → 전화number_type safe/direct · is_expired 1/0안심번호가 실제로 작동하는지
9owner_settlement_excel정산 엑셀 다운로드month정산을 앱에서 끝내는지, 밖으로 빼는지
10owner_friction비활성 버튼 클릭 · 유효성 오류 · 권한 차단 · API 오류friction_type · element · error_code(선택)어디서 막히는지 — 이벤트 폭증 없이 전 화면 커버

왜 이 10개인가


6. enum — cancel_reason (6종 · 기획 확정)

화면 표기전송 값손님 알림톡
오버부킹overbooking"예약 착오"로 치환
물때·조황부진poor_catch"조황 상황"으로 치환
최소인원 미달min_pax_unmet그대로
기상 악화bad_weather그대로
정비일maintenance그대로
휴무일holiday그대로

friction_type : disabled_click · validation_error · permission_denied · api_error

값에 한글 금지 — 탐색분석 정규식·BigQuery·Looker에서 깨집니다.


7. 커스텀 정의 등록 (8개)

표시 이름범위파라미터
선주_화면ID이벤트screen_id
선주_렌더레이어이벤트view_layer
선주_진입경로이벤트entry_from
선주_취소사유이벤트cancel_reason
선주_마찰유형이벤트friction_type
선주_역할사용자af_app_role
선주_선박수사용자owner_ship_count_band
선주_가입경과사용자owner_tenure_band

맞춤 측정항목 2개: 선주_환불액(refund_amount, 통화) · 선주_확정소요시간(hours_since_payment, 표준)

주요 이벤트(전환) 표시: owner_confirm · owner_product_create 2개만.


8. GA4 콘솔 설정 (7단계)

  1. analytics.google.com/?authuser=1hiseo@aboutfishing.kr 로 속성 aboutfishing-product(295704822) 진입
  2. 관리 → 데이터 스트림 → 선주앱 전용 앱 스트림 생성 (손님앱 스트림에 얹지 않는다)
  3. 레거시 웹뷰가 있으면 웹 스트림 추가 후 '페이지 변경 기반 이벤트' OFF
  4. 데이터 보관 기간 14개월로 변경 (기본 2개월)
  5. 맞춤 정의 → 7장의 이벤트 5개 · 사용자 3개 · 측정항목 2개 등록
  6. 이벤트 → 주요 이벤트 2개 표시
  7. DebugView 검증 (10장) → 릴리스 48시간 뒤 (other) 행 발생 여부 점검

9. 구현 순서

1단계 — 토대 (이것만 되면 절반은 끝)

2단계 — 돈 이벤트

3단계 — 나머지

// analytics/events.ts
export const EV = {
  CONFIRM : 'owner_confirm',
  CANCEL  : 'owner_cancel',
  FRICTION: 'owner_friction',
} as const;

export const CANCEL_REASON = {
  OVERBOOKING: 'overbooking',
  POOR_CATCH : 'poor_catch',
  MIN_PAX    : 'min_pax_unmet',
  BAD_WEATHER: 'bad_weather',
  MAINTENANCE: 'maintenance',
  HOLIDAY    : 'holiday',
} as const;

10. QA 체크 5개

  1. 공통 파라미터 4개가 모든 이벤트에 붙는가
  2. 웹뷰 화면 이동 시 screen_view1회만 찍히는가 (2회면 향상된 측정 OFF 누락)
  3. cancel_reason영문 슬러그로 오는가 (한글이면 반려)
  4. 선주앱에서 purchase / booking_purchase발생하지 않는가
  5. 파라미터에 이름·전화번호·안심번호가 섞이지 않았는가

11. 지금은 뺀 것 (보류 목록)

필요해지면 이 순서로 꺼내 씁니다. 지금 넣지 않는 이유가 각각 있습니다.

뺀 것뺀 이유다시 넣을 조건
확정/취소 시작·중단 이벤트완료 이벤트와 화면 조회수로 이탈을 추정할 수 있음확정 전환율이 낮게 나와 원인을 파야 할 때
조황·공지 이벤트screen_view 로 사용 여부는 이미 보임조황 발행이 예약에 미치는 영향을 증명해야 할 때
노출 토글·판매중지·명단 탭 전환운영 세부 동작이라 의사결정과 거리가 멂해당 기능 개편을 검토할 때
선박ID·업체ID·권한·요금제지금 그 축으로 내릴 결정이 없음다척 선주 전용 기능을 만들 때
ui_width_bucket(320/344/360)레이아웃은 QA로 잡는 문제폭 관련 이탈이 의심될 때
사용법 영상 진행률영상 진입 UI가 아직 미확정진입 UI 확정 후
첫 예약 수신선주앱 액션이 아니라 클라이언트에서 측정 불가서버에서 Measurement Protocol 로 쏠 때

부록. 관련 문서