# Basic : 공통 이벤트

:ballot\_box\_with\_check:속성 중 **Key** 이름은 가이드에 나와있는 **Key** 이름을 그대로 사용 해 주세요.\
(임의로 변경시 대시보드에서 데이터 확인이 어렵습니다.  > signupTp , loginTp 등)

## 회원가입 <a href="#signup" id="signup"></a>

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="151.7142857142857">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>signupTp</td><td>email</td><td>string</td><td>통합ID, 소셜계정, 이메일 가입 등 회원가입 유형 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_signup_complete");
eventMap.put("signupTp", "email");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
 val eventMap = mutableMapOf<String,Any>()
 eventMap["event"] = "w_signup_complete"
 eventMap["signupTp"] = "email"
 DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_signup_complete"
event["signupTp"] = "email"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_signup_complete" forKey:@"event"];
[event setValue:@"email" forKey:@"signupTp"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
var event = new Object();
event["event"] = "w_signup_complete";
event["signupTp"] = "email";
DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_signup_complete";
    event["signupTp"] = "email";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```dart
// .dart 에서 호출 할 때 
Map event = {}; 
event["event"] = "w_signup_complete";
event["signupTp"] = "email";  
DOT.logEvent(event); 

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_signup_complete",
              signupTp : "email"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic= new Dictionary<string, object>();
eventDic.Add("event", "w_signup_complete");
eventDic.Add("signupTp", "email");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 유저 정보 측정 <a href="#setuser" id="setuser"></a>

앱을 사용하는 유저에 대한 정보를 측정할 수 있는 API입니다. 유저에 대한 정보를 측정할 수 있는 key를 아래의 유저 선택 속성 중 필요 속성에 맞춰 선택하여 사용 해 주세요.\
앱에서 로그인이 완료되는 시점에 아래 코드를 추가합니다.

#### **유저 선택 속성**

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>설명</td></tr><tr><td>setGender</td><td>male</td><td>성별을 의미하는 영문자</td></tr><tr><td>setMemberGrade</td><td>신규회원</td><td>회원등급을 분류할 수 있는 정보</td></tr><tr><td>setAge</td><td>20-29</td><td>연령 또는 연령대</td></tr><tr><td>setMemberId</td><td>wisetracker</td><td>회원의 로그인 아이디</td></tr><tr><td>setAttr1 ~ 5    or            ut1 ~ ut5</td><td>platinum</td><td>회원 등급 등 회원의 유형을 분류할 수 있는 정보</td></tr></tbody></table>

#### 선택 속성

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>설명</td></tr><tr><td>loginTp</td><td>kakao</td><td>통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
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)
```

{% endtab %}

{% tab title="Swift" %}

```swift
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)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
[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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    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);
```

{% endtab %}

{% tab title="Website" %}

```javascript
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);
    }
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .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 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "setUser",
      data: {
              sx : "male",
              mbl: "LV.3",
              ag : "20-29",
              mbid: "wisetracker",
              ut1 : "platinum",
              ut2: "seoul",
        ut3: "seongdonggu",
        ut4: "player",
        ut5:"보호자"
      }
}));

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_login_complete",
              loginTp : "kakao"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
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);
```

{% endtab %}
{% endtabs %}

## 로그아웃 완료

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

#### 선택 속성

<table data-header-hidden><thead><tr><th width="150">Key</th><th width="150">Value 예시</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>설명</td></tr><tr><td><a data-footnote-ref href="#user-content-fn-1">loginTp</a></td><td>kakao</td><td>통합ID, 소셜계정, 이메일 가입 등 로그인 유형 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_logout");
eventMap.put("loginTp", "kakao");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
 val eventMap = mutableMapOf<String,Any>()
  eventMap["event"] = "w_logout"
  eventMap["loginTp"] = "kakao"
  DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary() 
event["event"] = "w_logout"
event["loginTp"] = "kakao"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_login_complete" forKey:@"event"];
[event setValue:@"kakao" forKey:@"loginTp"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_logout";
    event["loginTp"] = "kakao";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_logout";
    event["loginTp"] = "kakao";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map loginTp = {};
loginTp["event"] = "w_logout";
loginTp["loginTp"] = "kakao";
DOT.logEvent(loginTp);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_logout",
              loginTp : "kakao"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
    	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_logout");
eventDic.Add("loginTp", "kakao");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 검색 <a href="#search" id="search"></a>

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="167.6153846153846">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>search_term</td><td>crop jeans</td><td>string</td><td>유저가 검색한 검색어</td></tr><tr><td>search_type</td><td>promotion</td><td>string</td><td>일반, 추천, 프로모션 등 검색 유형 정보</td></tr><tr><td>g20</td><td>1232</td><td>float</td><td>검색 결과로 출력된 아이템 수</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_search"
eventMap["search_term"] = "crop jeans"
eventMap["search_type"] = "promotion"
eventMap["g20"] = 1232
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_search"
event["search_term"] = "crop jeans"
event["search_type"] = "promotion"
event["g20"] = 1232
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["search_term"] = "crop jeans";
    event["search_type"] = "promotion";
    event["g20"] = 1232;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_search";
    event["search_term"] = "crop jeans";
    event["search_type"] = "promotion";
    event["g20"] = 1232;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map searchTp = {};
searchTp["event"] = "w_search";
searchTp["search_term"] = "crop jeans";
searchTp["search_type"] = "promotion";
searchTp["g20"] = 1232;
DOT.logEvent(searchTp);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_search",
              search_term : "crop jeans",
              search_type : "promotion",
              g20 : 1232
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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
        	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
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);
```

{% endtab %}
{% endtabs %}

## 프로모션 조회

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th>Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>promotion_id</td><td>E200905605</td><td>string</td><td>프로모션 고유번호</td></tr><tr><td>promotion_name</td><td>10월 COUPON PACK</td><td>string</td><td>프로모션 명칭</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
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);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_promotion"
pageMap["promotion_id"] = "E200905605"
pageMap["promotion_name"] = "7월 COUPON PACK"
DOT.logScreen(pageMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_view_promotion"
screen["promotion_id"] = "E200905605"
screen["promotion_name"] = "10월 COUPON PACK"
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_promotion";
    screen["promotion_id"] = "E200905605";
    screen["promotion_name"] = "10월 COUPON PACK";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_promotion";
    screen["promotion_id"] = "E200905605";
    screen["promotion_name"] = "10월 COUPON PACK";
    WDOT.onStartPage(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map promotion = {};
promotion["event"] = "w_view_promotion";
promotion["promotion_id"] = "E200905605";
promotion["promotion_name"] = "10월 COUPON PACK";
DOT.logScreen(promotion);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logScreen",
      data: {
              event : "w_view_promotion",
              promotion_id : "E200905605",
              promotion_name : "10월 COUPON PACK"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .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"
	}  
})); 

```

{% endtab %}

{% tab title="C#" %}

```csharp
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);
```

{% endtab %}
{% endtabs %}

## 컨텐츠 조회 <a href="#view-contents" id="view-contents"></a>

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

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="170.19101123595505">Key</th><th>Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>content_id</td><td>1912012739</td><td>string</td><td>컨텐츠 고유번호</td></tr><tr><td>content_name</td><td>깊은잠 토퍼 매트리스 리뷰</td><td>string</td><td>컨텐츠 명칭</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("event", "w_view_contents");
pageMap.put("content_id", "1912012739");
pageMap.put("content_name", "깊은잠 토퍼 매트리스 리뷰");
DOT.logScreen(pageMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val pageMap = mutableMapOf<String,Any>()
pageMap["event"] = "w_view_contents"
pageMap["content_id"] = "1912012739"
pageMap["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(pageMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_view_contents"
screen["content_id"] = "1912012739"
screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰"
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
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];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_contents";
    screen["content_id"] = "1912012739";
    screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_view_contents";
    screen["content_id"] = "1912012739";
    screen["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
    WDOT.onStartPage(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map content = {};
content["event"] = "w_view_contents";
content["content_id"] = "1912012739";
content["content_name"] = "깊은잠 토퍼 매트리스 리뷰";
DOT.logScreen(content);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logScreen",
      data: {
              event : "w_view_contents",
              content_id : "1912012739",
              content_name : "깊은잠 토퍼 매트리스 리뷰"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge != null &&
  (NativeModules.DotReactBridge.onStartPage(),
  NativeModules.DotReactBridge.logScreen(JSON.stringify({
        event : "w_view_contents",
        content_id : "1912012739",
        content_name : "깊은잠 토퍼 매트리스 리뷰"
    }),
  ));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logScreen",
	data : {
    event : "w_view_contents",
    content_id : "1912012739",
    content_name : "깊은잠 토퍼 매트리스 리뷰"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_view_contents");
page.Add("content_id", "1912012739");
page.Add("content_name", "깊은잠 토퍼 매트리스 리뷰");
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 전화 문의

전화 문의 관련 화면에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_contact_by_phone");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_contact_by_phone"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_contact_by_phone"
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_contact_by_phone" forKey:@"event"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_contact_by_phone";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_contact_by_phone";
    WDOT.logEvent(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map byPhone = {};
byPhone["event"] = "w_contact_by_phone";
DOT.logEvent(byPhone);


// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_contact_by_phone"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_contact_by_phone"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    event : "w_contact_by_phone"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_contact_by_phone");
DOT.logEvent(eventDic)
```

{% endtab %}
{% endtabs %}

## 카카오톡 문의

카카오톡 문의 관련 화면에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_contact_by_kakao");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_contact_by_kakao"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_contact_by_kakao"
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_contact_by_kakao" forKey:@"event"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_contact_by_kakao";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_contact_by_kakao";
    WDOT.logEvent(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map byPhone = {};
byPhone["event"] = "w_contact_by_phone";
DOT.logEvent(byPhone);


// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_contact_by_kakao"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_contact_by_kakao"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    event : "w_contact_by_kakao"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_contact_by_kakao");
DOT.logEvent(eventDic)
```

{% endtab %}
{% endtabs %}

## 블로그 방문하기

블로그 방문하기 관련 화면에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_blog_link");
DOT.logScreen(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_blog_link"
DOT.logScreen(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var screen = NSMutableDictionary()
screen["event"] = "w_blog_link"
DOT.logScreen(screen)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *screen = [[NSMutableDictionary alloc] init];
[screen setValue:@"w_blog_link" forKey:@"event"];
[DOT logScreen:screen];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_blog_link";
    DOT.logScreen(screen);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var screen = new Object();
    screen["event"] = "w_blog_link";
    WDOT.logScreen(screen);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map blogLink = {};
blogLink["event"] = "w_blog_link";
DOT.logScreen(blogLink);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logScreen",
      data: {
              event : "w_blog_link"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logScreen(JSON.stringify({
    event : "w_blog_link"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logScreen",
	data : {
    event : "w_blog_link"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> page = new Dictionary<string, object>();
page.Add("event", "w_blog_link");
DOT.logScreen(page);
```

{% endtab %}
{% endtabs %}

## 클릭 이벤트

유저가 앱 내에서 메뉴, 배너 등을 클릭하는 행동을 일종의 이벤트로써 측정하기 위해 사용하는 API입니다. 클릭 가능한 모든 대상에 적용할 필요는 없으며, 반드시 측정할 필요가 있는 대상에만 적용하는 것을 권장합니다.

### 메뉴 클릭 <a href="#click-menu" id="click-menu"></a>

메뉴가 클릭된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="186">Key</th><th width="150">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>menu_name</td><td>신상품</td><td>string</td><td>메뉴 명칭</td></tr><tr><td>placement</td><td>GNB</td><td>string</td><td>노출 순서나 배치된 위치 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_menu");
eventMap.put("menu_name", "신상품");       
eventMap.put("placement", "GNB");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_menu"
eventMap["menu_name"] = "신상품"
eventMap["placement"] = "GNB"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_click_menu"
event["menu_name"] = "신상품"
event["placement"] = "GNB"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_menu" forKey:@"event"];
[event setValue:@"신상품" forKey:@"menu_name"];
[event setValue:@"GNB" forKey:@"placement"]
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_menu";
    event["menu_name"] = "신상품";
    event["placement"] = "GNB";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_menu";
    event["menu_name"] = "신상품";
    event["placement"] = "GNB";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map menuClick = {};
menuClick["event"] = "w_click_menu";
menuClick["menu_name"] = "신상품";
menuClick["placement"] = "GNB";     
DOT.logEvent(menuClick);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_click_menu",
              menu_name : "신상품",
              placement : "GNB"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_click_menu",
    menu_name : "신상품",
    placement : "GNB"
}));
// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_click_menu",
	    menu_name : "신상품",
	    placement : "GNB"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_menu");
eventDic.Add("menu_name", "신상품");
eventDic.Add("placement", "GNB");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

### 배너 클릭 <a href="#click-banner" id="click-banner"></a>

배너가 클릭된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="168">Key</th><th width="162.35654596100278">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>banner_name</td><td>ARKO Pre-order</td><td>string</td><td>배너 명칭</td></tr><tr><td>placement</td><td>3</td><td>string</td><td>노출 순서나 배치된 위치 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_banner");
eventMap.put("banner_name", "ARKO Pre-order");
eventMap.put("placement", "3");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_banner"
eventMap["banner_name"] = "ARKO Pre-order"
eventMap["placement"] = "3"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_click_banner"
event["banner_name"] = "ARKO Pre-order"
event["placement"] = "3"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_banner" forKey:@"event"];
[event setValue:@"ARKO Pre-order" forKey:@"banner_name"];
[event setValue:@"3" forKey:@"placement"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_banner";
    event["banner_name"] = "ARKO Pre-order";
    event["placement"] = "3";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_banner";
    event["banner_name"] = "ARKO Pre-order";
    event["placement"] = "3";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map bannerClick = {};
bannerClick["event"] = "w_click_banner";
bannerClick["banner_name"] = "ARKO Pre-order";
bannerClick["placement"] = "3";
DOT.logEvent(bannerClick);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_click_banner",
              banner_name : "ARKO Pre-order",
              placement : "3"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_click_banner",
    banner_name : "ARKO Pre-order",
    placement : "3"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_click_banner",
	    banner_name : "ARKO Pre-order",
	    placement : "3"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_banner");
eventDic.Add("banner_name", "ARKO Pre-order");
eventDic.Add("placement", "3");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

### 버튼 클릭 <a href="#click-button" id="click-button"></a>

버튼이 클릭된 시점에 아래 코드를 추가합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="153.5320970042796">Key</th><th width="179">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>button_name</td><td>Free 30-day Trial</td><td>string</td><td>버튼 명칭</td></tr><tr><td>placement</td><td>subscription CTA</td><td>string</td><td>노출 순서나 배치된 위치 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_button");
eventMap.put("button_name", "Free 30-day Trial");
eventMap.put("placement", "subsctiption CTA");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_button"
eventMap["button_name"] = "Free 30-day Trial"
eventMap["placement"] = "subsctiption CTA"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
var event = NSMutableDictionary()
event["event"] = "w_click_button"
event["button_name"] = "Free 30-day Trial"
event["placement"] = "subsctiption CTA"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_button" forKey:@"event"];
[event setValue:@"Free 30-day Trial" forKey:@"button_name"];
[event setValue:@"subsctiption CTA" forKey:@"placement"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_button";
    event["button_name"] = "Free 30-day Trial";
    event["placement"] = "subsctiption CTA";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_button";
    event["button_name"] = "Free 30-day Trial";
    event["placement"] = "subsctiption CTA";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map buttonClick = {};
buttonClick["event"] = "w_click_button";
buttonClick["button_name"] = "Free 30-day Trial";
buttonClick["placement"] = "subsctiption CTA";
DOT.logEvent(buttonClick);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_click_button",
              button_name : "Free 30-day Trial",
              placement : "subsctiption CTA"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_click_button",
    button_name : "Free 30-day Trial",
    placement : "subsctiption CTA"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_click_button",
	    button_name : "Free 30-day Trial",
	    placement : "subsctiption CTA"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_button");
eventDic.Add("button_name", "Free 30-day Trial");
eventDic.Add("placement", "subscription CTA");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

### 아이템 클릭 <a href="#click-item" id="click-item"></a>

배너, 메뉴, 버튼 등으로 분류하기 어려운 요소가 있을 수 있습니다. 이런 요소가 클릭된 시점에 아래 코드를 적용합니다.

#### **선택 속성**

<table data-header-hidden><thead><tr><th width="171">Key</th><th width="158.46109510086455">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>item_name</td><td>최근 3일 급등종목</td><td>string</td><td>아이템 명칭</td></tr><tr><td>placement</td><td>추천영역 2</td><td>string</td><td>노출 순서나 배치된 위치 정보</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_click_item");
eventMap.put("item_name", "최근 3일 급등종목");
eventMap.put("placement", "추천영역 2");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_click_item"
eventMap["item_name"] = "최근 3일 급등종목"
eventMap["placement"] = "추천영역 2"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_click_item"
event["item_name"] = "최근 3일 급등종목"
event["placement"] = "추천영역 2"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_click_item" forKey:@"event"];
[event setValue:@"최근 3일 급등종목" forKey:@"item_name"];
[event setValue:@"추천영역 2" forKey:@"placement"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_item";
    event["item_name"] = "최근 3일 급등종목";
    event["placement"] = "추천영역 2";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_click_item";
    event["item_name"] = "최근 3일 급등종목";
    event["placement"] = "추천영역 2";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map itemClick = {};
itemClick["event"] = "w_click_item";
itemClick["item_name"] = "최근 3일 급등종목";
itemClick["placement"] = "추천영역 2";
DOT.logEvent(itemClick);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_click_item",
              item_name : "최근 3일 급등종목",
              placement : "추천영역 2"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_click_item",
    item_name : "최근 3일 급등종목",
    placement : "추천영역 2"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_click_item",
	    item_name : "최근 3일 급등종목",
	    placement : "추천영역 2"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_click_item");
eventDic.Add("item_name", "최근 3일 급등종목");
eventDic.Add("placement", "추천영역 2");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 공유하기 <a href="#share" id="share"></a>

SMS 및 다른 앱을 통한 상품/컨텐츠 공유를 완료한 시점에 아래 코드를 추가합니다.

#### 선택 속성

<table data-header-hidden><thead><tr><th width="171">Key</th><th width="158.46109510086455">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>share_type </td><td>facebook</td><td>string</td><td>공유된 미디어 </td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_share");
eventMap.put("share_type", "facebook");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_share"
eventMap["share_type"] = "facebook"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_share"
event["share_type"] = "facebook"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_share" forKey:@"event"];
[event setValue:@"facebook" forKey:@"share_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_share";
    event["share_type"] = "facebook";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_share";
    event["share_type"] = "facebook";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map share = {};
share["event"] = "w_share";
share["share_type"] = "facebook";
DOT.logEvent(share);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_share",
              share_type : "facebook"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_share",
    share_type : "facebook"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_share",
	    share_type : "facebook"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_share");
eventDic.Add("share_type", "facebook");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 초대하기 <a href="#invite" id="invite"></a>

SMS 및 다른 앱을 통해 초대하기를 완료한 시점에 아래 코드를 추가합니다.

#### 선택 속성

<table data-header-hidden><thead><tr><th width="171">Key</th><th width="158.46109510086455">Value 예시</th><th width="150">Type</th><th>설명</th></tr></thead><tbody><tr><td>Key</td><td>Value 예시</td><td>Type</td><td>설명</td></tr><tr><td>invite_type </td><td>instagram</td><td>string</td><td>초대된 미디어</td></tr></tbody></table>

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_invite");
eventMap.put("invite_type", "instagram");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_invite"
eventMap["invite_type"] = "instagram"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_invite"
event["invite_type"] = "instagram"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_invite" forKey:@"event"];
[event setValue:@"instagram" forKey:@"invite_type"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_invite";
    event["invite_type"] = "instagram";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_invite";
    event["invite_type"] = "instagram";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map invite = {};
invite["event"] = "w_invite";
invite["invite_type"] = "instagram";
DOT.logEvent(invite);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_invite",
              invite_type : "instagram"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_invite",
    invite_type : "instagram"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
	    event : "w_invite",
	    invite_type : "instagram"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_invite");
eventDic.Add("invite_type", "instagram");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 댓글 달기

댓글 달기를 완료한 시점에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_replied");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_replied"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_replied"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_replied" forKey:@"event"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_replied";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_replied";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map replied = {};
replied["event"] = "w_replied";
DOT.logEvent(replied);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_replied"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_replied"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
		event : "w_replied"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_replied");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 리뷰 조회하기

리뷰를 조회하는 시점에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_see_review");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_see_review"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_see_review"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_see_review" forKey:@"event"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_see_review";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_see_review";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map reviewSee = {};
reviewSee["event"] = "w_see_review";
DOT.logEvent(reviewSee);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_see_review"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_see_review"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
   	 	event : "w_see_review"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_see_review");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 리뷰 작성하기

리뷰 작성을 완료한 시점에 아래 코드를 추가합니다.

#### 선택 속성

| Key | Value 예시 | Type  | 설명   |
| --- | -------- | ----- | ---- |
| g25 | 5        | float | 리뷰별점 |

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_add_review");
eventMap.put("g25", 5);  
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_add_review"
eventMap["g25"] = 5
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_add_review"
event["g25"] = 5
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_add_review" forKey:@"event"];
[event setValue:[NSNumber numberWithInt:5] forKey:@"g25"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_review";
    event["g25"] = 5;
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_add_review";
    event["g25"] = 5;
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map event = {};
event["event"] = "w_add_review";
event["g25"] = 5;
DOT.logEvent(reviewAdd);

// webview 에서 호출 할 때
var event = new Object();
event["event"] = "w_add_review";
event["g25"] = 5;

window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: event
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_add_review",
    g25 : 5,
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    	    event : "w_add_review",
            g25 : 5,
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_add_review");
eventDic.Add("g25", 5);
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 평가하기

평가하기를 완료하는 시점에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_rated");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_rated"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_rated"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_rated" forKey:@"event"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_rated";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_rated";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map rated = {};
rated["event"] = "w_rated";
DOT.logEvent(rated);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_rated"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_rated"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    	    event : "w_rated"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_rated");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

## 구독 취소하기

구독 취소하기를 완료하는 시점에 아래 코드를 추가합니다.

{% tabs %}
{% tab title="Java" %}

```java
Map<String, Object> eventMap = new HashMap<>();
eventMap.put("event", "w_unsubscribe");
DOT.logEvent(eventMap);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
val eventMap = mutableMapOf<String,Any>()
eventMap["event"] = "w_unsubscribe"
DOT.logEvent(eventMap)
```

{% endtab %}

{% tab title="Swift" %}

```swift
let event = NSMutableDictionary()
event["event"] = "w_unsubscribe"
DOT.logEvent(event)
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
NSMutableDictionary *event = [[NSMutableDictionary alloc] init];
[event setValue:@"w_unsubscribe" forKey:@"event"];
[DOT logEvent:event];
```

{% endtab %}

{% tab title="Mobile Webview" %}

```javascript
    var event = new Object();
    event["event"] = "w_unsubscribe";
    DOT.logEvent(event);
```

{% endtab %}

{% tab title="Website" %}

```javascript
    var event = new Object();
    event["event"] = "w_unsubscribe";
    WDOT.logEvent(event);
```

{% endtab %}

{% tab title="Flutter" %}

```javascript
// .dart 에서 호출 할 때 
Map unsubscribe = {};
unsubscribe["event"] = "w_unsubscribe";
DOT.logEvent(unsubscribe);

// webview 에서 호출 할 때
window.flutter_inappwebview.callHandler("DotFlutterDataBridge",JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_unsubscribe"
      }
}));
```

{% endtab %}

{% tab title="ReactNative" %}

```javascript
// .js 에서 호출 할 때 
NativeModules.DotReactBridge.logEvent(JSON.stringify({
    event : "w_unsubscribe"
}));

// webview 에서 호출 할 때
window.ReactNativeWebView.postMessage(JSON.stringify({
 	method:"logEvent",
	data : {
    	    event : "w_unsubscribe"
	}  
})); 
```

{% endtab %}

{% tab title="C#" %}

```csharp
Dictionary<string, object> eventDic = new Dictionary<string, object>();
eventDic.Add("event", "w_unsubscribe");
DOT.logEvent(eventDic);
```

{% endtab %}
{% endtabs %}

[^1]:
