Salesforce Commerce Cloud(SFCC)は、B2C(企業対消費者)およびB2B(企業間)顧客向けのeコマースソリューションです。このコネクタは以下の機能を提供します。
- TD Console上の顧客プロファイルをSFCCプラットフォーム上のCustomer Listsに同期する
- SFCCプラットフォーム上の静的Customer Groupsに顧客を割り当てる、または削除する
- Treasure Dataの基本知識
- Salesforce Commerce Cloudの基本知識
- Open Commerce Cloud APIの基本知識
- Commerce Cloud Account Manager SystemでAPIクライアントが作成されていること。詳細についてはこちらを参照してください
- アプリケーションシークレットには
%文字を含めることはできません。SFCC認証サーバーの内部的な問題により、%文字を含むシークレットは認証できません。 - このコネクタは顧客属性を検証せずにそのまま送信します。データ検証はSFCC側で行われます。
- 顧客プロファイルをSFCC Customer Listに同期するには、ジョブ実行前にそのリストがSFCC上に存在している必要があります。
- 大量のデータはパフォーマンスの低下を引き起こす可能性があります。
クエリを実行する前に、TD Console上でデータ接続を作成し設定する必要があります。データ接続の一部として、以下の手順に従って連携にアクセスするための認証情報を提供します。

- TD Consoleを開く
- Integrations Hub > Catalogに移動
- Salesforce Commerce Cloudを検索して選択
- Create Authenticationを選択し、以下で説明する連携の認証情報を入力
- Continueを選択し、認証の名前を入力してDoneを選択
| フィールド | 説明 |
|---|---|
| API Client ID | APIクライアントの作成と設定の手順に従って生成されるAPI Client ID |
| API Client Password | APIクライアントのパスワード |
| Base URI | Business ManagerアプリケーションにアクセスするためのURL。例:https://xxxx.commercecloud.salesforce.com/ |
TD Consoleはデータをエクスポートする複数の方法をサポートしています。以下の手順に従ってData Workbenchからデータをエクスポートしてください。
- Data Workbench > Queriesに移動
- New Queryを選択し、クエリを定義
- Export Resultsを選択してデータエクスポートを設定
- 既存のSFCC認証を選択するか、上記のセクションに従って新しい認証を作成
- 以下で説明するエクスポートパラメータを設定し、Doneを選択
- 設定パラメータ
| フィールド | 説明 |
|---|---|
| Data target |
|
| Operation mode | Customer Listデータターゲットの場合、以下のサポートされている操作モードのいずれかを選択します:
|
| Customer list ID | Customer Listデータターゲットの場合に必須です。事前定義されたCustomer ListのIDを指定する必要があります。それ以外の場合、クエリ結果にはcustomer_list_idという名前のカラムが含まれている必要があります。 |
| Skip empty/null fields | (Customer Listデータターゲットにのみ適用) チェックを外すと、空またはnullの属性(カラム)がSFCCに送信されます。その結果、SFCC上のこれらの属性はクリア(空の値で上書き)されます。デフォルトではチェックされており、空またはnullの属性はSFCCに送信されません。 |
| Site ID | Customer Groupデータターゲットの場合に必須です。ターゲットCustomer Groupが属するサイトのID。 |
| Customer group ID | Customer Groupデータターゲットの場合に必須です。静的Customer GroupのID。存在しない場合は、新しいものが作成されます。 |
| Customer group name | (オプション。Customer Groupデータターゲットにのみ適用) 指定されたCustomer Groupが存在しない場合に使用されるグループ名。 |
| Thread count | 同時アップロードジョブの数。2から40の範囲。 |
Customer Listデータターゲットの顧客属性の上書き
- Updateモードを使用して、既存の顧客プロファイルの選択された属性を更新します。
Skip empty/null fieldsがチェックされている場合、空またはnullの属性はエクスポートされず、SFCC上の既存の値は変更されません。 - Upsertモードは、すべての属性を上書きする場合に使用します。これは、既存の顧客プロファイルがクエリ結果に含まれるもので置き換えられ、含まれていない属性は空になることを意味します。存在しないプロファイルは新規作成されます。 |
- クエリには、同期する顧客プロファイルを示すcustomer_noカラムを含める必要があります。
- 複数のCustomer Listsを更新する場合、ターゲットリストを示すためにcustomer_list_idという名前のカラムを含めることができます。
- その他の顧客属性については、SFCCのドキュメントを参照してください。すべての属性は検証なしでそのまま送信されます。
| カラム | 説明 | 必須 |
|---|---|---|
| customer_list_id | 空白またはnullでない場合、行の顧客属性が更新されるCustomer ListのIDを定義します。それ以外の場合は、設定画面で入力されたCustomer Listが考慮されます。 | オプション |
| customer_no | SFCCの顧客番号。Createモードでは不要です。 | 必須 |
| Credentials | Createモードでは認証情報が必要です。詳細についてはこちらを参照してください。 | オプション |
| Customer attributes | サポートされている属性のリストについてはこちらを参照してください。 | オプション |
| Customer address | サポートされている属性のリストについてはこちらを参照してください。 | オプション |
顧客をCustomer Groupに割り当てる(またはCustomer Groupから削除する)には、クエリにcustomer_noカラムのみが必要です。
Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。
Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。
2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。
例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。
Data Workbench > Queries に移動します
新しいクエリを作成するか、既存のクエリを選択します。
Schedule の横にある None を選択します。

ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

