brunch

You can make anything
by writing

C.S.Lewis

by bom Aug 29. 2022

앰플리튜드로 DDUX하기_이벤트와 프로퍼티 설정

이벤트, 유저프로퍼티, 이벤트 프로퍼티 설정


앰플리튜드에서 이벤트는 유저가 프로덕트내에서 할 수 있는 개별적이고 구별되는 행동(게임을 시작한다, 게임을 끝낸다, 튜토리얼을 본다 등) 또는 유저와 관련된 액션들을 말한다.(푸쉬알람을 받았다, 앱내에서 알림이을 받았다 등)


앰플리튜드에서는 이벤트를 기준으로 데이터를 수집하기 때문에 어떤 이벤트를 추적할 것인지를 설정하는 것이 중요하다. 그리고 우리는 어떤 이벤트를 추적할 것인가를 정하기에 앞서 어떤 카테고리로 이벤트를 구성해야 하는지를 생각해야 한다.


game이라는 카테고리 내에 play_game 이벤트를 생성했다.



우리 프로덕트에서 어떤 이벤트가 중요하고 User Journey가 어떻게 이루어져야 프로덕트 골(goal)이 달성하는지를 이해한다면 카테고리를 정의할 수 있다. 이러한 카테고리 안에 프로덕트의 주요 이벤트들이 하위로 들어가게 된다.





1) 이벤트 우선순위 정하기


이벤트의 카테고리를 설정했으면 드릴다운으로 각각의 이벤트를 카테고리(그룹) 안에 넣으면 된다.

프로덕트를 사용하며 유저는 수많은 액션을 한다. 하지만 매번 강조하는 것처럼 우리는 모든 액션, 이벤트를 추적할 필요가 없다.

앰플리튜드에서는 처음 이벤트를 생성할 때 20 ~ 30개 내로 생성하기를 추천한다. 처음에 이벤트를 적게 설정해둘 수록 프로덕트 내에서 중요한 것들에 더 집중하고 트래킹할 수 있기 때문이다. 그러나 너무 20,30이라는 숫자에 집착할 필요는 없다. 프로덕트에서 중요한 경로들이 많다면 이 부분들은 매우 상세하게 설정하여 분석해야 한다.(구매흐름, 온보딩 흐름 등) 우리에게 중요한 것은 주요 이벤트를 놓치지 않고 추적하는 것이기 때문이다.


따라서 우선순위 이벤트를 설정하는 것이 중요한데, 이 때 우리가 어떤 데이터를 얻고자 하는가를 정리하면 쉽게 이벤트를 추려낼 수 있다.


예를 들어서 

일부 사용자가 온보딩을 완료하지 않는 이유는?

얼마나 많은 유저가 유료 사용자로 전환하는가?

사용자가 이벤트 A를 수행하는 횟수와 이벤트 B를 수행하는 횟수는?

앱을 설치한 후 유저가 가장 많이 하는 것은? 

어떤 유저 그룹이 B기능에 참여하는지? 

등을 설정해두면 어떠한 이벤트들을 설정해야 할지 생각할 수 있다.


우리가 주요하게 얻고자 하는 데이터가 무엇이고 이를 위해 어떤 이벤트들을 설정해야 하는지를 생각하면 이벤트별 우선순위를 정하여 설정할 수 있다.

이렇게 초기 이벤트를 잘 설정해두면 추후 부가적인 이벤트를 설정할 때 시간을 절약할 수 있으며 일관성있게 데이터 텍사노미를 구성할 수 있다.




2) 이벤트 네이밍 규칙 Event Naming Rules


명확하고 일관성있는 네이밍은 모든 이벤트 텍사노미와 데이터를 운용하는데 있어서 중요하다.

명확한 이벤트 네임은 설명적이어야 하고 무엇이 발생했는지를 한 번에 알 수 있도록 해야 한다.

네이밍을 하는데 있어 일관성이 있다는 것은 모든 이벤트가 같은 네임 규정을 따르고 있다는 것을 말하며 만약 통일되지 않는 네이밍 규칙을 갖고 있다면 이벤트 관리가 어렵고 여러 팀원들이 데이터를 본다고 했을 때 오해의 소지가 생길 수 있거나 분석하기가 어려워진다. 


앰플리튜드는 아래와 같은 가이드라인을 제공한다


1) all lowercase 모두 소문자로 표기

2) present-tense verbs 현재형으로 작성

3) verb+noun or noun+verb 동사+명사 또는 명사+동사 형태로 작성


예를 들어

1) submit shipping address

2) check id

이런 식으로 작성할 수 있다.


카멜방식이나 스네이크 방식을 사용해도 되며 이는 각 팀에서 합의한 대로 진행하면 된다. 예로 우리팀은 스네이크 방식, 현재형, 명사+동사 형태로 이벤트 명을 설정하기로 하였다.

예)

connectwallet_complete

home_view



앰플리튜드에서 이벤트 네이밍 규칙을 정의할 수 있다.



그리고 이러한 이벤트들은 위에서 이야기하였듯 카테고리화하여 정리한다.

아래와 같은 이벤트가 있다고 해보자


product_buy

product_sell

product_view

cart_view

cart_empty

cart_get


이런 이벤트들이 있을때 각각의 이벤트들을 공통의 특성으로 카테고리화(product, cart)하여 묶으면 데이터 차트를 만들때나 정확한 이름을 몰라 이벤트를 검색할 때 용이하다. 


또한 한번에 어떤 이벤트인지를 알 수 있게 하기 위해 장황하게 이벤트 네이밍을 설정하는 것은 좋지 않다. 

