> ## 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.

# カスタムアナリティクス統合

> Mixpanel、Amplitude、Snowplow、GA4、Segment などのプラットフォームで Kameleoon Web Experimentation 実験用のカスタムアナリティクス統合をセットアップする方法。

公式の Kameleoon 統合がないプラットフォームを使用している場合、**Custom Analytics bridge** 機能を使用して独自の統合を構築できます。カスタム統合を作成するには、[ユーザーマニュアル](/user-manual/integrations/as-a-destination/analytics/custom-analytics-integration) のガイドラインに従ってください。

または、Kameleoon JavaScript エンジンが発行する [カスタム DOM イベント](../api-reference/activation-api-events) をリッスンし、お好みのツールに実験やパーソナライゼーションのイベントを送信することもできます。以下の手順に従ってください:

* ページ上のすべての [アクティブな実験やパーソナライゼーション](../api-reference/activation-api-events#kameleoonexperimentactivated) のリストを取得し、リストをループして、アナリティクスプラットフォームの API を使用して実験 ID とバリエーション ID を送信するなど、所定のアクションを実行します。
* コードは Kameleoon の実験がトリガーされアクティブ化される前または後にロード/実行される可能性があるため、コードの開始時に現在のアクティブな実験をチェックし、さらに後でアクティブ化される新しい実験についても情報を得続けるようにします。

<Note>
  実験はいつでもアクティブ化される可能性があるため（たとえば、ユーザーが特定のボタンをクリックした後のみなど）、実行時の任意の瞬間にアクティブな Kameleoon 実験についてコードがすべての必要な情報を持っていると決して仮定しないでください。将来アクティブ化される新しい実験に関するアラートを受け取るために、常にイベントリスナーを設定してください（以下のサンプルコードを参照）。
</Note>

## サンプルコード

```
var processExperimentForMyTargetPlatform = function(experiment){	// Here you should implement your own logic, depending on the APIs of your target platform	// It can be something similar to:		myTargetPlatform.addExternalData({"experimentId": experiment.id, "experimentName": experiment.name, "variationId": experiment.associatedVariation.id, "variationName": experiment.associatedVariation.name});}// Loop over the experiments; apply the same logic for personalizations as wellKameleoon.API.Experiments.getActive().forEach(processExperimentForMyTargetPlatform);window.addEventListener("Kameleoon::ExperimentActivated", function(event) {    processExperimentForMyTargetPlatform(event.detail.experiment);});
```

<Note>
  このサンプル実装では、実験が複数のページでアクティブな場合、1 つの実験に対してターゲットプラットフォームにデータが複数回渡される可能性があります。実験がアクティブなページごとに `processExperimentForMyTargetPlatform()` 関数が呼び出されます。サンプルコードを改良して、すでに処理されたすべての実験を記憶することで、データの受け渡しを 1 回に制限できます。このアプローチにより、ターゲットプラットフォームへの不要な追加サーバー呼び出しを通常は削減できます。
</Note>
