Basic : 공통 이벤트

공통 이벤트란 버티컬을 불문하고 측정할 필요가 있는 인앱 이벤트들을 말합니다. 앱에 해당 기능이 없는 경우가 아니라면 공통 이벤트에 포함된 API는 되도록 많이 적용하는 것을 권장합니다.
속성 중 Key 이름은 가이드에 나와있는 Key 이름을 그대로 사용 해 주세요. (임의로 변경시 대시보드에서 데이터 확인이 어렵습니다. > signupTp , loginTp 등)

회원가입

앱에서 회원가입이 완료되는 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
signupTp
email
string
통합ID, 소셜계정, 이메일 가입 등 회원가입 유형 정보
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_signup_complete");
eventMap.put("signupTp", "email");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_signup_complete"
eventMap["signupTp"] = "email"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_signup_complete"
event["signupTp"] = "email"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_signup_complete" forKey:@"event"];
[event setValue:@"email" forKey:@"signupTp"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map signUp = {};
signUp["event"] = "w_signup_complete";
signUp["signupTp"] = "email";
DOT.logEvent(signUp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_signup_complete",
signupTp : "email"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_signup_complete",
signupTp : "email"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_signup_complete",
signupTp : "email"
}
}));
Dictionary<string, object> eventDic= new Dictionary<string, object>();
eventDic.Add("event", "w_signup_complete");
eventDic.Add("signupTp", "email");
DOT.logEvent(eventDic);

유저 정보 측정

앱을 사용하는 유저에 대한 정보를 측정할 수 있는 API입니다. 앱에서 로그인이 완료되는 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
설명
setGender
male
성별을 의미하는 영문자
setAge
20-29
연령 또는 연령대
setAttr1
platinum
회원 등급 등 회원의 유형을 분류할 수 있는 정보
loginTp
kakao
통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
User user = new User.Builder()
.setGender("male")
.setAge("20-29")
.setAttr1("platinum")
.build();
DOT.setUser(user);
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_login_complete");
eventMap.put("loginTp", "kakao");
DOT.logEvent(eventMap);
val user = User.Builder()
.setGender("female")
.setAge("22-29")
.setAttr1("platinum")
.build()
DOT.setUser(user)
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_login_complete"
eventMap["loginTp"] = "kakao"
DOT.logEvent(eventMap)
DOT.setUser(
User.builder({ (builder) in
let user = builder as! User
// 성별, 연령, 고객등급을 아래와 같은 key, value로 더 추가 가능합니다
user.gender = "male"
user.age = "20-29"
user.attribute1 = "platinum"
})
)
let event = NSMutableDictionary()
event["event"] = "w_login_complete"
event["loginTp"] = "kakao"
DOT.logEvent(event)
[DOT setUser:
[User builder:^(User *user) {
// 성별, 연령, 고객등급을 아래와 같은 key, value로 더 추가 가능합니다
user.gender = "male"
user.age = "20-29"
user.attribute1 = "platinum"
}]
];
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
DOT.setUser(User.setGender("male")
.setAge("20-29")
.setAttr1("platinum")
.build()
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
DOT.logEvent(event);
</script>
<script type="text/javascript">
WDOT.setUser(RW_User.setGender("male")
.setAge("20-29")
.setAttr1("platinum")
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
if (typeof WDOT != 'undefined') {
WDOT.logEvent(event);
}
</script>
// .dart 에서 호출 할 때
Map user = {};
user["sx"] = "male";
user["ag"] = "20-29";
user["ut1"] = "platinum";
DOT.setUser(user);
Map loginTp = {};
loginTp["event"] = "w_login_complete";
loginTp["loginTp"] = "kakao";
DOT.logEvent(loginTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "setUser",
data: {
sx : "male",
ag : "20-29",
ut1 : "platinum"
}
}));
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_login_complete",
loginTp : "kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.setUser(JSON.stringify({
sx : "male",
ag : "20-29",
ut1 : "platinum"
}));
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_login_complete",
loginTp : "kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.setUser(JSON.stringify({
sx : "male",
ag : "20-29",
ut1 : "platinum"
}));
window.ReactNativeWebView.logEvent(JSON.stringify({
method:"logEvent",
data : {
event : "w_login_complete",
loginTp : "kakao"
}
}));
DOT.setUser(
new DOT_Model.User.Builder()
.setGender("male")
.setAge("20-29")
.setAttr1("platinum")
.build()
);
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_login_complete");
eventDic.Add("loginTp", "kakao");
DOT.logEvent(eventDic);

로그아웃 완료

로그아웃이 완료되는 시점에 해당 코드를 추가합니다.

선택 속성

