詳細情報:
サイトマップとデータ取り込み
サイトマップのイベント タイプ、カスタム カタログ属性、コンテンツ ゾーンのプロパティを変更し、キャンペーン応答を Web パーソナライズマネージャーおよびサイトマップ トランスフォーマーに置き換えるときは、次のガイドラインと説明に従ってください。
イベント種別の要件
Marketing Cloud Personalization サイトマップでは、アクション項目を説明ラベル ([商品を表示]、[カートに追加] など) として使用して、ページで何が起こるかを特定しやすくします。Data 360 Web SDK はこの目的で interaction.name を使用します。また、イベントを Web サイトコネクタイベントスキーマに対応付ける方法を決定する eventType 項目も必要です。
標準のインタラクション名定数 (ViewCatalogObject、AddToCart、Purchase など) を使用する場合、SDK は自動的に正しいイベント種別を取得します。
| 標準インタラクション名 | 自動的に派生するイベント種別 |
|---|---|
| CatalogObjectInteractionName.ViewCatalogObject | カタログ |
| CartInteractionName.AddToCart | cart |
| OrderInteractionName.Purchase | order |
ただし、カスタムアクション ([記事を参照] や [共有記事] など) は、Web イベントスキーマの有効なイベント種別と一致し、必要な命名規則に従っている場合にのみ正しく取り込まれます。このため、イベントスキーマオブジェクトに一致する明示的な interaction.eventType を指定することをお勧めします。または、有効な eventType トークンでもある interaction.name 値を使用して、スキーマオブジェクトと一致するようにすることもできます。
- 文字で始まる
- 英数字とアンダースコアのみ (スペースは使用しない)
- 末尾がアンダースコアでない、または連続するアンダースコアがない
- 最大 80 文字
- Data 360 Web サイトコネクタイベントスキーマで定義されたオブジェクトに一致する
Example: Incorrect Custom Event Coding
// Event without eventType doesn’t ingest properly
SalesforceInteractions.sendEvent({
interaction: {
name: 'Read Article' // Invalid eventType token naming convention (contains a space)
}
});
Example: Correct Custom Event Coding
// Event containing explicit eventType
SalesforceInteractions.sendEvent({
interaction: {
name: 'Read Article',
eventType: 'contentEngagement' // Must match Data 360 schema object
}
});
サイトマップとカスタム属性
Data 360 Web SDK でカスタム属性を使用するには、属性オブジェクトにネストする必要があります。
Marketing Cloud Personalization Web SDK では、カスタムカタログ項目カスタム属性をオブジェクトの最上位に配置できます。Data 360 Web SDK では、type や id などの標準項目を catalogObject トップレベルに保持できます。ただし、catalogObject の最上位にあるカスタム属性は、Data 360 ペイロードへの変換時に削除されます。
Example: Marketing Cloud Custom Attribute Coding
// Marketing Cloud Personalization SDK pattern (loses custom attributes in Data 360 Web SDK)
catalog: {
Product: {
_id: 'SKU123',
color: 'red', // Top-level custom attribute
size: 'L', // Top-level custom attribute
brand: 'Acme' // Top-level custom attribute
}
}
Example: Correct Custom Attribute Coding
// Data 360 SDK pattern (required attributes wrapper for custom fields)
interaction: {
name: SalesforceInteractions.CatalogObjectInteractionName.ViewCatalogObject,
catalogObject: {
type: 'Product',
id: 'SKU123',
attributes: { // <-- wrapper for custom fields
color: 'red',
size: 'L',
brand: 'Acme'キャンペーン回答の変更
Marketing Cloud Personalization Web SDK には、サーバー側のキャンペーンの決定にプログラムでアクセスするための特定のメソッドが用意されています。Data 360 Web SDK には、これらのメソッドはありません。代わりに、Web パーソナライズマネージャーとサイトマップトランスフォーマーを使用してパーソナライズ応答を表示することをお勧めします。
Web パーソナライズマネージャー (WPM) は、Salesforce 以外の Web サイトでパーソナライズされたコンテンツを管理するためのビジュアルツールです。このツールを使用して、Web SDK の顧客インタラクションデータを使用して、必要なときに必要な場所に表示されるパーソナライズされた環境を作成および更新できます。サイトマップトランスフォーマーでは、サイトマップで定義されたハンドルベースのテンプレートを使用して、パーソナライズされた応答 (商品のおすすめのカルーセルやカスタムヒーローバナーなど) を表示できます。
WPM とサイトマップトランスフォーマーのアプローチが推奨される理由は、次の点にあります。
- Shadow Document Object Model (DOM) カプセル化標準に従ったサイトマップトランスフォーマーを使用して、コンテンツを表示します。
- 表示されたコンテンツに「stat」追跡モニターを添付して、インプレッション数とクリック数を追跡します。
- 決定の読み込み中にページ要素を非表示にして、ページのちらつきを防ぎます。
パーソナライズの決定を手動で取得する必要がある場合、Data 360 Web SDK ではプログラム API として SalesforceInteractions.Personalization.fetch() が提供されます。
取得方法を使用して手動取得を選択する場合、次の責任があります。
- パーソナライズされたコンテンツを自分で表示する
- 取得した決定のビューまたはクリックエンゲージメントイベントを手動で追跡
- フリッカー防御の実装 (必要な場合)
次の表に、getCampaignResponses メソッドと Personalization.fetch メソッドの一般的な相違点を示します。
| 方法 | Marketing Cloud Personalization SDK (キャンペーン応答の取得) | Data 360 Web SDK (パーソナライズフェッチ) |
|---|---|---|
| 目的 | プログラムでサーバー側のキャンペーンの決定を取得する | 特定のパーソナライズポイントのパーソナライズに関する決定をプログラムで取得する |
| トリガー | イベントが送信された後にコールされるか、グローバルイベント応答に関連付けられます。 | 解決するパーソナライズポイントのリストと共に明示的にコール |
| 引数 | なしまたはキャンペーン固有の検索条件 | 文字列の配列 (パーソナライズポイント名) |
| 返品 | キャンペーンデータの配列 (HTML) | 決定データ/属性を使用して最終的に JSON オブジェクトに解決される Promise プレースホルダー |
サイトマップコンテンツゾーンの要件
コンテンツゾーンは、パーソナライズされたコンテンツを受信できる Web サイトの定義済み領域です。Salesforce Personalization を適切に機能させるには、コンテンツゾーンで名前とセレクターの両方の値が定義されている必要があります。
// Example: Defined content zones in sitemap for personalization
{
name: 'Product Detail Page',
isMatch: () => /\/product\//.test(window.location.pathname),
contentZones: [
{ name: 'hero_banner', selector: 'div#hero' },
{ name: 'recommendations', selector: 'div#recs-container' }
]
}

