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

# Salesforce Data 360

> Salesforce Data 360 のオーディエンスと顧客属性を Kameleoon に同期して、統一されたカスタマープロファイルを使用して実験をターゲットし、エクスペリエンスをパーソナライズします。

Salesforce Data 360 で構築されたカスタマープロファイル（オーディエンスの所属や行動属性を含む）は、デフォルトでは Kameleoon から参照できません。2 つのプラットフォームを直接つなぐ仕組みがなければ、マーケティングチームや製品チームはこの統合されたカスタマーデータを使って実験をターゲティングしたり、サイト上のエクスペリエンスをパーソナライズしたりできません。

Salesforce Data 360 は、Amazon S3 や Secure File Transfer Protocol（SFTP）など、外部ファイルストレージの宛先にセグメントとプロファイル属性をアクティベートします。Kameleoon はこれらのアクティベーションファイルを取り込み、Salesforce データを `kameleoon_visitor_code` を使用して対応する Kameleoon 訪問者に関連付けます。

同期後、Salesforce オーディエンスと属性を Kameleoon カスタムデータとして公開して、Kameleoon セグメントビルダーのターゲティング条件として使用できます。

<Note>
  この統合はオンデマンドで提供されます。詳細については、カスタマーサクセスマネージャー(CSM)にお問い合わせください。
</Note>

**ユースケース：**

* 特定の Salesforce オーディエンス（例えば *高価値顧客* など）に属する訪問者をターゲットします。
* 特定の属性（例えば `customer_tier` が *Gold* など）に基づいて顧客をターゲットします。
* `loyalty_status`、`lifetime_value_band`、`churn_risk` などの行動データに基づいてエクスペリエンスをパーソナライズします。
* Salesforce データを他の Kameleoon ターゲティング条件とネイティブに組み合わせます。

***

## Salesforce Data 360 の同期がどのように機能するか

統合は、Kameleoon 訪問者コードが両プラットフォーム間の共通識別子として機能することに依存しています。

**同期は、以下の継続的なワークフローに従います：**

1. **識別子を送信する：** ユーザーの訪問中に、ウェブサイトは Kameleoon 訪問者コードを Salesforce Data 360 に送信します。
2. **データをエクスポートする：** Salesforce は定期的に、オーディエンスメンバーシップと選択した顧客属性を S3 または SFTP の宛先に公開します。
3. **データを取り込む：** Kameleoon はこれらのアクティベーションファイルを処理し、Salesforce データを対応する `kameleoon_visitor_code` に対して保存します。
4. **訪問者をターゲットする：** 訪問者の次の操作時に、Kameleoon はこの情報をカスタムデータを通じて取得し、アクティブなターゲティングセグメントに対して評価します。

***

## Salesforce Data 360 統合の前提条件

Kameleoon と Salesforce Data 360 間の統合を設定する前に、以下の要件を満たしていることを確認してください：

* Salesforce Data 360 アカウントがあり、データモデルオブジェクト、マッピング、セグメント、接続、およびアクティベーション対象を設定する管理権限があります。
* アクティブな Kameleoon プロジェクトがあります。
* Kameleoon 担当者が、プロジェクト用の特定の S3 または SFTP 接続認証情報を提供しています。

***

## ステップ 1：Kameleoon 訪問者コードを Salesforce に送信する

Salesforce プロファイルを Kameleoon 訪問者に関連付けるには、環境が Kameleoon 訪問者コードを Salesforce Interactions に送信する必要があります。

Kameleoon の **グローバルスクリプト** に以下の JavaScript を追加します。このロジックにより、スクリプトは訪問ごとに正確に 1 回だけ訪問者コードを Salesforce に送信し、Salesforce オブジェクトがページで利用可能になったときにのみ実行されることが保証されます：

```javascript theme={null}
// 現在の訪問の最初のページビューでのみ実行することを確認
if (Kameleoon.API.CurrentVisit.pageViews === 1) {
    Kameleoon.API.Core.runWhenConditionTrue(
        function () {
            // Salesforce Interactions SDK が初期化されるのを待つ
            return (
                typeof window.SalesforceInteractions !== "undefined" &&
                typeof window.SalesforceInteractions.sendEvent === "function"
            );
        },
        function () {
            // Kameleoon 訪問者コードを Salesforce に送信する
            window.SalesforceInteractions.sendEvent({
                user: {
                    attributes: {
                        eventType: "kameleoonIdentity",
                        kameleoonVisitorCode: Kameleoon.API.Visitor.code
                    }
                }
            });
        },
        500 // ポーリング間隔（ミリ秒）
    );
}
```

