Beta DB · Behavioral Event Audit

Lead 행동 이벤트 분석

베타 DB 에서 추출 가능한 행동 이벤트를 5계층 / 약 30종 트리거로 정리. 워크플로우 빌더의 분기 트리거 enum 정의 근거 문서.

TL;DR

핵심 SSOT 는 email_events(1.5M, raw 로그) + emails(769K, 상태머신) + email_replies(2.8K, AI 분류) 3 테이블 join. 답장은 sentiment / intent / reply_category 3축으로 동시 라벨링되어 drift 위험 — 워크플로우 분기는 reply_category 단일 SSOT 권장. engagement_event 0건, unsubscribe_events 25건으로 사실상 미사용.

데이터 규모

분기 설계 시 인덱스 / 쿼리 전략 판단의 출발점.

1.51M
email_events
769K
emails
1.66M
sequence_step_executions
2,815
email_replies
25
unsubscribe_events
0
engagement_event

01발송 단계 — 부정 시그널

사람이 보기 전에 끝난 케이스. 시퀀스 즉시 제어가 필요한 분기.

트리거SSOT분기 예시
bounce (hard)email_events.event_type='bounce' + bounce_type, bounce_reasonsuppression + 시퀀스 중단
bounce (soft)bounce_type='soft'retry 1~2회 후 중단
droppedevent_type='dropped'주소 정정 요청 / 다른 contact fallback
deferredevent_type='deferred' (30일 1.6K)도메인 throttle → 발송 간격 조정
spam_reportevent_type='spam_report' (30일 6건)영구 suppression + reputation 알림
unsubscribeemails.unsubscribed_at영구 suppression

02도달 후 무행동 — Cold

메일은 들어갔지만 반응이 없는 상태. 카피 / 발송 시간 가설 검증 분기.

트리거쿼리 패턴분기
delivered & !opened (N일)delivered_at < now()-Nd AND opened_at IS NULL제목 / 첫문장 angle 변경
누적 미오픈 (시퀀스)step N개 연속 opened_at IS NULL시퀀스 종료 / contact 교체

03약한 관여 — Open

관심은 있으나 행동 없음. Apple MPP 봇 오픈 필터링이 정확도 핵심.

트리거필드분기
opened & !clickedopened_at IS NOT NULL AND clicked_at IS NULLCTA 강화 follow-up
다중 openopen_count > 3"검토 중" 신호 → 가속 / personal note
봇 오픈 제외email_events.possibly_bot=true 필터Apple MPP / Gmail proxy 제외 (필수)
open 후 N시간 무행동opened_at + 'Nh' < now() AND clicked_at IS NULL짧은 reminder
user_agent / 시간대email_events.user_agent, timestamp모바일·데스크탑 / 아침·저녁 발송 분기
주의 — possibly_bot=false 를 open 트리거의 default WHERE 절에 박지 않으면 30~50% 오탐. Apple Mail Privacy Protection 이 발송 즉시 open 을 찍습니다.

04강한 관여 — Click / Brochure

URL 별 분기가 가능하므로 가장 정밀한 의도 추출 가능.

트리거필드분기
any clickclicked_at IS NOT NULL (30일 16K)즉시 follow-up
URL 별 clickemail_events.url + event_type='click'가격 → 견적 / 데모 → 일정 제안
카탈로그 열람event_type='brochure_view' · brochure_view_count > 0강한 구매 의도 → 영업 handoff
다중 clickclick_count > 1비교 단계 → 차별점 어필

05답장 — AI 분류 3축 (핵심)

email_replies 가 같은 답장을 3개의 다른 분류 체계로 동시 라벨링합니다. drift 위험.

분류 축별 분포 (전체 2,815건)

값 · 분포활용
sentiment enum neutral 1,759 · interested 478 · null 316 · positive 136 · not_interested 109 · negative 17 톤 기반 분기
intent string neutral 1,074 · out_of_office 690 · positive_interest 277 · question 195 · not_interested 121 · meeting_request 119 · objection 25 의도 기반 액션
reply_category 권장 SSOT POSITIVE / NEGATIVE / AUTO_REPLY / IRRELEVANT / INFO_REQUEST 라우팅
is_auto_reply bool true 81 / false 2,734 자동응답 명시 flag
nudge_step int 시퀀스 몇번째에 답장 왔는지 후속 step 스킵 결정
customer_replied_at · cs_handoff_at timestamp 2종 응답 속도 / CS 인계 시점
ai_summary 답장 1~2줄 요약 text LLM 분기 + 사용자 노출

분기 매핑 추천

intent=meeting_request

일정 제안

캘린더 링크 자동 발송 + 시퀀스 정지.

intent=positive_interest · category=POSITIVE

긍정 — CS 인계

영업 handoff + 시퀀스 정지.

intent=question · category=INFO_REQUEST

질문

AI 답장 초안 자동 생성 후 검토 대기.

intent=out_of_office · is_auto_reply=true

자동응답 (부재중)

시퀀스 일시 정지. ai_summary 에서 복귀일 파싱 후 재개.

intent=objection

반박 / 우려

반박 전용 분기 (전담 메시지 템플릿).

intent=not_interested · sentiment=negative

거절

suppression + 시퀀스 종료.

category=IRRELEVANT

무관

회신처 오류 등 — 무시.

06시퀀스 컨텍스트 (분기 변수 결합)

필드용도
sequence_step_executions.status (pending · sent · delivered · failed · skipped · deferred)step 단위 분기
assigned_variantA/B variant 분기 (다음 step 도 같은 variant 유지)
scheduled_at vs executed_at발송 지연 감지

07정성적 한계 (분기 만들 때 주의)

08추천 다음 액션

  1. 워크플로우 빌더 트리거 enum 을 5계층(발송실패 · cold · open · click · reply 5분류 · unsub)으로 1차 정의
  2. reply_category 를 분기용 SSOT 로 결정하고 sentiment·intent 는 보조 표시만 (drift 봉합)
  3. possibly_bot=false 를 open 트리거 default WHERE 절에 박아두기
  4. OOO 복귀일 파서를 별도 worker 로 분리해 email_repliesoof_return_at 컬럼 추가 검토