
【第595回】Personalization:Real-Time Profile Data Graph を作成する
前回の記事では、TrailNest の Customer ID を使用し、Web サイトから取得した匿名の Profile と、CRM の既知 Profile を同じ Unified Individual に関連付ける手順を紹介しました。
今回は、その統合結果と Web 行動を Salesforce Personalization で利用するために、Real-Time Profile Data Graph を作成します。
TrailNest では、CRM の顧客情報に加えて、商品閲覧、カートへの追加、購入などを Personalization の判断に利用するための土台を用意します。
Personalization 基礎シリーズ
Sitemap Builder シリーズ
Data 360 設定シリーズ
Personalization 設定シリーズ
Profile と Item は分けて作成する
今回の PoC では、次の 2 つの Data Graph を作成します。
1. Profile Data Graph
顧客情報と、その顧客の Web 行動を参照します。今回の Web Personalization では、Real-Time Data Graph を使用します。
2. Item Data Graph
Recommendation の候補となる商品情報を参照します。商品名、価格、カテゴリ、画像 URL、商品 URL などを用意し、次回作成します。
例えば、ある顧客が閲覧した商品 ID は Profile 側の行動データです。一方、おすすめとして表示する商品の画像や商品 URL は Item 側の商品データです。
これらを分ける理由は、将来的に、その顧客にとって未知の商品をレコメンドしたりするので、プロファイル側に持たせることはできず、どうしても Item Data Graph として分ける必要があるためです。
それでは、今回は Profile Data Graph の作成に集中します。
① Real-Time Data Graph を作成する
Data 360 の Data Graphs を開きます。
New → Start from Scratch → Real-Time Data Graph の順に進みます。

次の内容を設定します。
Data Graph Name:TrailNest Profile
Data Space:default
Primary Data Model Object:Unified Individual

Real-Time Consumption Limits
続いて、Real-Time Consumption Limits を設定します。
今回の PoC では、まず画面に表示されるデフォルト設定を使用します。
Session End:30 分 — 無操作が 30 分続いたら、現在のリアルタイムセッションを終了する。
Disable Record Caching:未チェック — キャッシュを有効にし、最近利用した既知顧客の Profile を再訪問時にも素早く使えるようにする。

Web Personalization を本番運用する場合、Session End は、Salesforce が一般的な基準として示す 最終操作から 30 分 を出発点に検討できます。
Record Caching とは、最近利用した既知の訪問者に対して、再訪問時の最初のページからプロファイルを使った Personalization を行いたいかを基準に判断します。
これを有効(「Disable Record Caching」を未チェック)にすると、プロファイル情報が「リアルタイム層」に保持され、最初のページから利用しやすくなります。こちらでは Sub-second Real-Time Profiles & Entities の利用枠を消費します。
一方で無効にした場合、この利用枠は消費されません。ただし、既知の訪問者が最初のページを開いた際に、Data 360 の Lake House 層からプロファイルを取得する必要があり、Personalization がすぐに表示されない可能性があります。
この利用枠は、請求月ごとのユニークなアクティブ訪問者数 を基準に計測されます。例えば、同じ訪問者が 9 月中に 20 回利用しても、9 月分は 1 人です。10 月にも利用すれば、10 月分でも 1 人として数えます。ページ表示回数やセッション数を合計するものではありません。
③ Profile の基本構造を作成する
Data Graph の編集画面で、各 DMO の横にある追加ボタンから関連オブジェクトを選択します。
今回の基本構造は、次の順序です。
Unified Individual → Unified Link Individual → Individual
関連をたどる際は、この順序で追加します。候補に複数の経路がある場合も、今回使用する経路を確認します。
Unified Individual
First Name
Is Anonymous
Last Name
Unified Link Individual(追加元:Unified Individual)
Data Source
Data Source Object
Individual(追加元:Unified Link Individual)
First Name
Is Anonymous
Last Name

Data Graph では、プライマリーキー、関連する Key Qualifier、必要な外部キーに関しては自動選択されます。
今回の Web 側は、氏名を送信していないため、Web 由来の Individual の氏名が空欄となりますが、問題ありません。
Contact Point Email(追加元:Individual)
Email Address
Party Identification(追加元:Individual)
Identification Name
Identification Number
Party Identification Type

④ Web 行動の DMO を追加する
続いて、Individual に関連する行動データを追加します。ここで選択するのは、今回の TrailNest で送信・Mapping した値を参照するための項目です。
Website Engagement(追加元:Individual)
Engagement Channel Action
Engagement Channel Type
Engagement Date Time
Page URL
Referrer URL
Webpage Type

