# ユーザープロファイル

## ユーザープロファイルでできること <a href="#what-you-can-do" id="what-you-can-do"></a>

ユーザープロファイル機能を活用することで、以下のようなことが実現できます。

* ユーザー単位で任意のデータを紐付けできる
* 紐付けたデータを管理画面上で閲覧・検索できる
* デバイスを跨いで同一ユーザーを特定できる

## カスタムフィールドの設定方法 <a href="#custom-field-settings" id="custom-field-settings"></a>

<figure><img src="https://1516189518-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhDtk9aBzYOvC8RRWtKCd%2Fuploads%2F508RsMHUlD98CJOafZp3%2Fimage.png?alt=media&#x26;token=0476beb1-5516-4480-a3c1-d47ce91a8139" alt=""><figcaption></figcaption></figure>

データ設定 > フィールド設定(ユーザープロファイル) からカスタムフィールドの設定を行うことができます。\
この画面で、予め送信したいフィールドの名称とデータ型を設定することでデータの送信と閲覧が有効になります。設定したフィールドに応じて、データを送信するためのJavascriptコードサンプルが生成されます。

カスタムフィールドで設定可能なデータ型は以下の3種類です。

| データ型    | 説明                |
| ------- | ----------------- |
| String  | 文字列               |
| Number  | 数値                |
| Boolean | 真偽値（true / false） |

カスタムフィールドのキー名には以下の制約があります。

* 1〜40文字
* 使用可能文字: 半角英数字とアンダースコア（`[a-zA-Z0-9_]`）
* 先頭文字: 英字またはアンダースコア
* デフォルトフィールドおよびグループプロファイルのキー名との重複不可

{% hint style="info" %}
カスタムフィールドの作成数はプランにより上限があります。

* Freeプラン: 3個
* Growthプラン: 10個
* Customプラン: 20個
  {% endhint %}

デフォルトで使用できるフィールドは以下の通りです。

<table><thead><tr><th width="154">key名</th><th>セットする内容</th></tr></thead><tbody><tr><td>user_id</td><td><p>ユーザーのID。SignUp/SignIn後に特定できる一意の値をセットする様にしてください。</p><p>誤った値が入ると異なるユーザーのデータ同士がマージされる等の問題が発生する為ご注意ください。</p></td></tr><tr><td>name</td><td>ユーザーの表示名（Wicle内各画面の表示名としても使用されます）</td></tr><tr><td>email</td><td>ユーザーのメールアドレス</td></tr><tr><td>photo</td><td>ユーザーのプロフィール画像のURL（Wicle内各画面のアイコンとしても使用されます）</td></tr><tr><td>isInternalUser</td><td>社内ユーザーを識別するフラグ。<br>社内ユーザーならtrue、そうで無ければfalseをセットします。</td></tr></tbody></table>

## 実装方法 <a href="#implementation" id="implementation"></a>

設定画面上のサンプルコードを参考に、`window.krt` の呼び出しをサイト上へ組み込んで頂きます。

```javascript
window.krt('send', 'identify', {
  user_id: '<USER_ID>',
  name: '<NAME>',
  email: '<EMAIL>',
  photo: '<IMAGE_URL>',
  isInternalUser: true or false
});
```

* user\_idを指定すると、同一ID間でイベントデータがマージされます。これにより、デバイスが異なる場合等でも同一ユーザーとして表示されるようになります。
* 第二引数であるオブジェクトのフィールドは全てオプショナルです。データを更新しないキーは、キー自体の記述を除くことで意図しないデータ更新を防ぐことができます。
* user\_idには必ず一意な値を設定してください。設定できない場合（ログインしていないユーザーなど）、データの送信自体を行わないようにしてください。これにより意図しないユーザーのマージを防ぐことができます。

{% hint style="info" %}
`identify`はカスタムイベント送信と同様のIFですが、イベント数としてカウントされません。(請求対象外です)

また、同一端末上で再度送信がリクエストされた時、過去送信されたデータと同一であればデータ送信が抑制される場合があります。
{% endhint %}

### 実装後の確認方法 <a href="#verification" id="verification"></a>

[Wicle Chrome拡張機能](https://chromewebstore.google.com/detail/wicle/bffmcidaikenijljoemhaghdciokoeei)の最新バージョンをインストールすることで、ユーザープロファイルが正しく送信されているか確認することができます。(拡張の詳しい使用方法は [debug-event](https://docs.wicle.io/data-setting/event-tracking/debug-event "mention") をご覧ください)

以下の様に送信データが表示され、user\_id等正しくセットされているかを確認できます。

<figure><img src="https://1516189518-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhDtk9aBzYOvC8RRWtKCd%2Fuploads%2F2VYOxkpsPIVsXWsAP3aF%2Fimage.png?alt=media&#x26;token=1f8d8b14-f32f-46bf-9360-aa5833650a6b" alt=""><figcaption></figcaption></figure>

Identify(User profile)の送信履歴自体が表示されない場合はタグの実装方法に問題がある可能性があり、Payloadの値が期待値と違う場合は引数の設定方法に問題がある可能性があります。

### 注意事項 <a href="#precautions" id="precautions"></a>

* user\_idはString型で256文字以下である必要があります。

正しい送信が確認できない場合は、チャットでお気軽にお問い合わせください。

## データインポート <a href="#data-import" id="data-import"></a>

データ設定 > データインポート(ユーザープロファイル) からCSVファイルをアップロードしユーザープロファイルデータの一括更新を行うことができます。

### CSVファイル形式 <a href="#csv-format" id="csv-format"></a>

* ヘッダー行が必須です
* `user_id` 列は必須で、それ以外は更新したいフィールドの「キー」の文字列を記述してください

サンプル

```
user_id,int_field,string_field,boolean_field
user1,123,ABC,true
user2,456,DEF,false
```

### 注意事項

* ヘッダー行に`user_id` が無い場合や、フィールド設定に存在しないキー名が記述されている、データ型がフィールド設定と一致しない場合(数値型フィールドに文字列をセットするなど)はアップロード処理自体がエラーとなります
* 存在しない`user_id` のレコードは正常に処理されますが、そのレコードのデータ更新処理は行われません
* Boolean型フィールドには `true` または `false` の文字列を指定してください（大文字小文字は区別しません）
* データインポートにより更新したフィールドをidentifyタグでもデータ送信を行なっている場合、最後に実行されたものが採用されます
  * そのため、データインポートで更新するフィールドはidentifyタグではデータ送信をしないフィールドとする、もしくは両方で更新が行われても不整合とならない形での運用が必要となります
