Links

e-Commerce : 이커머스

이커머스 앱에서 측정을 권장하는 인앱 이벤트 API와 적용 예시를 안내합니다.
속성 중 Key 이름은 가이드에 나와있는 Key 이름을 그대로 사용 해 주세요. (임의로 변경시 대시보드에서 데이터 확인이 어렵습니다. > product_id , product_name 등)

상품 조회

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

선택 속성

Key
Value 예시
Type
설명
product_id
2007289429
string
상품 고유코드
product_name
플랩 더블 버튼 트렌치코트
string
상품명
category_id_a
00100
string
대 카테고리 코드
category_name_a
여성패션
string
대 카테고리 명칭
category_id_b
2984
string
중 카테고리 코드
category_name_b
트렌치코드
string
중 카테고리 명칭
brand_name
STUDIO TOMBOY
string
브랜드 명칭
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_product");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "2007289429");
productMap.put("product_name", "플랩 더블 버튼 트렌치코트");
productMap.put("category_id_a", "00100");
productMap.put("category_name_a", "여성패션");
productMap.put("category_id_b", "2984");
productMap.put("category_name_b", "트렌치코드");
productMap.put("brand_name", "STUDIO TOMBOY");
pageMap.put("product", productMap);
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_product"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "2007289429"
productMap["product_name"] = "플랩 더블 버튼 트렌치코트"
productMap["category_id_a"] = "00100"
productMap["category_name_a"] = "여성패션"
productMap["category_id_b"] = "2984"
productMap["category_name_b"] = "트렌치코드"
productMap["brand_name"] = "STUDIO TOMBOY"
pageMap["product"] = productMap
DOT.logScreen(pageMap)
let screen = NSMutableDictionary()
screen["event"] = "w_view_product"
var product : [String: Any] = [:]
product["product_id"] = "2007289429"
product["product_name"] = "플랩 더블 버튼 트렌치코트"
product["category_id_a"] = "00100"
product["category_name_a"] = "여성패션"
product["category_id_b"] = "2984"
product["category_name_b"] = "트렌치코드"
product["brand_name"] = "STUDIO TOMBOY"
screen["product"] = product
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_product" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"2007289429" forKey:@"product_id"];
[product setValue:@"플랩 더블 버튼 트렌치코트" forKey:@"product_name"];
[product setValue:@"00100" forKey:@"category_id_a"];
[product setValue:@"여성패션" forKey:@"category_name_a"];
[product setValue:@"2984" forKey:@"category_id_b"];
[product setValue:@"트렌치코드" forKey:@"category_name_b"];
[product setValue:@"STUDIO TOMBOY" forKey:@"brand_name"];
[screen setValue:product forKey:@"product"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_view_product";
var product = new Object();
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
screen["product"] = product;
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_view_product";
var product = new Object();
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
screen["product"] = product;
WDOT.onStartPage(screen);
// .dart 에서 호출 할 때
Map screen = {};
screen["event"] = "w_view_product";
Map product = {};
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
screen["product"] = product;
DOT.logScreen(screen);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_product",
product_id : "2007289429",
product_name : "플랩 더블 버튼 트렌치코트",
category_id_a : "00100",
category_name_a : "여성패션",
category_id_b : "2984",
category_name_b : "트렌치코드",
brand_name : "STUDIO TOMBOY"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge != null &&
(NativeModules.DotReactBridge.onStartPage(),
NativeModules.DotReactBridge.logScreen(
JSON.stringify({
event: 'w_view_product',
product: {
product_id: '2007289429',
product_name: '플랩 더블 버튼 트렌치코트',
category_id_a: '00100',
category_name_a: '여성패션',
category_id_b: '2984',
category_name_b: '트렌치코드',
brand_name: 'STUDIO TOMBOY',
},
}),
));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_view_product",
product : {
product_id : "2007289429",
product_name : "플랩 더블 버튼 트렌치코트",
category_id_a : "00100",
category_name_a : "여성패션",
category_id_b : "2984",
category_name_b : "트렌치코드",
brand_name : "STUDIO TOMBOY"
}
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_product");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "2007289429");
product.Add("product_name", "플랩 더블 버튼 트렌치코트");
product.Add("category_id_a", "00100");
product.Add("category_name_a", "여성패션");
product.Add("category_id_b", "2984");
product.Add("category_name_b", "트렌치코드");
product.Add("brand_name", "STUDIO TOMBOY");
page.Add("product", product);
DOT.logScreen(page);

상품 리스트 조회

상품 리스트 상세 화면에 아래 코드를 추가합니다.
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_product_list");
DOT.logScreen(pageMap);
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_product_list"
DOT.logScreen(pageMap)
let screen = NSMutableDictionary()
screen["event"] = "w_view_product_list"
DOT.logScreen(screen)
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_view_product_list" forKey:@"event"];
[DOT logScreen:screen];
var screen = new Object();
screen["event"] = "w_view_product_list";
DOT.logScreen(screen);
var screen = new Object();
screen["event"] = "w_view_product_list";
WDOT.onStartPage(screen);
// .dart 에서 호출 할 때
Map screen = {};
screen["event"] = "w_view_product_list";
DOT.logScreen(screen);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logScreen",
data: {
event : "w_view_product_list"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge != null &&
(NativeModules.DotReactBridge.onStartPage(),
NativeModules.DotReactBridge.logScreen(JSON.stringify({
event : "w_view_product_list"
}),
));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_view_product_list"
}
}));
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_product_list");
DOT.logScreen(page);