Key
Value 예시
설명
loginTp
kakao
통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_logout");
eventMap.put("loginTp", "kakao");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_logout"
eventMap["loginTp"] = "kakao"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_logout"
event["loginTp"] = "kakao"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map loginTp = {};
loginTp["event"] = "w_logout";
loginTp["loginTp"] = "kakao";
DOT.logEvent(loginTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_logout",
loginTp : "kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_logout",
loginTp : "kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_logout",
loginTp : "kakao"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_logout");
eventDic.Add("loginTp", "kakao");
DOT.logEvent(eventDic);

검색

검색이 완료된 화면에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
search_term
crop jeans
string
유저가 검색한 검색어
search_type
promotion
string
일반, 추천, 프로모션 등 검색 유형 정보
g20
1232
float
검색 결과로 출력된 아이템 수
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_search");
eventMap.put("search_term", "crop jeans");
eventMap.put("search_type", "promotion");
eventMap.put("g20", 1232);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search"
eventMap["search_term"] = "crop jeans"
eventMap["search_type"] = "promotion"
eventMap["g20"] = 1232
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_search"
event["search_term"] = "crop jeans"
event["search_type"] = "promotion"
event["g20"] = 1232
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_search" forKey:@"event"];
[event setValue:@"crop jeans" forKey:@"search_term"];
[event setValue:@"promotion" forKey:@"search_type"];
[event setValue:[NSNumber numberWithInt:1232] forKey:@"g20"];
[DOT logEvent:event];
<script type="wisetracker/text" id="wiseTracker2">
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
DOT.logEvent(event);
</script>
<script type="text/javascript">
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
WDOT.logEvent(event);
</script>
// .dart 에서 호출 할 때
Map searchTp = {};
searchTp["event"] = "w_search";
searchTp["search_term"] = "crop jeans";
searchTp["search_type"] = "promotion";
searchTp["g20"] = 1232;
DOT.logEvent(searchTp);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_search",
search_term : "crop jeans",
search_type : "promotion",
g20 : 1232
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "search");
eventDic.Add("search_term", "crop jeans");
eventDic.Add("search_type", "promotion");
eventDic.Add("g20", 1232);
DOT.logEvent(eventDic);

프로모션 조회

프로모션 상세화면에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
promotion_id
E200905605
string
프로모션 고유번호
promotion_name
10월 COUPON PACK
string
프로모션 명칭
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_promotion");
pageMap.put("promotion_id", "E200905605");
pageMap.put("promotion_name", "10월 COUPON PACK");
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_promotion"
pageMap["promotion_id"] = "E200905605"
pageMap["promotion_name"] = "7월 COUPON PACK"
DOT.logScreen(pageMap)
var screen = NSMutableDictionary()
screen["event"] = "w_view_promotion"
screen["promotion_id"] = "E200905605"
screen["promotion_name"] = "10월 COUPON PACK"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_promotion" forKey:@"event"];
[screen setValue:@"E200905605" forKey:@"promotion_id"];
[screen setValue:@"10월 COUPON PACK" forKey:@"promotion_name"];
[DOT logScreen:screen];
<script type="wisetracker/text" id="wiseTracker2">
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(screen);
</script>
<script type="text/javascript">
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
WDOT.logScreen(screen);
</script>
// .dart 에서 호출 할 때
Map promotion = {};
promotion["event"] = "w_view_promotion";
promotion["promotion_id"] = "E200905605";
promotion["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(promotion);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_view_promotion",
promotion_id : "E200905605",
promotion_name : "10월 COUPON PACK"
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_promotion");
page.Add("promotion_id", "E200905605");
page.Add("promotion_name", "10월 COUPON PACK");
DOT.logScreen(page);

컨텐츠 조회

컨텐츠 상세화면에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
content_id
1912012739
string
컨텐츠 고유번호
content_name
깊은잠 토퍼 매트리스 리뷰
string
컨텐츠 명칭
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_contents");
pageMap.put("content_id", "1912012739");
pageMap.put("content_name", "깊은잠 토퍼 매트리스 리뷰");
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_contents"
pageMap["content_id"] = "1912012739"
pageMap["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(pageMap)
var screen = NSMutableDictionary()
screen["event"] = "w_view_contents"
screen["content_id"] = "1912012739"
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_contents" forKey:@"event"];
[screen setValue:@"1912012739" forKey:@"content_id"];
[screen setValue:@"깊은잠 토퍼 매트리스 리뷰" forKey:@"content_name"];
[DOT logScreen:screen];
<script type="wisetracker/text" id="wiseTracker2">
var screen = new Object();
screen["event"] = "w_view_contents";
screen["content_id"] = "1912012739";
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
DOT.logScreen(screen);
</script>
<script type="text/javascript">
var screen = new Object();
screen["event"] = "w_view_contents";
screen["content_id"] = "1912012739";
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
WDOT.logScreen(screen);
</script>
// .dart 에서 호출 할 때
Map content = {};
content["event"] = "w_view_contents";
content["content_id"] = "1912012739";
content["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
DOT.logScreen(content);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_contents",
content_id : "1912012739",
content_name : "깊은잠 토퍼 매트리스 리뷰"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_view_contents",
content_id : "1912012739",
content_name : "깊은잠 토퍼 매트리스 리뷰"