간결하고 명확한 이벤트 네임은 데이터를 읽기 쉽고 이해하기 좋게 만들어 준다. 

예를 들어서

'game:completed game:level 1' 이라는 이벤트 네임이 있다고 하자.


이 이벤트 네임은

1. Event category : Event

2. Event : complete game

3. Event Property: level1로 

재구성할 수 있다.


이렇게 되면 이벤트 네임은 complete game으로 단순화 되며, 이렇게 설정해놓아도 동일한 데이터를 받을 수 있다.




3) 유저 프로퍼티 User Property


유저프로퍼티는 프로덕트를 사용하는 유저들의 특성을 나타낸다. 앰플리튜드에서는 이미 제공하는 기본적인 유저프로퍼티가 있고 또 관리자가 스스로 유저 프로퍼티를 설정할 수 있다. 이렇게 직접 만든 유저프로퍼티를 custom user properties라고 부른다.

만약 구독서비스를 제공하는 프로덕트라고하면 유저프로퍼티에 무료회원/유료회원, 구독플랜 등을 설정할 수 있다.  


유저프로퍼티는 유저의 상태를 반영하고 전체 이벤트에 적용할 수 있다. 예를 들어 콘텐츠 구독서비스를 제공하는 서비스에서 드라마 카테고리를 선택하는 이벤트가 있다고 가정해보자.

이벤트 네임은 'choose drama'가 될 수 있고 이 이벤트를 수행하는 유저 중 유료플랜을 구독하는 유저의 수가 보고 싶다면 유저프로퍼티를 'paid member'로 설정하여 데이터 값을 볼 수 있다.

물론 이벤트 설정과 마찬가지로 유저프로퍼티도 정의가 되어 있어야 추적이 가능하다.


왼쪽은 이벤트, 오른쪽은 유저프로퍼티를 설정하여 데이터 분석을 할 수 있다.


우리가 중요하게 기억해야 하는 것은 유저프로퍼티는 유저의 상태를 반영하고 모든 이벤트와 연결 될 수 있다는 것이다. 

우리가 이벤트를 설정할 때 우선순위에 따른 이벤트를 구별했듯 유저프로퍼티도 프로덕트에서 가장 주요한 유저의 속성을 정의해놓아야 한다.  예를 들어 주문 수, 예약 수에 따라 유저 특성을 분리하는 것이다. 이것은 유저 리텐션, 전환비율 LTV를 분석하는데 사용하여 데이터 분석을 더 유의미하게 할 수 있도록 도와준다.


앰플리튜드에서는 유저프로퍼티 네이밍 규칙을


1) all lowercase 모두 소문자

2) 만약 유저프로퍼티의 값이 문자형태가 아니라면 

    is subscriber = true/false

    num of purchases = 1, 2, 3 


이런 형태로 타입을 나누기를 권장한다.




4) 이벤트 프로퍼티 Event Property


이벤트 프로퍼티는 이벤트의 속성, 특징들을 말한다. 예를 들어 'Swipe(넘기다)'라는 이벤트가 있다고 하면 Property로 'Direction(방향)'을 설정할 수 있고 그 밸류값으로 'left, right, up, down'을 설정할 수 있다. 이벤트라는 사용자 행동 안에 구체적인 특성이 이벤트 프로퍼티이고 이 이벤트 프로퍼티 안에 더 구체적인 상태가 밸류값이다.

Event > Propery > Value 

where은 이벤트 프로퍼티를 말하며 프로퍼티를 누르면 밸류값을 선택할 수 있다.



이벤트 프로퍼티는 각각의 이벤트에 대한 구체적인 정보와 타입을 나타낸다. 앰플리튜드는 이벤트의 구체적인 프로퍼티를 자동으로 추적하지 않기 때문에 이벤트 프로퍼티를 직접 커스텀하여 생성해야한다.

이렇게 이벤트 프로퍼티를 설정하면 트래킹해야 하는 이벤트의 숫자를 줄일 수 있다.


예를 들어 이커머스 프로덕트의 경우

프로덕트를 보고 -> 수량을 선택하고 -> 카트에 담고 -> 결제를 하는 플로우가 가장 중요하다고 가정해보자.

이때 이벤트 프로퍼티로 'product id'를 설정하면



Event : productpage view

Event Property : product id

Value : 3345


Event : product quantity select

Event Property : product id

Value : 3345


Event : buy product

Event Property : product id

Value : 3345



로 설정하여, 각 이벤트 내에 수많은 프로덕트의 경로를 확인할 수 있다.

만약 이벤트 프로퍼티를 설정하지 않았다면


Event : 3345 productpage view

Event : 3345 product quantaty select

Event : 3345 buy product

Event : 2234 productpage view

Event : 2234 product quantaty select

Event : 2234 buy product


이런식으로 제품이 생길때마다 이벤트를 수십개씩 만들어야 하고, 데이터 분석도 어려워진다.





정리하며


마지막으로 글을 정리하며, 프로퍼티 설정 시 기억해야 할 것들을 되짚어보자


- 프로퍼티 생성시 정말로 사용할 프로퍼티만 만들어야한다. 

  너무 많은 프로퍼티를 만들게 되면 분석을 더 여럽게 만든다.

- 민감한 정보(이메일, 주소)등을 프로퍼티에 넣기 전에 프로덕트의 개인정보처리방침에 부합하는지 

  먼저 확인해야 한다.

- 중요한 path에 있는 이벤트마다 주요 이벤트 프로퍼티를 설정하자

- 일관성 있는 이름으로 프로퍼티네이밍을 정하자







브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari