Comment on page

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];
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
WDOT.logEvent(event);
// .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를 아래의 유저 선택 속성 중 필요 속성에 맞춰 선택하여 사용 해 주세요. 앱에서 로그인이 완료되는 시점에 아래 코드를 추가합니다.

유저 선택 속성

Key
Value 예시
설명
setGender
male
성별을 의미하는 영문자
setMemberGrade
신규회원
회원등급을 분류할 수 있는 정보
setAge
20-29
연령 또는 연령대
setMemberId
wisetracker
회원의 로그인 아이디
setAttr1 ~ 5 or ut1 ~ ut5
platinum
회원 등급 등 회원의 유형을 분류할 수 있는 정보

선택 속성

Key
Value 예시
설명
loginTp
kakao
통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
User user = new User.Builder()
.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.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")
.setMemberGrade("LV.1")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.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
user.gender = "male"
user.memberGrade = "LV.1"
user.age = "20-29"
user.memberId = "wisetracker"
user.attribute1 = "platinum"
user.attribute2 = "seoul"
user.attribute3 = "seongdonggu"
user.attribute4 = "player"
user.attribute5 = "보호자"
})
)
let event = NSMutableDictionary()
event["event"] = "w_login_complete"
event["loginTp"] = "kakao"
DOT.logEvent(event)
[DOT setUser:
[User builder:^(User *user) {
user.gender = "male"
user.memberGrade = "LV.1"
user.age = "20-29"
user.memberId = "wisetracker"
user.attribute1 = "platinum"
user.attribute2 = "seoul"
user.attribute3 = "seongdonggu"
user.attribute4 = "player"
user.attribute5 = "보호자"
}]
];
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
DOT.setUser(User.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
DOT.logEvent(event);
WDOT.setUser(RW_User.setGender("male")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.build()
);
var event = new Object();
event["event"] = "w_login_complete";
event["loginTp"] = "kakao";
if (typeof WDOT != 'undefined') {
WDOT.logEvent(event);
}
// .dart 에서 호출 할 때
Map user = {};
user["sx"] = "male";
user["mbl"] = "LV.3";
user["ag"] = "20-29";
user["mbid"] = "wisetracker";
user["ut1"] = "platinum";
user["ut2"] = "seoul";
user["ut3"] = "seongdonggu";
user["ut4"] = "player";
user["ut5"] = "보호자";
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",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}
}));
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_login_complete",
loginTp : "kakao"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.setUser(JSON.stringify({
sx : "male",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}));
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_login_complete",
loginTp : "kakao"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.setUser(JSON.stringify({
sx : "male",
mbl: "LV.3",
ag : "20-29",
mbid: "wisetracker",
ut1 : "platinum",
ut2: "seoul",
ut3: "seongdonggu",
ut4: "player",
ut5:"보호자"
}));
window.ReactNativeWebView.logEvent(JSON.stringify({
method:"logEvent",
data : {
event : "w_login_complete",
loginTp : "kakao"
}
}));
DOT.setUser(
new DOT_Model.User.Builder()
.setGender("female")
.setMemberGrade("LV.3")
.setAge("20-29")
.setMemberId("wisetracker")
.setAttr1("platinum")
.setAttr2("seoul")
.setAttr3("seongdonggu")
.setAttr4("player")
.setAttr5("보호자")
.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];
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_logout";
event["loginTp"] = "kakao";
WDOT.logEvent(event);
// .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];
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_search";
event["search_term"] = "crop jeans";
event["search_type"] = "promotion";
event["g20"] = 1232;
WDOT.logEvent(event);
// .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];
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_view_promotion";
screen["promotion_id"] = "E200905605";
screen["promotion_name"] = "10월 COUPON PACK";
WDOT.onStartPage(screen);
// .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 != null &&
(NativeModules.DotReactBridge.onStartPage(),
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#