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

# Google Analytics 4 — イベントストリーミング

> Kameleoonの実験露出イベントをサーバーサイドからGoogle Analytics 4に自動ストリーミングし、実験バリエーション別の行動分析を充実させます。

Kameleoon Google Analytics 4イベントストリーミング統合により、訪問者がKameleoon実験に露出するたびに、Google Analytics 4アカウントへ自動的にイベントを送信できます。この機能により、Google Analytics 4での分析が強化され、実験露出に関する洞察を提供し、ユーザーの行動とエンゲージメントの理解を深めます。

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

この統合はKameleoonのイベントディスパッチャーを使用して、[Google Analytics 4 HTTP API](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#transport) の **`/mp/collect`** エンドポイントを通じて、サーバーサイドのイベントをバッチ形式でGoogle Analytics 4アカウントへ送信します。

## 主なメリット

* **精密な行動洞察:** この統合は、SDKベースのプロジェクトでWeb実験や機能フラグに露出した訪問者の特定のイベントを、サードパーティツールに送信します。この詳細な追跡により、異なるバリエーションがユーザー行動にどのように影響するかを明確に把握できます。例えば、どのバリエーションがより多くのクリック、コンバージョン、その他の望ましい結果をもたらすかを観察し、最も効果的なアプローチを判断できます。
* **リアルタイムの意思決定:** この統合はリアルタイムでデータを提供します。最新の洞察を活用して、バリエーションが期待通りに機能していない場合、戦略を迅速に調整したり、成功しているバリエーションを活かすためにリソースを配分したりできます。
* **簡単なセットアップ:** Kameleoonアプリ内でサードパーティ統合を有効化できます。カスタムコードやSDK変更は不要です。

## 考慮事項

**イベント配信のタイミング:** Kameleoonサーバーは、最小30分の遅延でGoogle Analytics 4にイベントを送信します。

## 前提条件

この統合を構成するには、以下の情報が必要です:

* **Kameleoon SDK:** サーバーサイドプロジェクトにSDKがインストールされている必要があります。
* **API secret:** Google Analyticsで生成されたAPIシークレット（[こちら](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#payload)に文書化されています）。
* **Measurement ID:** Web SDKの場合、データストリームの識別子（[こちら](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference?client_type=gtag#payload)に文書化されています）。
* **Firebase app ID:** モバイルSDKの場合、Firebaseアプリの識別子（[こちら](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference?client_type=firebase#payload)に文書化されています）。

### 適切なGA4識別子の選択

GA4レポートで適切なユーザー属性を確保するには、アプリの種類に応じて正しいカスタムデータを作成する必要があります:

* **Webベースのプロジェクト（`gtag.js` を使用するWebサイト）の場合:** `ga4_client_id` という名前のカスタムデータを作成し、GA4から `client_id` を取得します（通常は `_ga` cookieに保存されています）。
* **Firebaseベースのモバイルアプリの場合:** `ga4_app_instance_id` という名前のカスタムデータを作成し、Firebase SDKから `app_instance_id` を取得します。

この区別は、Web実験や機能フラグ実験のいずれであっても、Kameleoonのすべての種類のGA4統合に適用されます。

## セットアップ

この統合はWeb実験および機能実験で使用できます。

### Web実験の場合

**Integrationページ** から統合を有効化します。

#### GA4 client IDを識別する

訪問のたびにインスタンス識別子をKameleoonバックエンドに送信する必要があります。正確な識別子はGA4のセットアップによって異なります。`gtag.js` メソッドでGA4を使用している場合は、`client_id` を送信します。以下は、当社のActivation APIを使用した `gtat.js` 実装の例です。

#### カスタムデータをセットアップする

* **Name:** `ga4_client_id`
* プロジェクトを **Select** します。
* **Retrieval method:** Kameleoon Activation API.
* **Type:** Single
* **Format:** String
* **Scope:** Visit

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/analytics/google-analytics-4/google-analytics-4-event-streaming/Capture-decran-2025-05-06-a-15.00.46.png)
</Frame>

#### Global scriptにコードを追加する

```javascript theme={null}
if(!Kameleoon.API.CurrentVisit.customData["ga4_client_id"]){

// First, create a ga4ClientId variable and obtain your GA4 client ID.
let gaClientId = null;

const getClientId = () =>{
    gtag('get', 'G-XXXXXXXXXX', 'client_id', function(clientId) {
        gaClientId = clientId;
    });
    return gaClientId !== null
}

Kameleoon.API.Core.runWhenConditionTrue(
    () => getClientId(),
    () =>{
        // Then set your Kameleoon "ga_client_id" custom data to this value using Kameleoon's Activation API
        Kameleoon.API.Data.setCustomData("ga4_client_id", gaClientId);
    },
    200
)

}
```

#### キャンペーンで統合を有効化する

Web実験を最終化する際に統合を追加します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/analytics/google-analytics-4/google-analytics-4-event-streaming/Capture-decran-2025-04-29-a-16.34.40-1536x407.png)
</Frame>

### 機能実験の場合

機能フラグ環境の **Integrations** セクションで統合をセットアップします。アクティブにしたい各環境で有効化します。

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/analytics/google-analytics-4/google-analytics-4-event-streaming/Capture-decran-2025-06-02-a-10.37.49-1.png)
</Frame>

### モバイルの場合

FirebaseアプリでGA4 analyticsを使用している場合は、**Firebase app instance ID** を送信する必要があります。

以下はKameleoon Android SDKを使用した例です:

1. GA4 Firebase app instance IDを識別する
2. カスタムデータをセットアップする
   * **Name:** `ga_app_instance_id`
   * プロジェクトを **Select** します。
   * **Retrieval method**: Kameleoon SDK method.
   * **Type:** Single
   * **Format:** String
   * **Scope:** Visit

<Frame>
  ![](https://storage.googleapis.com/kameleoon-storage-documentation/user-manual/images/integrations/as-a-destination/analytics/google-analytics-4/google-analytics-4-event-streaming/Capture-decran-2025-05-06-a-15.09.15.png)
</Frame>

#### Kameleoon Android SDKを使用したJavaの例

まず、Firebase app instance IDを取得して変数に保存します。

次に、Kameleoon SDKを使用して `ga4_app_instance_id` カスタムデータをこの値に設定します。Kameleoonインターフェースで確認できる `ga4_app_instance_id` カスタムデータの正しいインデックスを使用してください。

この例では、インデックスは `12` です:

`kameleoonClient.addData(new CustomData(12, appInstanceId));`

統合がアクティブになり、実験が公開されると、訪問者が露出するたびにKameleoonはGoogle Analytics 4に実験イベントを送信し始めます。これらのイベントは、Googleの推奨[ベストプラクティス](https://developers.google.com/analytics/devguides/collection/ga4/integration)に従って構築されます。これらのイベントには次のような主要な詳細が含まれます:

* SDKセットアップ専用のFirebaseアプリインスタンスの固有識別子（`app_instance_id` と呼ばれます）。
* Webセットアップ専用のクライアントの固有識別子（`client_id` と呼ばれます）。
* 露出時間
* `KAM-XXXX-YYYY` 形式に従う実験とバリエーションの固有識別子（`XXXX` はKameleoon実験ID、`YYYY` はバリエーションIDです）。

#### イベントペイロードの例

Kameleoonは以下の形式でイベントをGoogle Analytics 4に送信します:

```json theme={null}
{
  "events": [
    {
      "name": "experience_impression",
      "exp_variant_string": "KAM-1234-5567",
      "timestamp_micros": 1718201234000
    },
    {
      "name": "experience_impression",
      "exp_variant_string": "KAM-5678-6978",
      "timestamp_micros": 1718201267000
    }
  ],
  "app_instance_id": "example-instance-id"
}
```

##### ユーザーの識別

Kameleoonはデフォルトでは、イベントペイロードにユーザー識別子（`user_id` や `client_id` など）を含めません。識別は、環境に応じて以下のフィールドで処理されます:

* **モバイル:** `app_instance_id`（GA4モバイルアプリの標準）
* **Web:** `client_id`（Webクライアントの `app_instance_id` 相当）

WebバックエンドまたはサーバーサイドのセットアップでKameleoonを使用している場合は、GA4の `client_id` をカスタムデータフィールド（例: `ga4_client_id`）として定義することで送信できます。

このフィールドは、Activation APIに限らず、利用可能な任意の取得方法で設定できます。Kameleoonセッションごとに少なくとも1回定義されている必要があります。

##### イベントの強化

Kameleoonは、サーバー間イベントペイロードにビジネス固有のカスタムデータを含めません。

`client_id` やユーザー属性などの追加データでペイロードを強化する必要があり、Kameleoonアカウントをお持ちの場合は、SDK構成のカスタムデータフィールドを通じて追加するか、[機能リクエスト](https://feedback.kameleoon.com/)を送信できます。
