이벤트는 일어난 일이 아니라 당신이 내린 결정이다
모든 제품은 일어난 일 자체는 무한히 쏟아냅니다. 클릭, 스크롤, 호버, 경로 변경. 이벤트란 그중에서 이름을 붙일 가치가 있다고 당신이 결정한 작은 부분집합입니다. 무언가 행동으로 옮길 근거를 주기 때문에 이름을 붙이는 것이며, 계측 구현이 아니라 바로 이 결정이 일의 본체입니다.
실무적 결론은, 트래킹 플랜이 엔지니어링 문서이기 전에 제품 문서라는 것입니다. 어떤 이벤트가 발생하든 말든 당신의 행동이 달라지지 않는다면, 그 이벤트는 아직 존재할 필요가 없습니다.
인터페이스가 아니라 결과를 기준으로 이름을 붙인다
clicked_blue_button은 디자인이 개편을 배포하는 순간 더 이상 참이 아닙니다. report_exported는 살아남습니다. 사용자가 무엇을 만졌는지가 아니라 무엇을 이뤘는지를 가리키기 때문입니다.
규칙을 하나 정하고 지키세요. 객체 먼저, 동작은 과거형, 소문자와 밑줄 — invite_sent, project_created, payment_failed. 어떤 규칙을 골랐는지보다 일관성이 더 중요합니다. 두 분기만 지나면 이벤트 목록을 검색 불가능하게 만드는 것은 흔들린 명명이기 때문입니다.
이벤트는 200개가 아니라 10~20개
흔한 실패는 나중에 쓸모 있을지 모른다는 논리로 전부 추적하는 것입니다. 그렇게 얻는 것은 아무도 헤아릴 수 없는 목록과, 거의 같은 뜻인 이벤트 세 개와, 무엇이 기준인지에 대한 합의의 부재입니다.
이미 정기 리뷰에서 던지는 질문 — 사람들이 설정을 끝내는가, 다시 오는가, 어디서 포기하는가 — 에서 출발해 그 질문에 답하는 것만 계측하세요. 한 화면에 들어오는 트래킹 플랜은 유지됩니다. 스프레드시트를 채우는 플랜은 유지되지 않습니다.
세부는 속성이, 동사는 이벤트가 담는다
변형마다 이벤트를 따로 만들고 싶은 충동을 참으세요. report_exported_csv, report_exported_pdf, report_exported_xlsx는 format 속성을 가진 하나의 이벤트 report_exported여야 합니다. 판단 기준은 단순합니다. 언젠가 숫자를 합쳐서 보고 싶을 것 같다면, 그것은 속성을 가진 하나의 이벤트입니다.
속성 값은 카디널리티를 낮게, 안정적으로 유지하세요. 원본 URL이나 자유 입력 문자열을 담은 속성은 그룹화할 수 없는 열이고, 그러면 데이터가 아니라 장식이 됩니다.
자동 수집과 명시적 이벤트는 서로 다른 질문에 답한다
자동 수집은 계획을 요구하지 않고 화면 상호작용을 기록합니다. 초기에는 정말 유용합니다. 아직 떠올리지 못한 질문의 데이터가 이미 존재하고, 확인할 때마다 배포를 거칠 필요가 없어지기 때문입니다. 다만 당신의 도메인을 알지는 못합니다. 클릭 기록 어디에도 구독이 상위 플랜으로 변경되었다는 사실은 없습니다.
현실적인 구성은 둘 다 쓰는 것입니다. 탐색과 아직 던지지 않은 질문을 위한 자동 수집, 그리고 보고하고 목표를 세우는 수치를 위한, 잘 이름 붙인 소수의 명시적 도메인 이벤트.
이번 주에 어디서 시작할까
제품에서 가장 중요한 다섯 순간을 적고, 위 규칙으로 이름을 붙이고, 그것만 계측하세요. 그리고 일주일 뒤에 각각이 기대한 시점에 발생하는지, 속성이 채워져 있는지 확인하세요. 아무도 지나지 않는 코드 경로에서 발생하는 이벤트는 이벤트가 없는 것보다 나쁩니다. 신뢰받을 것이기 때문입니다.
더 추가하기 전에 이미 보내고 있는 이벤트가 어떻게 동작하는지 보고 싶다면, PulsePanda의 이벤트 추적이 모든 이벤트와 그 볼륨, 속성을 한곳에 보여 주고, 같은 데이터를 그대로 퍼널과 경로로 흘려보냅니다.