상품 공유

상품 공유 버튼이 클릭되는 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
share_type
kakao
string
상품이 공유된 미디어
product_id
2007289429
string
상품 고유코드
product_name
플랩 더블 버튼 트렌치코트
string
상품명
category_id_a
00100
string
대 카테고리 코드
category_name_a
여성패션
string
대 카테고리 명칭
category_id_b
2984
string
중 카테고리 코드
category_name_b
트렌치코드
string
중 카테고리 명칭
brand_name
STUDIO TOMBOY
string
브랜드 명칭
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_share");
eventMap.put("share_type", "kakao");
Map<String, Object> productMap = new HashMap<>();
productMap.put("product_id", "2007289429");
productMap.put("product_name", "플랩 더블 버튼 트렌치코트");
productMap.put("category_id_a", "00100");
productMap.put("category_name_a", "여성패션");
productMap.put("category_id_b", "2984");
productMap.put("category_name_b", "트렌치코드");
productMap.put("brand_name", "STUDIO TOMBOY");
eventMap.put("product", productMap);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_share"
eventMap["share_type"] = "kakao"
val productMap = mutableMapOf<String,Any>()
productMap["product_id"] = "2007289429"
productMap["product_name"] = "플랩 더블 버튼 트렌치코트"
productMap["category_id_a"] = "00100"
productMap["category_name_a"] = "여성패션"
productMap["category_id_b"] = "2984"
productMap["category_name_b"] = "트렌치코드"
productMap["brand_name"] = "STUDIO TOMBOY"
eventMap["product"] = productMap
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_share"
event["share_type"] = "kakao"
var product : [String: Any] = [:]
product["product_id"] = "2007289429"
product["product_name"] = "플랩 더블 버튼 트렌치코트"
product["category_id_a"] = "00100"
product["category_name_a"] = "여성패션"
product["category_id_b"] = "2984"
product["category_name_b"] = "트렌치코드"
product["brand_name"] = "STUDIO TOMBOY"
event["product"] = product
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_share" forKey:@"event"];
NSMutableDictionary *product = [[NSMutableDictionary alloc] init];
[product setValue:@"2007289429" forKey:@"product_id"];
[product setValue:@"플랩 더블 버튼 트렌치코트" forKey:@"product_name"];
[product setValue:@"00100" forKey:@"category_id_a"];
[product setValue:@"여성패션" forKey:@"category_name_a"];
[product setValue:@"2984" forKey:@"category_id_b"];
[product setValue:@"트렌치코드" forKey:@"category_name_b"];
[product setValue:@"STUDIO TOMBOY" forKey:@"brand_name"];
[event setValue:product forKey:@"product"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_share";
event["share_type"] = "kakao";
var product = new Object();
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
event["product"] = product;
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_share";
event["share_type"] = "kakao";
var product = new Object();
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
event["product"] = product;
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_share";
event["share_type"] = "kakao";
Map product = {};
product["product_id"] = "2007289429";
product["product_name"] = "플랩 더블 버튼 트렌치코트";
product["category_id_a"] = "00100";
product["category_name_a"] = "여성패션";
product["category_id_b"] = "2984";
product["category_name_b"] = "트렌치코드";
product["brand_name"] = "STUDIO TOMBOY";
event["product"] = product;
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_share",
share_type : "kakao",
product_id : "2007289429",
product_name : "플랩 더블 버튼 트렌치코트",
category_id_a : "00100",
category_name_a : "여성패션",
category_id_b : "2984",
category_name_b : "트렌치코드",
brand_name : "STUDIO TOMBOY"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_share",
share_type : "kakao",
product : {
product_id : "2007289429",
product_name : "플랩 더블 버튼 트렌치코트",
category_id_a : "00100",
category_name_a : "여성패션",
category_id_b : "2984",
category_name_b : "트렌치코드",
brand_name : "STUDIO TOMBOY"
}
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logScreen",
data : {
event : "w_share",
share_type : "kakao",
product : {
product_id : "2007289429",
product_name : "플랩 더블 버튼 트렌치코트",
category_id_a : "00100",
category_name_a : "여성패션",
category_id_b : "2984",
category_name_b : "트렌치코드",
brand_name : "STUDIO TOMBOY"
}
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_share");
eventDic.Add("share_type", "kakao");
Dictionary<string, object> product = new Dictionary<string, object>();
product.Add("product_id", "2007289429");
product.Add("product_name", "플랩 더블 버튼 트렌치코트");
product.Add("category_id_a", "00100");
product.Add("category_name_a", "여성패션");
product.Add("category_id_b", "2984");
product.Add("category_name_b", "트렌치코드");
product.Add("brand_name", "STUDIO TOMBOY");
eventDic.Add("product", product);
DOT.logEvent(eventDic);

쿠폰 다운로드

쿠폰이 다운로드된 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
coupon_name
신규가입기념 20% 할인
string
쿠폰의 명칭이나 ID
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_download_coupon");
eventMap.put("coupon_name", "신규가입기념 20% 할인");
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_download_coupon"
eventMap["coupon_name"] = "신규가입기념 20% 할인"
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_download_coupon"
event["coupon_name"] = "신규가입기념 20% 할인"
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_download_coupon" forKey:@"event"];
[event setValue:@"신규가입기념 20% 할인" forKey:@"coupon_name"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_download_coupon";
event["coupon_name"] = "신규가입기념 20% 할인";
DOT.logEvent(event);
var event = new Object();
event["event"] = "w_download_coupon";
event["coupon_name"] = "신규가입기념 20% 할인";
WDOT.logEvent(event);
// .dart 에서 호출 할 때
Map event = {};
event["event"] = "w_download_coupon";
event["coupon_name"] = "신규가입기념 20% 할인";
DOT.logEvent(event);
// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
method : "logEvent",
data: {
event : "w_download_coupon",
coupon_name : "신규가입기념 20% 할인"
}
}));
// .js 에서 호출 할 때
NativeModules.DotReactBridge.logEvent(JSON.stringify({
event : "w_download_coupon",
coupon_name : "신규가입기념 20% 할인"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
method:"logEvent",
data : {
event : "w_download_coupon",
coupon_name : "신규가입기념 20% 할인"
}
}));
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_download_coupon");
eventDic.Add("coupon_name", "신규가입기념 20% 할인");
DOT.logEvent(eventDic);

