> For the complete documentation index, see [llms.txt](https://document.wisetracker.co.kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://document.wisetracker.co.kr/audience/user-management/user-list/data-upload.md).

# 데이터 업로드

본격적으로 유저 데이터를 업로드하기 전, 유저 데이터 속성이 먼저 정의되어야 합니다. 아래 단계에 따라 진행해주세요! 🧭

## [**STEP 1. &#x20;**<mark style="color:red;">**유저 데이터 속성 정의 >**</mark>](#step-1)

## [**STEP 2. &#x20;**<mark style="color:red;">**유저 데이터 업로드 >**</mark>](#step-2)

***

*오디언스 > 유저관리 > 유저 리스트 >*`유저 데이터 관리`버튼을 눌러주세요.

<figure><img src="/files/6XqvkgkfGEnUCpGSXaCR" alt=""><figcaption></figcaption></figure>

***

#### **STEP 1.&#x20;**<mark style="color:red;">**유저 데이터를 연동하기 전, 유저 데이터로 관리할 속성을 먼저 정의합니다.**</mark>&#x20;

## **① 속성값 정의**

UD1 (유저속성1) 부터 UD6 (유저속성6) 까지 6개의 항목은 아래와 같이 사전 정의된 속성으로, 변경할 수 없습니다.

사전 정의 속성 이외의 추가 데이터항목이 필요한 경우, UD7 \~ UD50 속성을 정의하여 이용해주세요.

### 🧩사전정의 유저 속성

<table data-full-width="false"><thead><tr><th width="220">유저속성</th><th>값 (정의)</th></tr></thead><tbody><tr><td>UD1</td><td>회원명</td></tr><tr><td>UD2</td><td>성별</td></tr><tr><td>UD3</td><td>휴대폰번호</td></tr><tr><td>UD4</td><td>이메일</td></tr><tr><td>UD5</td><td>주소</td></tr><tr><td>UD6</td><td>상세주소</td></tr></tbody></table>

<figure><img src="/files/OQ7UtyFhQMiFXj7MmU8X" alt="" width="563"><figcaption></figcaption></figure>

<table data-header-hidden><thead><tr><th width="185"></th><th></th></tr></thead><tbody><tr><td>속성 코드</td><td><p>사용할 속성코드를 선택합니다. </p><p>✅<code>UD1</code> ~ <code>UD6</code> 고정 / <code>UD50</code> 까지 이용 가능</p></td></tr><tr><td>속성 이름</td><td>수집할 유저 데이터 속성 항목을 입력합니다.<br>✅<code>UD1</code> ~ <code>UD6</code> 고정, 수정불가 / <code>UD7</code> ~ <code>UD50</code> 커스텀 이용 가능</td></tr><tr><td>데이터 보관 방법</td><td>개인정보에 해당하는 속성은 <code>암호화 적용 후 저장</code> 옵션을 선택합니다.<br>⚠️해당 옵션은 이후 변경이 불가합니다.<br>⚠️모든 유저 속성을 암호화 처리할 경우 데이터 처리 속도가 매우 느려질 수 있습니다.</td></tr></tbody></table>

{% hint style="warning" %}
한 번 저장한 유저 속성 데이터 항목은 이후 삭제 불가합니다. 반드시 확인 후 저장해주세요.
{% endhint %}

***

#### **STEP 2. 데이터 업로드**

{% hint style="success" %}
유저 데이터를 업로드하는 방법은 아래와 같습니다. 편한 방법을 선택하여 진행해주세요.

<mark style="background-color:green;">개발자 도움 필요하지 않음</mark>

* [x] [직접 등록](#id-2)
* [x] [CSV 파일 업로드](#id-3-csv)

<mark style="background-color:orange;">개발자 도움 필요</mark>

* [x] [API 연동 작업](#id-4-api)
* [x] 이벤트 호출 작업 (해당 방법에 대한 안내가 필요하다면, <tech@wisetracker.co.kr> 로 요청 부탁드립니다.)
  {% endhint %}

## **② 직접 등록**

*오디언스 > 유저 관리 >* `유저 데이터 관리` - `직접등록` 버튼을 클릭합니다.

유저 데이터를 입력한 후, `등록` 버튼을 눌러주세요.

<figure><img src="/files/FwxBjJRq82VVixHjyyKC" alt=""><figcaption></figcaption></figure>

## **③ CSV** 업로드 <a href="#csv-upload" id="csv-upload"></a>

1️⃣ *오디언스 > 유저 관리 >* `유저 데이터 관리` - `CSV 업로드` 버튼을 클릭하여 `CSV 템플릿 파일`을 다운로드합니다.

<div align="left"><figure><img src="/files/rqYALOU9zF0YwSpYbWJR" alt="" width="235"><figcaption></figcaption></figure></div>

{% file src="/files/vjuriN5Y9HYoA9IrOyfw" %}

<figure><img src="/files/K3hwzm0SYqhKq9jJ0hZC" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
파일 열기 시 위 이미지처럼 '**UTF-8' 확인 후 로드**해주시길 바랍니다.
{% endhint %}

{% hint style="warning" %}
**템플릿 이용 유의사항**

* 템플릿 파일의 첫 열에는 반드시 회원 아이디(MBID)를 입력해야 합니다.
* 불필요한 열은 삭제 후 업로드할 수 있습니다.
* 유저 데이터 중 Macro1\~ Macro6까지는 데이터의 의미가 고정되어 있습니다. Macro7 부터 Macro50 까지는 사용자가 정의해서 사용 가능합니다. [표](#undefined)를 참고하여 각 Macro별 정확한 데이터가 업로드 되도록 합니다.

⚠️ 정확한 데이터가 입력되지 않을 시 오류가 발생할 수 있으니 주의해주세요.

⚠️ 메시지 발송시 속성을 변수로 사용할 수 있습니다. 해당 속성에 입력되지 않은 **유저의 데이터가 있다면 공란으로 발송될 수 있습니다.**

⚠️ <mark style="color:red;">**Macro3 ‘전화번호’ 열의 셀 서식은 반드시**</mark><mark style="color:red;">**&#x20;**</mark><mark style="color:red;">**`텍스트`**</mark><mark style="color:red;">**로 설정해주세요.**</mark>
{% endhint %}

2️⃣ **회원아이디 MBID를 포함한 템플릿의 열 개수**를 선택하고 CSV 파일을 업로드합니다.&#x20;

{% hint style="warning" %}

* 업로드할 템플릿의 열 개수와 일치하는지 반드시 확인해주세요.
* 파일명은 **영어**로 저장해주시기 바랍니다.
* 파일 저장 시 파일 형식은 아래와 같이 반드시 **CSV (쉼표로 분리)** 로 선택하여 주시기 바랍니다.

  ⚠️`CSV UTF-8(쉼표로 분리)` 로 설정 시 파일이 정상적으로 업로드되지 않을 수 있습니다.

<img src="/files/4irAAbUyKEg3HKdAfNyO" alt="" data-size="original">
{% endhint %}

<mark style="color:blue;">**예시)**</mark>

아래의 파일을 업로드하는 경우, 열의 개수는 **`6개`** 로 선택합니다.

<figure><img src="/files/8R07rXvWK1fYynuXFZ75" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/9yjqCurpdQg9wqIP0szC" alt=""><figcaption></figcaption></figure>

3️⃣ 업로드한 파일의 데이터가 맞게 잘 들어갔는지 확인합니다.

<figure><img src="/files/D2lwt2jbsRUBDLkrDki8" alt=""><figcaption></figcaption></figure>

➊ 회원아이디(MBID) 를 비롯하여 고정값인 Macro1 \~ Macro6 의 속성명은 변경할 수 없습니다. Macro7\~ Macro50 속성의 경우 변경이 가능합니다.

➋ 아래의 두 옵션 중 원하는 데이터 업로드 방식을 택하여 `Start sync` 버튼을 눌러주세요.

* [ ] 중복된 열은 업데이트 하고, 새로운 열은 추가 합니다.
* [ ] 기존의 모든 데이터를 삭제하고 업로드하는 데이터 기준으로 다시 생성합니다.

{% hint style="warning" %}
덮어쓰여져 훼손된 데이터는 복구해드리지 않으니 반드시 신중하게 진행해주세요 ! 👀
{% endhint %}

## ④ API 연동 <a href="#api" id="api"></a>

| METHOD            | POST                                                                                |
| ----------------- | ----------------------------------------------------------------------------------- |
| HOST              | <https://analytics.wisetracker.co.kr/console/v1/api/userdata/apiForUserDataSync.do> |
| Requset Parameter | \***profileNo**                                                                     |
| Request Header    | \***authToken**                                                                     |
| Requset Body      | \***JSON Object**                                                                   |

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

<figure><img src="/files/fdb9sj7kEReVFsUPqKzn" alt=""><figcaption></figcaption></figure>

\[서비스 설정] → \[어플리케이션 설정]에서 서비스 번호 확인
{% endtab %}

{% tab title="authToken " %}

<figure><img src="/files/S8nQMNlRJjj4HJzzmJzj" alt=""><figcaption></figcaption></figure>

\[서비스 설정] → \[메시지 설정]에서 accessToken 확인
{% endtab %}

{% tab title="JSON Object" %}

* mbid: 유저를 구분하는 고유(Unique)한 값입니다.

* userdata: 유저와 관련된 데이터입니다.
  {% endtab %}
  {% endtabs %}

* REQUEST 예시

```
POST <https://analytics.wisetracker.co.kr/console/v1/api/userdata/apiForUserDataSync.do?profileNo=00000>
authToken: Q5MXn+tcAH2xxxxxxxxxxxxabcdabacdabadcdeeee=

// 첫번째 예시, Macro#1(=UD1) 칼럼을 대상으로 데이터 추가
{
  "mbid": "hongkildong",
  "userdata": {
    "UD1": "홍길동",
  }
}

// 두번째 예시, Macro#1(=UD1), Macro#3(=UD3), Macro#7(=UD7)칼럼을 대상으로 데이터 추가
{
  "mbid": "testUserId9",
  "userdata": {
    "UD1": "hongkildong",
    "UD3": "01012345678",
    "UD7": "GOLD"
  }
}
```

* RESPONSE 예시

```
// 와이즈트래커 서버와 통신이 성공했다면, 실제 유저(User) 데이터 업로드 자체를 성공했는지와는 별개로 status와 success는 항상 200과 true가 반환됩니다. 
// 실제 성공 여부 또는 실패했다면 실패 이유는, message 키의 값을 확인해주시면 됩니다.

{
  "status": 200,
  "success": true,
  "details": "uri=/console/v1/api/userdata/apiForUserDataSync.do",
  "timestamp": "2023-07-28 13:23:53",
  "message": "유저 데이터가 업데이트 되었습니다.",
  "result": {},
  "resultCount": 0,
  "totalCount": 0,
  "lastPage": 0
}
```

## ⑤ 이벤트 호출 <a href="#userdatasync-event" id="userdatasync-event"></a>

유저를 추가하거나 값이 업데이트될 경우 다음의 이벤트를 이용합니다.&#x20;

다음의 이벤트를 이용해 유저를 삭제할 순 없습니다.

```jsx
// .dart 에서 호출 할 때 
Map userSync = {};
userSync["event"] = "w_user_data_sync";
userSync["userSyncData"] = {};
userSync["userSyncData"]["MBID"] = "aaa"; // setUser의 setMemberId와 같은 값
userSync["userSyncData"]["UD1"] = "aaa";
userSync["userSyncData"]["UD2"] = "aaa";
userSync["userSyncData"]["UD3"] = "aaa";
DOT.logEvent(userSync);

// webview 에서 호출 할 때
DotFlutterDataBridge.postMessage(JSON.stringify({
      method : "logEvent",
      data: {
              event : "w_user_data_sync",
              userSyncData: {
	              MBID : "aaa", // setUser의 setMemberId와 같은 값
	              UD1 : "aaa",
	              UD2 : "aaa",
	              UD3 : "aaa"
              }
      }
}));
```

***

##

## 유저 데이터 변경내역

최근 90일간 직접등록 또는 CSV 업로드 등 수동으로 유저 데이터를 업데이트한 내역에 대해 확인할 수 있습니다.

<figure><img src="/files/gDmkj6eWtc9WMFoG0LYS" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SayNMrV6BVfC55ukN1Om" alt=""><figcaption></figcaption></figure>

***

## 유저데이터 초기화

시스템에 저장된 유저 데이터를 모두 삭제합니다.&#x20;

<figure><img src="/files/OVjVyQPzUCXh41nda0zt" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %} <mark style="color:red;">데이터 초기화 작업은 진행 중 취소할 수 없으며, 되돌릴 수 없으니 주의하여 사용해주시길 바랍니다.</mark>
{% endhint %}
