メインコンテンツへスキップ
この機能は現在オープンベータ版であり、Segment Destination Catalogにはまだ表示されていません。WebまたはモバイルアプリでのSegment destination actionsの実装について詳しくは、Kameleoonサポートチームまでお問い合わせください。
このSegmentとKameleoonの連携では、Segmentによってトリガーされたすべてのイベントが自動的にKameleoonに送信されるため、開発者は既存のSegmentトラッキングプランをKameleoonで再実装する時間を節約できます。 Segmentイベント名がKameleoonアカウントの既存のゴールの名前と一致する場合、このゴールに対するコンバージョンが訪問者に関連付けられます。ゴールが存在しない場合、KameleoonはSegmentイベント名を使用してカスタムゴールを作成し、コンバージョンを訪問者に関連付けます。ゴールは「Segment.io — eventName」という命名規則でKameleoon のゴールページに表示されます。ゴールが作成されたら、実験やパーソナライゼーションで使用できます。

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

このSegmentとKameleoonの連携により:
  • Segmentによってトリガーされたすべてのイベントが自動的にKameleoonに送信され、開発者は既存のSegmentトラッキングプランをKameleoonで再実装する時間を節約できます。PageScreenTrackイベントは自動的にKameleoonカスタムゴールとして収集されます。実験/パーソナライゼーションで、またはWebサイトやモバイルアプリで特定のアクションを実行したユーザーをターゲティングするためにこれらのいずれかを使用できます。
  • Audience Entered または Audience exited タイプのTrackイベントは、ユーザーペルソナをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。
  • トレイト付きの identify タイプのTrackイベントは、特定のトレイトを持つユーザーをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。
  • group タイプのTrackイベントは、グループIDをターゲティングするためにセグメントビルダーで使用できるKameleoonカスタムデータとして収集されます。

考慮事項

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キーを生成する セクションを参照してください。
  • Sitecode:この連携で使用するプロジェクトのSitecodeを提供する必要があります。Sitecodeの場所については、専用のKameleoonドキュメントを参照してください。

Kameleoonのセットアップ

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

APIキーを生成する

APIキーを生成するには:
  1. クライアントIDとクライアントシークレットを取得します。これらはプロファイルページで確認できます。
  2. クライアントIDとシークレットを使用して、以下のURLでAPIキーを生成します:
https://integrations.kameleoon.com/segmentio/getapikey?id=**[CLIENT ID]**&secret=**[CLIENT SECRET]**

Sitecodeを取得する

プロジェクトのSitecodeは、プロジェクトダッシュボードで確認できます。Sitecodeの場所については、専用のKameleoonドキュメントを参照してください。

Segmentのセットアップ

  1. SegmentのWebアプリで、Catalog > Destinations > Destinations Actions > Add destination をクリックします。
  2. Kameleoon (Actions) に接続したいSourceを選択します。
  3. Confirm Source をクリックします。
  1. Basic Settings サイドパネルで、必要なフィールドを入力します:
    • Name:Segmentでこのデスティネーションを識別するための名前を入力します。
    • API Key:KameleoonのAPIキーを貼り付けます。
    • Sitecode:Kameleoonプロジェクトのsitecodeを貼り付けます。プロジェクトダッシュボードで確認できます。
  2. Enable Destination トグルをクリックします。
  3. Save Changes をクリックします。

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

この連携では、両方のツールで同じ識別子システムを使用する必要があります。Segmentは userId を使用するのに対し、Kameleoonは kameleoonVisitorCode を使用します。転送されたSegmentイベントをトリガーした訪問者を識別するために、Segmentイベントに kameleoonVisitorCode を含める必要があります。 プロジェクトでKameleoon Web Experimentsを使用している場合、Kameleoonは訪問者にランダムに割り当てられるKameleoon Visitor Codeと呼ばれる匿名の一意の識別子を含むCookieを配置します。このIDは、訪問者を一意に識別するために使用されます。 ブラウザのCookieから kameleoonVisitorCode を取得するには、以下のコードを使用します:
// 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 を追加するには、以下のミドルウェアコードをWebサイトに追加できます:
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ライブラリを使用して同じミドルウェアを作成できます: プロジェクトがサーバーサイドの場合Plugin Architecture を使用してミドルウェアを作成できます: イベント関数の動作を再定義できる EventPlugin を使用することもできます。あるいは、EventPlugin と同様に動作するものの、特定のデスティネーションに合わせて調整された DestinationPlugin を選択することもできます。 以下は C# Pluginの例です:
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を使用している場合、以下のコードをグローバルカスタムスクリプトに追加できます:
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へのイベントアップロードの詳細については、専用のドキュメントページ を参照することをお勧めします。

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

前述のように、KameleoonはSegmentイベント名を使用してカスタムゴールを作成し、コンバージョンを訪問者に関連付けます。作成されたゴールの名前は「SegmentIO」で始まり、イベントタイプとイベント名が続きます。 例: イベント名が「Clicked on Checkout」の場合、生成されるゴール名は「SegmentIO track - Clicked on Checkout」になります。
さらに、自動作成されたゴールには「segment.io」タグが付与されます。 これらの自動作成されたゴールを見つけるには、ゴールダッシュボードに移動し、サイドパネルのタグフィルタを使用して「segment.io」タグを持つゴールを検索します。

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