쿠폰 사용하기

쿠폰을 사용 완료하는 시점에 아래 코드를 추가합니다.

선택 속성

Key
Value 예시
Type
설명
coupon_name
신규가입기념 20% 할인
string
쿠폰의 명칭이나 ID
g1
5000
float
쿠폰 할인 금액
Java
Kotlin
Swift
Objective-C
Mobile Webview
Website
Flutter
ReactNative
C#
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_use_coupon");
eventMap.put("coupon_name", "신규가입기념 20% 할인");
eventMap.put("g1", 5000);
DOT.logEvent(eventMap);
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_use_coupon"
eventMap["coupon_name"] = "신규가입기념 20% 할인"
eventMap["g1"] = 5000
DOT.logEvent(eventMap)
let event = NSMutableDictionary()
event["event"] = "w_use_coupon"
event["coupon_name"] = "신규가입기념 20% 할인"
event["g1"] = 5000
DOT.logEvent(event)
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_use_coupon" forKey:@"event"];
[event setValue:@"신규가입기념 20% 할인" forKey:@"coupon_name"];
[event setValue:[NSNumber numberWithInt:5000] forKey:@"g1"];
[DOT logEvent:event];
var event = new Object();
event["event"] = "w_use_coupon";
event["coupon_name"] = "신규가입기념 20% 할인";
event["g1"] = 5000;