# 設定方法

## グループプロファイルの設定方法 <a href="#group-profile-setup" id="group-profile-setup"></a>

データ設定 > フィールド設定(グループプロファイル) からグループプロファイルとして送信するデータのフィールドを設定できます。

この画面で、予め送信したいフィールドの名称とデータ型を設定することでデータの送信と閲覧が有効になります。設定したフィールドに応じて、データを送信するためのJavascriptコードサンプルが生成されます。

デフォルトで設定されているフィールドは以下の通りです。

<table><thead><tr><th width="154">key名</th><th>セットする内容</th></tr></thead><tbody><tr><td>group_id</td><td>グループのID。グループとして特定したい一意の値をセットする様にしてください。どの様な単位をグループと扱うか、という点に特に制限はありませんが非常に大量のユーザーが所属するグループになる設計では分析が成立しないため、適切に分割させられる単位を選択してください。</td></tr><tr><td>name</td><td>グループの表示名（Wicle内各画面の表示名としても使用されます）</td></tr><tr><td>photo</td><td>グループのプロフィール画像のURL（Wicle内各画面のアイコンとしても使用されます）</td></tr></tbody></table>

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

### 1. グループプロファイルの送信(`group_identify`) <a href="#group-identify" id="group-identify"></a>

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

```typescript
window.krt('send', 'group_identify', {
  group_id: '<GROUP_ID>',
  name: '<NAME>',
  photo: '<IMAGE_URL>',
});
```

* [ユーザープロファイル](https://docs.wicle.io/data-extension/user-profile) とは異なり、これを送信した段階ではユーザーにグループが紐付けられることはありません。あくまで、指定した`group_id`の属性情報の付与と、管理画面上でグループの詳細を閲覧したり検索するためのデータの設定が行われます。
* 第二引数であるオブジェクトのフィールドは`group_id`を除き全てオプショナルです。データを更新しないキーは、キー自体の記述を除くことで意図しないデータ更新を防ぐことができます。
* `group_id`には必ず一意な値を設定してください。

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

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

### 2. イベントにグループを紐付ける(`set_group`) <a href="#set-group" id="set-group"></a>

グループプロファイルの送信ではグループ情報の登録が行われる一方で、この実装では`set_group`を実行した以降に発生するイベントがどのグループに属するものかを示すことができます。

```typescript
window.krt('local', {
  wicle: {
    method: 'set_group',
    group_id: '<GROUP_ID>',
  },
});
```

* `group_id` の値を現在の行動のコンテキストとして適切なものをセットすることで、以降このユーザーが発生させる全てのイベントが指定したグループに紐付きます。
* グループが切り替わる場合は、同コードで別の`group_id`を指定します。
* 一度に複数のグループを指定することはできません。1つに指定できる単位をグループとしてください。
* デバイスが切り替わりさらに`set_group`が実行されていなかったケースでも、内部的に最後に紐づけられた`group_id`が自動で引き継ぎます。その為、グループの所属をリセットしたい（どのグループにも所属していない状態にしたい）場合、`group_id`に `null` をセットして`set_group`を実行してください。

{% hint style="info" %}
コンテキストのセットではイベント送信は発生しない為、投機的に実行しても問題ありません。

例えば、グループを簡単に切り替えることができるサービスの場合、グループが変化した瞬間に都度 set\_group を実行することがもし難しい場合、以下の様にタイマー処理でその時点のグループ情報をセットし続けるということも可能です。
{% endhint %}

```javascript
setInterval(() => {
  window.krt('local', {
    wicle: {
      method: 'set_group',
      group_id: getCurrentGroupId(), // getCurrentGroupId() は現在のグループIDを取得する関数と仮定
    },
  });
}, 300);
```

### あるユーザーに複数のグループが紐付かないケース(シングルアカウント環境) <a href="#single-account" id="single-account"></a>

上記の通り、`set_group`は一度実行するとそのユーザーの以降の行動はグループ情報が自動で引き継がれます。

ただし、長期間(約30日以上)行動が発生しない状態から復帰した場合などで引き継ぎができない可能性がある為、アクセス時に1度は実行する実装を推奨致します。

### あるユーザーに複数のグループが紐付くケース(マルチアカウント環境) <a href="#multi-account" id="multi-account"></a>

この場合は、グループの切り替えが発生する度に`set_group`を実行することで適切な`group_id`を各イベントに紐付けることができます。

切り替えをhookにする実装が難しい場合は、短時間のインターバル処理等で現在有効なグループを常にセットし続けるといった実装も可能です。

あるユーザーが複数タブで操作をしている場合にグループを個別で切り替えるなどの複雑なケースでも紐づけられた`group_id`は[SessionStorage](https://developer.mozilla.org/ja/docs/Web/API/Window/sessionStorage)および[LocalStorage](https://developer.mozilla.org/ja/docs/Web/API/Window/localStorage)で保持する為、同一タブ内である限りは混在せずそれぞれの`group_id`を引き継ぎながらイベント計測が行われます。

詳細は[こちらのドキュメント](https://docs.wicle.io/group-analytics/other_spec#yzgagurpunisuru)も参照ください。

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

### 1. グループプロファイル <a href="#block-5675612f0c9347e0b59b471915587a81" id="block-5675612f0c9347e0b59b471915587a81"></a>

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

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

<figure><img src="https://1516189518-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhDtk9aBzYOvC8RRWtKCd%2Fuploads%2F4BkVsuRMaGKhJIQ0OssS%2F%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%81%9F%E7%94%BB%E5%83%8F_2024_10_21_23_31.png?alt=media&#x26;token=fc5ed0f5-3234-496f-ac58-a24d6b414a18" alt=""><figcaption></figcaption></figure>

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

### 2. イベントにグループを紐付ける <a href="#verify-set-group" id="verify-set-group"></a>

グループプロファイルと同様にChrome拡張上で確認することができます。

`set_group`が正しく実行されていれば以下の様に「Event Meta」セクションのGroup IDの欄にセットしたID文字列が表示されます。

<figure><img src="https://1516189518-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhDtk9aBzYOvC8RRWtKCd%2Fuploads%2FpUo7lpHyKVReBb7SXSKR%2F%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%81%9F%E7%94%BB%E5%83%8F_2024_10_21_23_36.png?alt=media&#x26;token=a1a91606-ed80-47c5-b086-d03d32a41cd4" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
`set_group`の処理はアプリケーション側で実行されるため、viewイベントなどタグ読み込み後即座に送信されるイベントでは多くの場合Group IDが表示されません。

その場合はクリック等のイベントでGroup IDをご確認ください。

また、Chrome拡張上ではGroup IDが認識されていないイベントもデータ解析時の補正処理でGroup IDのセットが行われます。
{% endhint %}

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

* `group_id`はString型で256文字以下である必要があります。

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

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

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

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

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

サンプル

```
group_id,int_field,string_field,boolean_field
group1,123,ABC,true
group2,456,DEF,false
```

### 注意事項 <a href="#import-notes" id="import-notes"></a>

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