ドロップダウン値 説明 Custom cron... Custom cron... の詳細を参照してください。 @daily (midnight) 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 @hourly (:00) 毎時 00 分に実行します。 None スケジュールなし。

| Cron 値 | 説明 |
|---|---|
0 * * * * | 1 時間に 1 回実行します。 |
0 0 * * * | 1 日 1 回午前 0 時に実行します。 |
0 0 1 * * | 毎月 1 日の午前 0 時に 1 回実行します。 |
| "" | スケジュールされた実行時刻のないジョブを作成します。 |
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +---------- month (1 - 12)
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)次の名前付きエントリを使用できます:
- Day of Week: sun, mon, tue, wed, thu, fri, sat.
- Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.
各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:
| フィールド値 | 例 | 例の説明 |
|---|---|---|
| 各フィールドに対して上記で表示された制限内の単一の値。 | ||
フィールドに基づく制限がないことを示すワイルドカード '*'。 | '0 0 1 * *' | 毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
範囲 '2-5' フィールドの許可される値の範囲を示します。 | '0 0 1-10 * *' | 毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。 | 0 0 1,11,21 * *' | 毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。 | '30 */2 1 * *' | 毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10' | '0 0 5,*/10,25 * *' | 毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
- (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。
設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。
(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。
- Audience Studio に移動します。
- parent segment を選択します。
- ターゲット segment を開き、右クリックして、Create Activation を選択します。
- Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
- Output Mapping パネルで activation 出力をカスタマイズします。

- Attribute Columns
- Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
- + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
- String Builder
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
- Timestamp: エクスポートの日時。
- Segment Id: segment ID 番号。
- Segment Name: segment 名。
- Audience Id: parent segment 番号。
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- Schedule を設定します。

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。
- Create を選択します。
batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。
TD Toolbeltを使用すると、CLIからクエリ結果のエクスポートをトリガーできます。td queryコマンドの--resultオプションとして、エクスポートジョブのパラメータを指定する必要があります。詳細については、この記事を参照してください。
オプションの形式はJSONで、一般的な構造は以下の通りです。
- ケース: data_targetがcustomer_listの場合
{"type": "salesforce_commerce_cloud", "client_id": "client_id", "client_secret": "client_secret", "base_url": "https://your link.commercecloud.salesforce.com", "data_target": "customer_list", "operation_mode": "create,update,delete,upsert", "customer_list_id": "customer_list_id", "skip_empty_fields": true, "thread_count": 2}Case: data_target is customer_group{ "type": "salesforce_commerce_cloud", "client_id": "client_id", "client_secret": "client_secret", "base_url": "https://your link.commercecloud.salesforce.com", "data_target": "customer_list", "customer_group_operation_mode": "add,remove,replace", "site_id": "your site id", "customer_group_id": "your customer group id", "customer_group_name": "your customer group name", "thread_count": 2}| 名前 | 説明 | 値 | デフォルト値 | 必須 | |
|---|---|---|---|---|---|
| data_target | 設定パラメータセクションのdata_targetを参照 | オプションのリスト:
| customer_group | YES | |
| td_authentication_id | これはTDコンソール上の既存のSFCC認証のIDです。 注: td_authentication_idを使用する場合、client_idとclient_secretを宣言する必要はありません。TDシステムがtd_authentication_idによってそれらの情報を取得するためです | Number | null | NO | |
| client_id | SFCCから取得したclient_id。 注: TDシステムは、td_authentication_idがnullの場合、この値を無視します。 | String | null | YES (td_authentication_idがnullの場合) | |
| client_secret | SFCCから取得したclient_secret。注: TDシステムは、td_authentication_idがnullの場合、この値を無視します。 | String | null | YES (td_authentication_idがnullの場合) | |
| base_url | 設定パラメータセクションのbase_urlを参照 | String | null | YES | |
| operation_mode | 設定パラメータセクションのoperation_modeを参照。operation_modeはdata_targetがcustomer_listの場合にのみ使用されます。 | オプション:
| customer_list | YES (data_targetがcustomer_listの場合) | |
| customer_list_id | 設定パラメータセクションのcustomer_list_idを参照。operation_modeはdata_targetがcustomer_listの場合にのみ使用されます。 | String | null | YES (data_targetがcustomer_listの場合) | |
| skip_empty_fields | コネクタが空またはnullの値を持つフィールドを無視するかどうかを決定するインジケータフラグ。 | Boolean | true | NO | |
| customer_group_operation_mode | operation_modeはdata_targetがcustomer_groupの場合にのみ使用されます。customer_groupに適用されるアクション。 | オプション:
| Add | NO | YES (data_target が customer_group の場合) |
| site_id | 設定パラメータセクションの site_id を参照してください。 | String | null | YES (data_target が customer_group の場合) | |
| customer_group_id | 設定パラメータセクションの customer_group_id を参照してください。 | String | null | YES (data_target が customer_group の場合) | |
| customer_group_name | 設定パラメータセクションの customer_group_name を参照してください。 | String | empty | NO |
- 新しい顧客を作成
td --database luan_db --wait "SELECT customer_list_id,first_name,last_name,birthday,company_name,email,fax,gender,job_title,phone_business,phone_home,phone_mobile,second_name,credentials FROM (VALUES ('site_1','fname_201','lname_1','1990-05-12','Test Company','test201@test.com','84111111201',1,'Sr Software','84111111201','84111111201','84111111201','Ryan','{\"enabled\":true,\"locked\":false,\"login\":\"login_url_1_100001.csv\"}')) tbl(customer_list_id,first_name,last_name,birthday,company_name,email,fax,gender,job_title,phone_business,phone_home,phone_mobile,second_name,credentials)" \--type presto \--result '{"type":"salesforce_commerce_cloud","td_authentication_id": 2837,"base_url":"https://zzvt-003.dx.commercecloud.salesforce.com","operation_mode":"create","customer_list_id":"static_g_1","skip_invalid_record":true,"thread_count":2}'- 既存の顧客を更新
td --database luan_db --wait "SELECT customer_list_id,customer_no,first_name,last_name,credentials FROM (VALUES ('site_1','00000001','fname_1_updated','','{\"enabled\":true,\"locked\":false,\"login\":\"login_url_1_100001.csv\"}')) tbl(customer_list_id,customer_no,first_name,last_name,credentials)" \--type presto \--result '{"type":"salesforce_commerce_cloud","data_target": "customer_list","td_authentication_id": 2837,"base_url":"https://zzvt-003.dx.commercecloud.salesforce.com","operation_mode":"update","customer_list_id":"static_g_1","skip_invalid_record":true,"thread_count":2}'- 顧客を特定の顧客グループに割り当て
td --database luan_db --wait "SELECT customer_no FROM (VALUES ('00000001')) tbl(customer_no)" \--type presto \--result '{"type":"salesforce_commerce_cloud","data_target": "customer_group","td_authentication_id": 2837,"base_url":"https://zzvt-003.dx.commercecloud.salesforce.com","customer_group_operation_mode":"add","site_id":"site_1", "customer_group_id": "static_customer_group_1","thread_count":2}'このセクションでは、SFCC APIを使用するために必要な認証情報の取得と権限の設定方法について、概要レベルで説明します。詳細な手順は、Salesforceによって事前の通知なしに変更される可能性があります。
- SFCC Account Managerにアクセスしてログイン
- API Clientを選択

- Add API Clientを選択

- Display Name、Password、Confirm Passwordに値を入力し、Access Controlを選択して有効化
- Organizationsエリアで、組織を選択
- Rolesエリアで、Addを選択
- 適切なロールを選択し、Addを選択
- Token Endpoint Auth Methodセクションまでスクロール
- 以下のようにAuth methodとtoken formatを選択し、Saveを選択

- API Client IDとPasswordを記録し、TD ConsoleでSFCC統合用の新しいAuthenticationを作成する際に使用します
これらの手順により、作成したAPI ClientがOpen Commerce API機能を使用してSFCCインスタンスのデータを変更できるようになります
- Business Managerを開く (https://{YOUR_INSTANCE_URL}.commercecloud.salesforce.com/on/demandware.store/Sites-Site/default/ViewApplication-DisplayWelcomePage)
- Administration >> Open Commerce API Settingsを選択

- Select TypeドロップダウンリストでDataを選択

- Data APIの設定文字列で、WRITE権限が設定されていることを確認: "write_attributes": "(**)"
- Select ContextドロップダウンリストでGlobal (organization-wide)を選択
- Saveを選択すると、数分でAPI Clientの権限が適用されます
これでAPI ClientをSalesforce Commerce Cloud統合で使用する準備が整いました
Result Exportは、ターゲットの送信先にデータを定期的にアップロードするためにスケジュールを設定できます
すべてのインポートおよびエクスポート統合は、TD Workflowに追加できます。tdデータオペレータを使用して、クエリ結果を指定されたコネクタにエクスポートできます。詳細については、Reference for Treasure Data Operatorsを参照してください