> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Segment destination actions

> Segmentのイベント、トレイト、ペルソナ、グループIDをKameleoonに転送し、トラッキングプランを再実装することなくゴールを自動作成して訪問者をターゲティングできます。

<Note>
  この機能は現在オープンベータ版であり、Segment Destination Catalogにはまだ表示されていません。WebまたはモバイルアプリでのSegment destination actionsの実装について詳しくは、[Kameleoonサポートチーム](https://www.kameleoon.com/contact)までお問い合わせください。
</Note>

このSegmentとKameleoonの連携では、Segmentによってトリガーされたすべてのイベントが自動的にKameleoonに送信されるため、開発者は既存のSegmentトラッキングプランをKameleoonで再実装する時間を節約できます。

Segmentイベント名がKameleoonアカウントの既存の[ゴール](../../../assets/goals/create-a-goal)の名前と一致する場合、このゴールに対するコンバージョンが訪問者に関連付けられます。ゴールが存在しない場合、KameleoonはSegmentイベント名を使用して[カスタムゴール](../../../assets/goals/create-a-goal#custom-goal)を作成し、コンバージョンを訪問者に関連付けます。ゴールは「`Segment.io — eventName`」という命名規則でKameleoon の[ゴールページ](../../../assets/goals/manage-goals)に表示されます。ゴールが作成されたら、実験やパーソナライゼーションで使用できます。

## Segmentのイベント、トレイト、グループ、ペルソナをKameleoonにインポートする

このSegmentとKameleoonの連携により：

* Segmentによってトリガーされたすべてのイベントが自動的にKameleoonに送信され、開発者は既存のSegmentトラッキングプランをKameleoonで再実装する時間を節約できます。[Page](https://segment.com/docs/connections/spec/page/)、[Screen](https://segment.com/docs/connections/spec/screen/)、[Track](https://segment.com/docs/connections/spec/track/)イベントは自動的にKameleoonカスタムゴールとして収集されます。実験／パーソナライゼーションで、またはWebサイトやモバイルアプリで特定のアクションを実行したユーザーをターゲティングするためにこれらのいずれかを使用できます。
* [Audience Entered](https://segment.com/docs/personas/using-personas-data/#event-destinations) または [Audience exited](https://segment.com/docs/personas/using-personas-data/#event-destinations) タイプのTrackイベントは、ユーザーペルソナをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。
* トレイト付きの [identify](https://segment.com/docs/connections/spec/identify/) タイプのTrackイベントは、特定のトレイトを持つユーザーをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。
* [group](https://segment.com/docs/connections/spec/group/) タイプのTrackイベントは、グループIDをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。

## 考慮事項

Kameleoonへのイベント送信時には、以下に注意してください：

* 使用したい各Segmentプロジェクトでこの連携を有効化する必要があります。
* この連携を有効化するには、Kameleoonの有料プランが必要です。
* 両方のツールで同じ識別子システムを使用して、[SegmentユーザーをKameleoon訪問者と一致させる](#segmentユーザーとkameleoon訪問者を一致させる)必要があります。
* この連携には[技術的な制限](#制限)があります。
* Segmentは、すべてのユーザー、イベント、グループプロパティをイベントとともに送信します。

## 制限

Kameleoonイベントに関連する制限は以下のとおりです：

* イベントデータの最大サイズ：1 MB
* 10秒間に作成できるKameleoonゴール：最大50個
* 60分間に作成できるKameleoonゴール：最大1000個

## セットアップ

### 前提条件

SegmentからKameleoonへのEvent Streaming連携を構成するには、Kameleoonから以下の情報が必要です：

* **REST API Key：** Kameleoonへのデータ送信を開始するには、APIキーが必要です。詳細については [**APIキーを生成する**](#kameleoonのセットアップ) セクションを参照してください。
* **Sitecode**：この連携で使用するプロジェクトのSitecodeを提供する必要があります。Sitecodeの場所については、[専用のKameleoonドキュメント](../../../faq#how-do-i-find-my-sitecode)を参照してください。

### Kameleoonのセットアップ

Segmentからの連携をセットアップできるよう、**APIキー** と **Sitecode** を準備してください。

#### APIキーを生成する

APIキーを生成するには：

1. クライアントIDとクライアントシークレットを取得します。これらは[プロファイルページ](../../../faq#how-do-i-find-my-sitecode)で確認できます。
2. クライアントIDとシークレットを使用して、以下のURLでAPIキーを生成します：

`https://integrations.kameleoon.com/segmentio/getapikey?id=**[CLIENT ID]**&secret=**[CLIENT SECRET]**`

#### Sitecodeを取得する

プロジェクトのSitecodeは、プロジェクトダッシュボードで確認できます。Sitecodeの場所については、[専用のKameleoonドキュメント](../../../faq#how-do-i-find-my-sitecode)を参照してください。

### Segmentのセットアップ

1. SegmentのWebアプリで、**Catalog** > **Destinations** > **Destinations Actions** > **Add destination** をクリックします。
2. Kameleoon (Actions) に接続したいSourceを選択します。
3. **Confirm Source** をクリックします。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/cdp/segment-destination-actions/0.png)
</Frame>

4. **Basic Settings** サイドパネルで、必要なフィールドを入力します：
   * **Name**：Segmentでこのデスティネーションを識別するための名前を入力します。
   * **API Key**：KameleoonのAPIキーを貼り付けます。
   * **Sitecode**：Kameleoonプロジェクトのsitecodeを貼り付けます。[プロジェクトダッシュボード](../../../faq#how-do-i-find-my-sitecode)で確認できます。

5. **Enable Destination** トグルをクリックします。

6. **Save Changes** をクリックします。

### SegmentユーザーとKameleoon訪問者を一致させる

この連携では、両方のツールで同じ識別子システムを使用する必要があります。Segmentは **`userId`** を使用するのに対し、Kameleoonは **`kameleoonVisitorCode`** を使用します。転送されたSegmentイベントをトリガーした訪問者を識別するために、Segmentイベントに `kameleoonVisitorCode` を含める必要があります。

プロジェクトでKameleoon Web Experimentsを使用している場合、Kameleoonは訪問者にランダムに割り当てられるKameleoon Visitor Codeと呼ばれる匿名の一意の識別子を含むCookieを配置します。このIDは、訪問者を一意に識別するために使用されます。

ブラウザのCookieから `kameleoonVisitorCode` を取得するには、以下のコードを使用します：

```javascript theme={null}
// Retrieve kameleoonVisitorCode - client-side cookies
 const parseCookie = (str) =>
     str
         .split(";")
         .map((v) => v.split("="))
         .reduce((acc, v) => {
             acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim());
             return acc;
         }, {});
 const {kameleoonVisitorCode} = parseCookie(document.cookie);
```

すべてのSegmentイベントに `kameleoonVisitorCode` を追加するには、以下の[ミドルウェア](https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/middleware/)コードをWebサイトに追加できます：

```javascript theme={null}
analytics.addSourceMiddleware(({ payload, next, integrations }) => {
     const event = payload.obj;
     const kamVC = Kameleoon.API.Visitor.code;
     switch (event.type) {
       case "track":
          payload.obj.properties.kameleoonVisitorCode = kamVC;
          break;
       case "page":
         payload.obj.properties.kameleoonVisitorCode = kamVC;
         break;
       case "identify":
         payload.obj.traits.kameleoonVisitorCode = kamVC;
         break;
     }
     next();
   });
```

**プロジェクトがモバイルアプリの場合**、関連するSegmentライブラリを使用して同じミドルウェアを作成できます：

* [iOS](https://segment.com/docs/connections/sources/catalog/libraries/mobile/ios/middleware/) の場合
* [Android](https://segment.com/docs/connections/sources/catalog/libraries/mobile/android/middleware/) の場合

**プロジェクトがサーバーサイドの場合**、[Plugin Architecture](https://segment.com/docs/connections/sources/catalog/libraries/server/node/#plugin-architecture) を使用してミドルウェアを作成できます：

* [Node.js](https://segment.com/docs/connections/sources/catalog/libraries/server/node/#plugin-architecture) の場合
* [C#/.NET](https://segment.com/docs/connections/sources/catalog/libraries/server/csharp/#eventplugin) の場合

イベント関数の動作を再定義できる `EventPlugin` を使用することもできます。あるいは、`EventPlugin` と同様に動作するものの、特定のデスティネーションに合わせて調整された `DestinationPlugin` を選択することもできます。

以下は C# Pluginの例です：

```c# theme={null}
class KameleoonEnrichment : Plugin
{
    public override PluginType Type => PluginType.Enrichment;
    public override RawEvent Execute(RawEvent incomingEvent)
    {
        incomingEvent.Context["kameleoonVisitorCode"] = "PUT THE VISITOR CODE HERE";
        return incomingEvent;
    }
}
```

**WebサイトでKameleoon Web Experimentationを使用している場合**、以下のコードをグローバルカスタムスクリプトに追加できます：

```javascript theme={null}
const addVisitorCodeToEventsPayload = ({ payload, next, integrations }) => {
     payload.obj.properties.kameleoonVisitorCode = window.Kameleoon.API.Visitor.code;
     next(payload);
 };
 Kameleoon.API.Core.runWhenConditionTrue(
     () => typeof window.analytics?.addSourceMiddleware === "function",
     () => analytics.addSourceMiddleware(addVisitorCodeToEventsPayload),
     100
 );
```

Segmentへのイベントアップロードの詳細については、[専用のドキュメントページ](https://segment.com/docs/connections/spec/) を参照することをお勧めします。

### 自動作成されたゴールを取得する

前述のように、KameleoonはSegmentイベント名を使用して[カスタムゴール](../../../assets/goals/create-a-goal#custom-goal)を作成し、コンバージョンを訪問者に関連付けます。作成されたゴールの名前は「SegmentIO」で始まり、イベントタイプとイベント名が続きます。

**例：** イベント名が「Clicked on Checkout」の場合、生成されるゴール名は「SegmentIO track - Clicked on Checkout」になります。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/cdp/segment-destination-actions/1.png)
</Frame>

さらに、自動作成されたゴールには「segment.io」タグが付与されます。

これらの自動作成されたゴールを見つけるには、ゴールダッシュボードに移動し、サイドパネルのタグフィルタを使用して「segment.io」タグを持つゴールを検索します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/cdp/segment-destination-actions/2.png)
</Frame>

### 自動作成されたゴールの名前変更または削除

SegmentからイベントをKameleoonが受信すると、Kameleoonは（命名規則を考慮して）一致するゴール名を探して既存の関連ゴールを検索します。ゴール名を変更すると、Kameleoonはそれを見つけられません。Kameleoonは、Segment.ioイベント名と一致する名前で新しいゴールを作成します（以前のゴールコンバージョンは引き続き以前のゴールに関連付けられます）。

そのため、ゴール名を変更したい場合は、Segmentイベント名も新しいゴール名に合わせて変更することを推奨します。

新しいイベント名に合わせてSegmentイベントの名前を変更することを決めた場合も、ゴール名を変更することを推奨します。

ゴールを削除することを決めた場合、Kameleoonはそれを見つけられません。Kameleoonは、Segmentイベント名と一致する名前で新しいゴールを作成します。新しいゴールであるため、すべてのゴールコンバージョンが失われます。

### 自動ゴールコンバージョン

これでゴールが生成されたので、Kameleoonはコンバージョンをゴールに関連付け始めます。前述のように、Segmentイベント名がKameleoonアカウントの既存の[ゴール](../../../assets/goals/create-a-goal)の名前と一致する場合、このゴールのコンバージョンが訪問者に関連付けられます。

**Goals** ダッシュボードで、Segmentゴールの **Edit** ボタンをクリックすると、以下のポップアップが表示されます：

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/cdp/segment-destination-actions/3.png)
</Frame>

<Note>
  **表示されているメッセージ「*カスタムゴールのコンバージョンをトリガーするには、JavaScript Activation APIを使用するか、バックエンドサーバー言語に対応するSDKを使用します（NodeJSの例）*」は気にしないでください。**
</Note>

Kameleoonが受信したイベントは自動的にゴールコンバージョンをトリガーするため、Segmentゴールをトリガーするためのフロントエンドまたはバックエンドコードを実装する必要はありません。関連するSegmentイベントがトリガーされてKameleoonに転送されると、ゴールは自動的に変換されます。

## Segment Destination Actions機能の活用

[Destination Actionsフレームワーク](https://segment.com/docs/connections/destinations/actions/) は、Segmentがソースから受信したイベントデータをアクションベースのデスティネーションに送信する方法を確認・制御できるようにすることで、従来のデスティネーションを改良しています。デスティネーション内の各アクションは、必要なイベントデータと任意のイベントデータをリストします。

### 機能

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/cdp/segment-destination-actions/4.png)
</Frame>

* **Filters**：デスティネーションフィルタを使用すると、イベント、プロパティ、ユーザートレイトがデスティネーションに到達するのを送信またはブロックできます。デスティネーションフィルタは、特定のソースのデスティネーションインスタンスレベルで適用されます。有効化されたフィルタは、このデスティネーションへ転送中のすべての一致するイベントに適用されます。高度な機能の詳細については、[Destination Filters APIのドキュメント](https://docs.segmentapis.com/tag/Destination-Filters)を参照してください。
* **Mappings**：ソースからデスティネーション（Kameleoon）へのデータマッピングを構成します。
* **Event tester**：イベントがデスティネーションに配信されることを確認するために、イベントペイロードを生成してテストイベントを送信します。[ドキュメントを参照](https://segment.com/docs/guides/best-practices/how-do-I-test-my-connections)。
* **Alerts**：24時間以内にこのデスティネーションの配信率が特定のしきい値を下回った場合のアラートを購読します。
* **Event delivery**：Event Deliveryツールを使用すると、データがデスティネーションに到達しているかを把握し、Segmentがソースデータを配信する際に問題が発生したかを確認できます。[専用のドキュメントを参照](https://segment.com/docs/connections/event-delivery/)。
* **Functions**：接続されたデスティネーションへ送信する前に、イベントペイロードに対してカスタム変換を実行するためにinsert関数を使用します。既存のinsert関数を使用するには、カタログからこのデスティネーションに接続します。

## クラシックKameleoonデスティネーションからの移行

クラシックKameleoonデスティネーションから移行するには、以下の3つのステップに従います：

### 訪問者の識別

* 正確な訪問者トラッキングのために、Segmentイベントに `kameleoonVisitorCode` を含めます。

### マッピング、フィルタ、テスト

* デスティネーション構成ページでマッピングとフィルタを定義します。
* 正確なゴール作成とコンバージョントラッキングを確保するためにイベントをテストします。

### 有効化

* すべてのテストと準備が完了したら、Kameleoon (Actions) デスティネーションを有効化します。
* クラシックKameleoonデスティネーションを無効化します。

## ペルソナ、トレイト、グループ

Kameleoonでは、[Segmentペルソナ](https://segment.com/docs/personas/) に基づいてユーザーをターゲティングできます：特定のプロパティトレイトを持つグループです。

ペルソナ、トレイト、グループIDをセグメントビルダーで使用するには、選択したプロジェクト用のKameleoonアカウントで[カスタムデータをセットアップ](../../../assets/custom-data/create-custom-data)する必要があります。

### ペルソナ

カスタムデータの名前を選択できます（例：SegmentIO personas）。カスタムデータは **List of string** タイプである必要があります。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-source/cdp/segment-destination-actions/image-40-1920x952.png)
</Frame>

<Note>
  以下のガイドラインはWeb Experimentationのみに従ってください。
</Note>

カスタムデータの取得方法に以下のコードを使用できます：

```javascript theme={null}
window.k_segmentIO = window.k_segmentIO || {};
 if(!window.k_segmentIO.runtime)
 {
     window.k_segmentIO.runtime = true;
```

セットアップに応じて、ユーザーIDを取得するための適切なロジックを決定する必要があります。

訪問者コードを送信するためにトラックイベント呼び出しを使用してきた場合は、以下の行を使用します：

`const user_id = Kameleoon.API.Visitor.code;`

または、KameleoonのVisitor CodeをSegmentユーザーIDとして使用するか、Segmentのanalyticsオブジェクトからユーザー IDを取得する必要がある場合は、以下の行を使用します：

```javascript theme={null}
const user_id = window.analytics.user().id() || window.analytics.user().anonymousId(); 

`Kameleoon.API.Data.retrieveDataFromRemoteSource(`COHORTS_${user_id}`, cohorts => {     window.k_segmentIO.cohorts = cohorts && cohorts !== '{}' ? Object.keys(cohorts).filter(key => cohorts[key]) : []; });``
 }
 if(!window.k_segmentIO.cohorts || !window.k_segmentIO.cohorts.length) return;
 return {"value": window.k_segmentIO.cohorts, "overwrite": true};
```

<Note>
  サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。

  当社のSDKは `getRemoteData()` メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。

  最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります： `IDENTIFY{user_id}`。
</Note>

### KameleoonでSegmentペルソナ名を取得する

**Next** をクリックし、**Save the values for the targeting condition associated with the custom data point** オプションを有効化します。以下のJSコードを追加し、`XXXXXXXXX` をKameleoon Sitecodeに置き換えます。Sitecodeの見つけ方については、[このドキュメント](../../../faq#how-do-i-find-my-sitecode) を参照してください。

```javascript theme={null}
var xhr = new XMLHttpRequest();
xhr.open("GET", '[https://api-data.kameleoon.com/data?key=common&siteCode=XXXXXXXXX](https://api-data.kameleoon.com/data?key=common&siteCode=XXXXXXXXX)', false);
var SegmentIOPersonas = [];
xhr.onreadystatechange = function() { 
   if(this.readyState === 4) {
     var segmentIOcohorts = JSON.parse(xhr.response);
	  if (segmentIOcohorts && segmentIOcohorts.cohorts) {
		  segmentIOcohorts.cohorts.forEach(persona => SegmentIOPersonas.push({value: persona, label: persona}) );

	   }
   }
}
xhr.send();
return SegmentIOPersonas;
```

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-source/cdp/segment-destination-actions/Capture-decran-2024-03-12-a-14.40.02.png)
</Frame>

**Validate** をクリックしてカスタムデータを作成します。

これで完了です！セグメントビルダーで [Segment Personas](https://segment.com/docs/personas/) を使用できるようになりました。**is among the values** 演算子を選択すると、利用可能なペルソナのリストが表示されます。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-source/cdp/segment-destination-actions/image-39-1920x952.png)
</Frame>

### トレイト

セグメントビルダーでキャンペーンをターゲティングするためにトレイトを使用するには、トレイトタイプごとに1つのカスタムデータを作成する必要があります。Webサイトでサブスクライブしているプランに基づいてユーザーをターゲティングしたいとしましょう。Webサイトには、freemium、scale、enterpriseの3つの異なるプランがあります。「Subscribed Plan」というカスタムデータを[セットアップ](../../../assets/custom-data/create-custom-data)する必要があり、カスタムデータは「string」タイプである必要があります。

<Note>
  以下のガイドラインはWeb Experimentationのみに従ってください。
</Note>

カスタムデータの取得方法に以下のコードを使用できます：

```javascript theme={null}
window.k_segmentIO = window.k_segmentIO || {};
 if(!window.k_segmentIO.runtime)
 {
     window.k_segmentIO.runtime = true;
```

セットアップに応じて、ユーザーIDを取得するための適切なロジックを決定する必要があります。

訪問者コードを送信するためにトラックイベント呼び出しを使用してきた場合は、以下の行を使用します：

`const user_id = Kameleoon.API.Visitor.code;`

または、KameleoonのVisitor CodeをSegmentユーザーIDとして使用するか、SegmentのanalyticsオブジェクトからユーザーIDを取得する必要がある場合は、以下のコードを使用します：

```javascript theme={null}
const user_id = window.analytics.user().id() || window.analytics.user().anonymousId(); 
   
  Kameleoon.API.Data.retrieveDataFromRemoteSource(`IDENTIFY_${user_id}`, segment_identify_properties => {
         if(segment_identify_properties && segment_identify_properties.traits && segment_identify_properties.traits.plan){
             window.k_segmentIO.plan = segment_identify_properties.traits.plan;
         }
     });
 }
 if(!window.k_segmentIO.plan) return;
 return {"value": window.k_segmentIO.plan, "overwrite": true};
```

<Note>
  サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。

  当社のSDKは `getRemoteData()` メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。

  最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります： `IDENTIFY{user_id}`。
</Note>

セグメントビルダーで使用したいトレイトプロパティすべてに、同じガイドラインに従うことができます。

### グループID

セグメントビルダーでキャンペーンをターゲティングするためにグループIDを使用するには、「Group ID」というカスタムデータを[セットアップ](../../../assets/custom-data/create-custom-data)する必要があります。カスタムデータは **string** タイプである必要があります。

<Note>
  以下のガイドラインはWeb Experimentationのみに従ってください。
</Note>

カスタムデータの取得方法に以下のコードを使用できます：

```javascript theme={null}
window.k_segmentIO = window.k_segmentIO || {};
 if(!window.k_segmentIO.runtime)
 {
     window.k_segmentIO.runtime = true;
```

セットアップに応じて、ユーザーIDを取得するための適切なロジックを決定する必要があります。

訪問者コードを送信するためにトラックイベント呼び出しを使用してきた場合は、以下の行を使用します：

`const user_id = Kameleoon.API.Visitor.code;`

または、KameleoonのVisitor CodeをSegmentユーザーIDとして使用するか、SegmentのanalyticsオブジェクトからユーザーIDを取得する必要がある場合は、以下の行を使用します：

```javascript theme={null}
const user_id = window.analytics.user().id() || window.analytics.user().anonymousId(); 
  
   Kameleoon.API.Data.retrieveDataFromRemoteSource(`IDENTIFY_${user_id}`, segment_identify_properties => {
         if(segment_identify_properties && segment_identify_properties.groupId){
             window.k_segmentIO.groupId = segment_identify_properties.groupId;
         }
     });
 }
 if(!window.k_segmentIO.groupId) return;
 return {"value": window.k_segmentIO.groupId, "overwrite": true};
```

<Note>
  サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。

  当社のSDKは `getRemoteData()` メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。

  最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります： `IDENTIFY{user_id}`。
</Note>
