# 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]:


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://document.wisetracker.co.kr/v2-developer/in-app-event/event-list/basic.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