***

## ステップ 2：Salesforce Data 360 で訪問者コードを追加およびマップする

訪問者コードが Salesforce 環境に流れ込む状態で、Salesforce Individual Data Model Object（DMO）に、それを保存するための宛先フィールドを作成します。

### Salesforce Data 360 でフィールドを作成する

1. Salesforce Data 360 で、**Data Model** に移動します。
2. **Individual DMO** を開き、**Edit** をクリックします。
3. **Add Field** をクリックし、以下の正確な値を使用して設定します：

| Setting                     | Value                    |
| :-------------------------- | :----------------------- |
| **Field label**             | Kameleoon visitor code   |
| **Field API name**          | `kameleoon_visitor_code` |
| **Data type**               | Text                     |
| **Primary key**             | No                       |
| **Enable value suggestion** | No                       |

4. **Save** をクリックして、DMO を更新します。

### フィールドを Data Lake Object にマップする

DMO フィールドを作成しても、自動的には入力されません。受け取ったデータレイクオブジェクト（DLO）からのフィールドを、新しい DMO フィールドにマップする必要があります。

1. 関連するデータレイクオブジェクト（例えば、ウェブサイト DLO）に移動します。
2. Kameleoon 訪問者識別子を含むソースフィールドを `Individual.kameleoon_visitor_code` にマップします。

***

## ステップ 3：Salesforce と Kameleoon の間の接続を設定する

Kameleoon は、Amazon S3 または SFTP を通じた Salesforce Data 360 アクティベーションをサポートしています。Kameleoon 担当者が提供した認証情報に基づいて、以下の転送方法の 1 つを選択して設定します。

<Tip>
  Kameleoon は、統合の設定に SFTP オプションを使用することを推奨します。
</Tip>

### オプション A：Salesforce Data 360 用に Amazon S3 を設定する

1. Salesforce Data 360 で、**Data Cloud Setup** に移動します。
2. **External Integrations** で、**More Connectors** > **New** を選択します。
3. **Target** で、**Amazon S3** を選択します。
4. 接続名を入力します（例：*Kameleoon integration*）。
5. **Access Key/Secret Based authentication** を選択します。
6. Kameleoon が提供した AWS Access Key、AWS Secret Access Key、S3 バケット、および Parent Directory を入力します。
7. **Test Connection** をクリックしてから、**Save** をクリックします。
8. **Activation Targets** > **New** に移動します。
9. **File Storage** で、**Amazon S3** を選択し、新しく作成した Kameleoon 接続を選択します。
10. ファイル形式として **CSV** を選択し、対象名を入力（例：*Kameleoon audience sync*）してから、**Save** をクリックします。

### オプション B：Salesforce Data 360 用に SFTP を設定する

1. Salesforce Data 360 で、**Data Cloud Setup** に移動します。
2. **External Integrations** で、**Other Connectors** を選択します。
3. **New** をクリックして、**Target** > **Secure File Transfer (SFTP)** を選択します。
4. 接続名を入力します（例：*Kameleoon integration*）。
5. Kameleoon が提供した Kameleoon SFTP ホスト、ポート、ユーザー名、および Parent Directory を入力します。
6. SSH 秘密鍵とオプションのパスフレーズを入力します。
7. **Test Connection** をクリックしてから、**Save** をクリックします。
8. **Activation Targets** > **New** に移動します。
9. **File Storage** で、**SFTP** を選択し、新しく作成した Kameleoon 接続を選択します。
10. ファイル形式として **CSV** を選択し、対象名を入力（例：*Kameleoon audience sync*）してから、**Save** をクリックします。

***

## ステップ 4：Salesforce オーディエンスと属性を Kameleoon にアクティベートする

接続が確立されたら、Kameleoon にプッシュする特定の Salesforce Data 360 セグメントと属性を選択します。