SegmentからイベントをKameleoonが受信すると、Kameleoonは(命名規則を考慮して)一致するゴール名を探して既存の関連ゴールを検索します。ゴール名を変更すると、Kameleoonはそれを見つけられません。Kameleoonは、Segment.ioイベント名と一致する名前で新しいゴールを作成します(以前のゴールコンバージョンは引き続き以前のゴールに関連付けられます)。 そのため、ゴール名を変更したい場合は、Segmentイベント名も新しいゴール名に合わせて変更することを推奨します。 新しいイベント名に合わせてSegmentイベントの名前を変更することを決めた場合も、ゴール名を変更することを推奨します。 ゴールを削除することを決めた場合、Kameleoonはそれを見つけられません。Kameleoonは、Segmentイベント名と一致する名前で新しいゴールを作成します。新しいゴールであるため、すべてのゴールコンバージョンが失われます。

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

これでゴールが生成されたので、Kameleoonはコンバージョンをゴールに関連付け始めます。前述のように、Segmentイベント名がKameleoonアカウントの既存のゴールの名前と一致する場合、このゴールのコンバージョンが訪問者に関連付けられます。 Goals ダッシュボードで、Segmentゴールの Edit ボタンをクリックすると、以下のポップアップが表示されます:
表示されているメッセージ「カスタムゴールのコンバージョンをトリガーするには、JavaScript Activation APIを使用するか、バックエンドサーバー言語に対応するSDKを使用します(NodeJSの例)」は気にしないでください。
Kameleoonが受信したイベントは自動的にゴールコンバージョンをトリガーするため、Segmentゴールをトリガーするためのフロントエンドまたはバックエンドコードを実装する必要はありません。関連するSegmentイベントがトリガーされてKameleoonに転送されると、ゴールは自動的に変換されます。

Segment Destination Actions機能の活用

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

機能

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

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

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

訪問者の識別

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

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

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

有効化

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

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

Kameleoonでは、Segmentペルソナ に基づいてユーザーをターゲティングできます:特定のプロパティトレイトを持つグループです。 ペルソナ、トレイト、グループIDをセグメントビルダーで使用するには、選択したプロジェクト用のKameleoonアカウントでカスタムデータをセットアップする必要があります。

ペルソナ

カスタムデータの名前を選択できます(例:SegmentIO personas)。カスタムデータは List of string タイプである必要があります。
以下のガイドラインはWeb Experimentationのみに従ってください。
カスタムデータの取得方法に以下のコードを使用できます:
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を取得する必要がある場合は、以下の行を使用します:
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};
サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。当社のSDKは getRemoteData() メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります: IDENTIFY{user_id}

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

Next をクリックし、Save the values for the targeting condition associated with the custom data point オプションを有効化します。以下のJSコードを追加し、XXXXXXXXX をKameleoon Sitecodeに置き換えます。Sitecodeの見つけ方については、このドキュメント を参照してください。
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;
Validate をクリックしてカスタムデータを作成します。 これで完了です!セグメントビルダーで Segment Personas を使用できるようになりました。is among the values 演算子を選択すると、利用可能なペルソナのリストが表示されます。

トレイト

セグメントビルダーでキャンペーンをターゲティングするためにトレイトを使用するには、トレイトタイプごとに1つのカスタムデータを作成する必要があります。Webサイトでサブスクライブしているプランに基づいてユーザーをターゲティングしたいとしましょう。Webサイトには、freemium、scale、enterpriseの3つの異なるプランがあります。「Subscribed Plan」というカスタムデータをセットアップする必要があり、カスタムデータは「string」タイプである必要があります。
以下のガイドラインはWeb Experimentationのみに従ってください。
カスタムデータの取得方法に以下のコードを使用できます:
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を取得する必要がある場合は、以下のコードを使用します:
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};
サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。当社のSDKは getRemoteData() メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります: IDENTIFY{user_id}
セグメントビルダーで使用したいトレイトプロパティすべてに、同じガイドラインに従うことができます。

グループID

セグメントビルダーでキャンペーンをターゲティングするためにグループIDを使用するには、「Group ID」というカスタムデータをセットアップする必要があります。カスタムデータは string タイプである必要があります。
以下のガイドラインはWeb Experimentationのみに従ってください。
カスタムデータの取得方法に以下のコードを使用できます:
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を取得する必要がある場合は、以下の行を使用します:
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};
サーバーサイド実験や機能フラグでSegmentペルソナを使用するには、各SDKのドキュメントに記載されているガイドラインを参照してください。当社のSDKは getRemoteData() メソッドを使用します。このメソッドは、Segmentが当社のサーバーに保存したデータを取得し、バックエンドコード内でアクセス可能にします。最初のパラメータとして使用する「key」値は、以下の形式に従う必要があります: IDENTIFY{user_id}