今後、Hero Banner の表示・クリックを記録する場合にも、この DMO を利用する予定です。Data Graph に追加するだけで、それらの Event が送信されるわけではありません。
Product Browse Engagement(追加元:Individual)
Engagement Channel Action
Engagement Date Time
Product
Product Price
商品詳細の表示によって取得した商品閲覧の情報です。今回の例では、Product に TN-BP-001、Product Price に 79000 などが入ります。

Product Category は、現在の Sitemap では送信していません。 カテゴリを使った Affinity や条件設定の前に、カテゴリの取得・Mapping と Data Graph への追加を行います。
Shopping Cart Engagement(追加元:Individual)
Engagement Date Time
Engagement Type
Shopping Cart Event Type

今回の Mapping では、cart.interactionName を Shopping Cart Event Type、eventType を Engagement Type に接続しています。この 2 項目で、Add to Cart に対応する親 Event の種類を参照します。
Shopping Cart Product Engagement(追加元:Shopping Cart Engagement)
Engagement Date Time
Individual
Product
Product Price
Product Quantity
商品ごとのカート操作を参照します。Shopping Cart Engagement 参照項目は自動的に選択され、そちらが親 Event Id を指しています。

今回の Sitemap は Add to Cart を送信していますが、Cart 上での数量変更や削除までは Event 化していません。そのため、この履歴だけで現在の Cart の内容を完全に再現できるとは扱わず、「カートに追加した行動」として利用します。
Product Order Engagement(追加元:Individual)
Correlation ID(コリレーションと読みます)
Engagement Date Time
Total Product Amount

注文全体の情報を参照します。今回の Mapping では、Correlation ID に TrailNest の注文 ID、Total Product Amount に注文合計 orderTotalValue が入ります。
Sales Order Product Engagement(追加元:Product Order Engagement)
※ この Sales Order Product Engagement は(ProductOrderEngagement)経由のものを選択してください。そうしないと表示されません。

Engagement Date Time
Individual
Ordered Quantity
Product
Unit Price Amount
購入した商品ごとの明細です。Product Order Engagement は自動で追加されます。ProductOrderEngagement には、親 Order Event の eventId が入ります。これは、Cart と Cart Item の関係と同じ構造です。

今回の例では、次の 2 件が同じ注文に関連付いています。
TN-BP-001:数量 1、単価 79,000
TN-BP-005:数量 2、単価 229,000
今回の Request には totalPrice が含まれていません。 明細合計を使う売上指標や Recommendation を設定する場合は、送信する値の生成と Mapping を別途補います。Data Graph で金額項目を選択するだけでは、単価と数量から明細合計は計算されません。
Privacy Consent Log(追加元:Individual)
Privacy Consent Status
今回の Tracking の同意ログを参照するために追加します。
今回の TrailNest は PoC 用に Opt-In を設定しています。ここに同意ログを含めることは、SDK の同意制御を変更する操作ではありません。

もし Individual 配下に Privacy Consent Log DMO が表示されない場合は、Privacy Consent Log DMO の 「Individual」項目と、Individual DMO の 「Individual Id」項目を N:1(Many-to-One) のリレーションで紐づけてください。

⑤ Engagement DMO のフィルター設定
ビルドの前に、すべての Engagement DMO の Filters タブを開き、参照する履歴の範囲を確認します。
今回の PoC では、以下の設定に変更します。件数のところのみ修正です。
対象期間:直近 7 日間
件数:最新 20 件
日時の基準:Created Date

⑥ 構造を確認して Save and Build
ここまでで、今回のグラフには次の情報を含めています。
統合個人と、元の Individual との関連
氏名、匿名・既知の区分
Email Address と Customer ID
ページ閲覧、商品閲覧、カートへの追加
注文と購入商品の明細
同意ログ
商品マスタは、次回の Item Data Graph で扱います。
最後に、Save and Build をクリックします。

注意:リアルタイムデータグラフには、標準のデータグラフのような更新周期の設定がないので、ボタンを押した瞬間にビルドが開始します。
いかがでしたでしょうか。
今回の Real-Time Data Graph は、Customer ID を使って既存の顧客 Profile をリアルタイムで照合し、Personalization で利用するための土台です。
ただし、Data Graph の構築完了と、リアルタイム ID 解決の動作確認は別です。 グラフを作成しただけで「リアルタイムで CRM の顧客と照合できた」とは判断できません。
次回は、新しいブラウザで TrailNest を開き、Customer ID を送信します。通常の ID 解決の次回実行を待たずに、既存の CRM 顧客の Profile と照合され、その情報を Real-Time Data Graph で参照できるかを確認します。
今回は以上です。