1. Salesforce Data 360 で、**Segments** に移動します。
2. Kameleoon と同期するセグメントを選択します。
3. **Activations** タブで、**New** をクリックして、Kameleoon Audience Sync 対象を選択します。
4. **Individual** を Activation Membership オブジェクトとして選択します。
5. **Add Attributes** をクリックして、**Individual** エンティティを展開し、`kameleoon_visitor_code` を追加します。
6. Kameleoon でのターゲティングに使用する追加の Salesforce 属性を追加します（例：`customer_tier` または `churn_risk`）。

<Warning>
  `kameleoon_visitor_code` 属性は必須です。この属性がないと、Kameleoon はデータを正しい訪問者プロファイルにマップできません。
</Warning>

<Note>
  Salesforce でアクティベーション更新タイプを設定する際は、**Incremental** を選択してください。この設定により、すべての実行でオーディエンス全体を転送するのではなく、変更されたレコードのみを更新して、オーディエンスメンバーシップと属性が効率的に同期されます。
</Note>

***

## ステップ 5：グローバルスクリプトで Salesforce データを取得する

同期された Salesforce データをターゲティングに利用可能にするには、Kameleoon リモートデータストアから取得し、JavaScript Activation API を使用してカスタムデータとして登録します。

このコードを、訪問者コードを Salesforce に送信する同じグローバルスクリプトに追加してください。カスタムデータ独自の取得コードではなく、グローバルスクリプトに追加します。取得呼び出しは非同期で、コールバックが必要です。ここで一度呼び出すことにより、各属性とオーディエンスを 1 つのサーバーレスポンスから登録でき、各属性に対して別々のリモート検索をトリガーする必要がありません：

```javascript theme={null}
// 現在の訪問の最初のページビューでのみ実行することを確認
if (Kameleoon.API.CurrentVisit.pageViews === 1) {
    Kameleoon.API.Data.retrieveDataFromRemoteSource(
        Kameleoon.API.Visitor.code,
        function (data) {
            // 同期された各 Salesforce オーディエンスメンバーシップを登録
            if (Array.isArray(data.salesforce_audiences)) {
                data.salesforce_audiences.forEach(function (audience) {
                    Kameleoon.API.Data.setCustomData("Salesforce Audiences", audience);
                });
            }

            // 同期された Salesforce Customer Tier 属性を登録
            if (data.customer_tier) {
                Kameleoon.API.Data.setCustomData("Salesforce Customer Tier", data.customer_tier);
            }
        }
    );
}
```

[Activation API リファレンス](../../../../developer-docs/apis/activation-api-js/api-reference/api-reference#retrievedatafromremotesource)で、`retrieveDataFromRemoteSource()` と [`setCustomData()`](../../../../developer-docs/apis/activation-api-js/api-reference/api-reference#setcustomdata) の完全なドキュメントを確認してください。

### Feature Experimentation 向けの Salesforce データを取得する

ウェブ実験の代わりに Kameleoon Feature Experimentation で訪問者をターゲットする場合、ブラウザではグローバルスクリプトは実行されません。代わりに Kameleoon SDK を使用してデータを取得します。`getRemoteData()` でペイロードを取得し、機能フラグを評価する前に `addData()` で各値を登録します：

```javascript theme={null}
import { KameleoonClient, CustomData } from '@kameleoon/javascript-sdk';

const client = new KameleoonClient({ siteCode: 'my_site_code' });

async function init() {
    await client.initialize();

    // 訪問者コードを取得
    const visitorCode = client.getVisitorCode();

    // この訪問者の同期された Salesforce ペイロードを取得
    const jsonData = await client.getRemoteData(visitorCode);
    const data = JSON.parse(jsonData);

    // 同期された Salesforce オーディエンスメンバーシップを 1 つの呼び出しで登録。
    // 同じカスタムデータ名での繰り返しの addData() 呼び出しは、追加する代わりに
    // 前の値を置き換えるため、すべてのオーディエンスを
    // 1 つの CustomData インスタンスに対する可変長引数として渡します。
    if (Array.isArray(data.salesforce_audiences) && data.salesforce_audiences.length > 0) {
        client.addData(visitorCode, new CustomData('Salesforce Audiences', ...data.salesforce_audiences));
    }

    // 同期された Salesforce Customer Tier 属性を登録
    if (data.customer_tier) {
        client.addData(visitorCode, new CustomData('Salesforce Customer Tier', data.customer_tier));
    }

    // 追加したデータを使用して機能フラグを評価
    const isActive = client.isFeatureFlagActive(visitorCode, 'my_feature_key');
}

init();
```

[JavaScript SDK ドキュメント](../../../../developer-docs/sdks/web-sdks/js-sdk)で、`getRemoteData()`、`addData()`、`isFeatureFlagActive()` の完全なドキュメントを確認してください。Feature Experimentation の完全なワークフローについては、[外部データを使用してユーザーをターゲットする](../../../../developer-docs/feature-experimentation/targeting-and-segmentation/use-external-data-to-target-users)を参照してください。

***

## ステップ 6：Kameleoon でカスタムデータを作成する

Kameleoon は受け取った Salesforce CSV アクティベーションファイルを自動的に処理します。このデータをターゲティングに使用するには、スクリプトが設定する値に一致する Kameleoon プラットフォームで **カスタムデータ** オブジェクトを作成します。

**Settings > Custom data > New custom data** に移動し、必要なデータ型に基づいてオブジェクトを設定します。

Kameleoon カスタムデータの詳細については、[カスタムデータを作成する](../../../assets/custom-data/create-custom-data)を参照してください。

### 例 1：Salesforce オーディエンスをマップする（リストデータ）

複数の Salesforce オーディエンスでの存在に基づいて訪問者をターゲットするには、以下の設定でカスタムデータを設定します：

* **Name:** Salesforce Audiences
* **Retrieval method:** Kameleoon Activation API
* **Type:** List
* **Format:** String
* **Scope:** Visit

### 例 2：Salesforce プロファイル属性をマップする（文字列データ）

顧客層などの特定の単一プロファイル属性に基づいて訪問者をターゲットするには、以下の設定で別個のカスタムデータエントリを作成します：

* **Name:** Salesforce Customer Tier
* **Retrieval method:** Kameleoon Activation API
* **Type:** Single
* **Format:** String
* **Scope:** Visitor

<Note>
  Kameleoon Feature Experimentation で訪問者をターゲットする場合は、**Kameleoon Activation API** の代わりに、両方のカスタムデータエントリに対する取得方法として **Kameleoon SDK method** を選択してください。
</Note>

***

## ステップ 7：Kameleoon で Salesforce オーディエンスをターゲットする

カスタムデータをマップすると、Salesforce 情報は Kameleoon セグメントビルダー内でネイティブに利用可能になります。

**セグメントでデータを使用するには：**

1. **セグメントビルダー** (**Settings** > **Segments** > **New segment**) に移動します。
2. 新しく作成したカスタムデータ条件をセグメントルールにドラッグします。
3. ロジック演算子を設定します。例えば、高価値顧客をターゲットするには、以下のように設定します：

   * `Salesforce Audiences` **is among** `High-value customers`

他の Kameleoon 基準とネイティブに組み合わせて、非常に具体的なセグメントを作成できます（例えば、*Salesforce Customer Tier = Gold* **AND** *Device = Mobile*）。

セグメント作成の詳細については、[セグメントを作成する](../../../assets/segments/create-a-segment)を参照してください。

***

## Salesforce Data 360 統合に関する考慮事項

Salesforce Data 360 と Kameleoon 間の統合を維持する際は、以下のシステム動作を考慮してください：

* **識別子の一貫性：** Salesforce がエクスポートする `kameleoon_visitor_code` 文字列は、Kameleoon の訪問者のクッキー文字列と正確に一致する必要があります。識別子が Salesforce インポート処理中に変更またはハッシュされた場合、同期は失敗します。
* **データの鮮度：** 統合は非同期ファイルドロップに依存しています。ユーザープロファイルへの変更は、Salesforce セグメントが更新され、Salesforce が CSV アクティベーションファイルを配信し、Kameleoon が結果のペイロードを取り込んだ後にのみ、Kameleoon で利用可能になります。
* **データプライバシー：** 実験またはパーソナライズに必要な特定の属性のみをアクティベートしてください。より広い分類属性（例えば、一般的な `LTV_band`）で同じターゲティング目標を達成する場合は、個人識別情報（PII）のアクティベートを回避してください。
