
【第598回】Personalization:Engagement Signal を設定する
前回の記事では、TrailNest の商品データを Data 360 に取り込み、Goods Product を起点とする Item Data Graph を作成しました。これで、顧客の Web 行動と、その行動の対象となった商品情報を用意できました。
今回は、商品閲覧・カート追加・購入を Engagement Signal として設定します。この設定を、次回のカテゴリへの Affinity の計算につなげます。
Personalization 基礎シリーズ
Sitemap Builder シリーズ
Data 360 設定シリーズ
Personalization 設定シリーズ
Affinity とは
そもそも Affinity は、顧客が何に、どの程度の興味を示しているかを、行動からスコアとして表すものです。
例えば TrailNest では、Backpacks の商品を何度も閲覧したり、カートに追加したり、購入したりした顧客は Backpacks に興味があると考えられます。
こうした行動をもとに、カテゴリごとの興味の強さを計算するのが Calculated Affinity です。
今回は、次のように行動の重みを変える方針です。
商品閲覧:興味を示す行動
カート追加:より強い興味を示す行動
商品購入:さらに強い興味を示す行動
このスコアを、今後の Hero Banner の出し分けに利用します。例えば、Backpacks への興味が高い顧客には Backpacks のバナーを、Sleeping への興味が高い顧客には Sleeping のバナーを表示する構成を目指します。
Affinity は、顧客が自分で登録した好みではなく、実際の行動から推定した興味です。
今回の記事では、その計算に使用する商品閲覧・カート追加・購入を、Engagement Signal として定義していきます。
Engagement Signal とは
Engagement Signal は、顧客のどの行動を、Personalization で利用する行動として扱うかを定義する設定です。
例えば、商品詳細の表示を「商品閲覧」、商品の追加を「カート追加」として定義します。Salesforce Personalization では、こうしたシグナルを Recommendation や効果測定などに利用します。
今回は、次の 3 つを作成します。
TrailNest Product View:商品を閲覧した
TrailNest Add To Cart:商品をカートに追加した
TrailNest Purchase:商品を購入した
これまで Sitemap で設定してきた Event は、Web サイトから行動を送信する設定です。
一方、今回の Engagement Signal は、取り込まれた行動データを Personalization が利用するための定義 です。新しい Web Event を追加する作業ではありません。
① Engagement Signals を開く
アプリケーションランチャーから Engagement Signals を検索して開き、New をクリックし、Manual Setup を選択して進みます。

今回は Web Personalization のために作成するので、Flow で利用するためのオプション「Make Signal Available in Automation Event-Triggered Flows」にチェックは入れずに進めます。
これまで私の記事では Marketing Cloud Next の送信用で設定することが多かったので、その場合はチェックを入れていました。
② Product View を設定する
最初に、商品閲覧のシグナルを作成します。
使用する DMO
Engagement DMO:Product Browse Engagement

1. 識別子を設定する
Product Browse Engagement DMO から、次の項目を指定します。
User Identifier:Individual
Timestamp Identifier:Engagement Date Time
Item Identifier:Product
Event Identifier:Product Browse Engagement ID

Engagement Signal では、Engagement に分類された DMO と、Mapping 済みの項目を選択できます。関連 DMO の項目を使用する場合は、1:1 または N:1 の関連を利用できます。但し、今回はすべて Product Browse Engagement DMO から選択してください。
Item Identifier には、閲覧した商品 ID が入っている Product を使用します。例えば、TN-BP-001 を閲覧した場合は、その商品を対象とする行動として扱います。Product SKU には商品 ID が入っているわけではないのでここでは使用しません。
2. 行動のカウント方法
今回は、繰り返した閲覧もそれぞれの行動として扱うため、次を選択します。
Count each event as a discrete engagement signal
これは、同じ商品を別の機会に閲覧した場合も、それぞれを 1 回の閲覧として扱う方針です。

3. 条件を設定する
次の条件を指定します。
Filter Resource:Product Browse Engagement → Engagement Channel Action
Operator:Is Equal To
Value:View Catalog Object

ここでは、実際に DMO に入っている値を指定します。
今回の TrailNest から送信された商品閲覧の Request には、次の値が含まれています。
{
"interactionName": "View Catalog Object",
"eventType": "catalog",
"id": "TN-BP-001",
"type": "Product"
}4. 名前を設定して保存する
Name:TrailNest Product View
API Name は自動生成された内容を確認し、保存します。

③ Add To Cart を設定する
続いて、カート追加のシグナルを作成します。
再び New → Manual Setup から開始します。
1. 使用する DMO
Engagement DMO:Shopping Cart Product Engagement
今回は、親の Shopping Cart Engagement ではなく、商品明細の Shopping Cart Product Engagement を起点にします。
これにより、どの商品をカートに追加したかを識別できます。Salesforce の Add To Cart の公式例でも、Shopping Cart Product Engagement を使用しています。

2. 識別子を設定する
DMO はすべて Shopping Cart Product Engagement です。
User Identifier:Individual
Timestamp Identifier:Engagement Date Time
Item Identifier:Product
Event Identifier:Shopping Cart Product Engagement ID

行動のカウント方法は、Product View と同じく次を選択します。
Count each event as a discrete engagement signal
3. 今回は条件を設定しない
今回の TrailNest では、Shopping Cart Product Engagement に送信しているのは Add To Cart の商品明細のみです。そのため、今回はフィルターを設定しません。
当初は、親の Shopping Cart Engagement を参照し、
Shopping Cart Event Type:Add To Cart
という条件を設定していました。
しかし、この Signal を Calculated Affinity に使用すると、今回の環境では Affinity と自動生成された Calculated Insight が Error になりました。
生成された式を確認すると、親の Shopping Cart Engagement の項目を条件に使用している一方、その親を結合する JOIN が見当たりませんでした。これは仕様なのか不明(おそらく仕様)なため、今回の PoC では、この条件を外して進めます。
ここは何も設定せずにそのまま進んでください。

4. 名前を設定して保存する
Name:TrailNest Add To Cart

今回の Sitemap が送信しているのは、Product Detail の Add To Cart ボタンをクリックした行動です。
④ Purchase を設定する
最後に、商品購入のシグナルを作成します。
1. 使用する DMO
Engagement DMO:Sales Order Product Engagement
今回はカテゴリへの Affinity に利用するため、注文全体ではなく、購入した商品ごとの明細を起点にします。
つまり、1 回の注文で Backpacks と Sleeping の商品を購入した場合、それぞれの商品を対象とする購入行動として扱う方針 です。

2. 識別子を設定する
User Identifier:Individual
Timestamp Identifier:Engagement Date Time
Item Identifier:Product
Event Identifier:Sales Order Product Engagement ID

Event Identifier には、明細自身の主キーを指定します。
ProductOrderEngagement は親の注文への参照項目なので、ここでは使用しません。
行動のカウント方法は、次を選択します。
Count each event as a discrete engagement signal
3. 今回は条件を追加しない
現在の TrailNest では、Sales Order Product Engagement に入る商品明細は、Purchase Event から生成されたものです。
そのため、今回の PoC では、特に条件を追加せず、取り込まれた購入明細すべてを対象にします。
返品や取消など、別の行動も同じ DMO に取り込む構成へ変更する場合は、その時点で購入だけを対象とする条件を追加します。
4. 名前を設定して保存する
Name:TrailNest Purchase

なお、Salesforce の Product Order の公式例は、Product Order Engagement を起点にしています。今回は 商品ごとの Affinity に利用するため、商品明細を起点とする独自の定義です。
また、今回のカウントは購入数量の合計ではありません。
同じ明細に数量 2 が入っていても、ここでは 1 件の商品購入行動として扱います。
⑤ 作成したシグナルを確認する
Engagement Signals の一覧に、次の3つが表示されることを確認します。
TrailNest Product View
TrailNest Add To Cart
TrailNest Purchase

⑥ 次回の Affinity につなげる
次回は、今回の 3 つのシグナルを使用して、商品の Category に対する Affinity を設定します。
TrailNest では、次の強さで設定する方針です。
商品閲覧:Low / Positive
カート追加:Medium / Positive
商品購入:High / Positive
閲覧よりカート追加、カート追加より購入を、強い興味を示す行動として扱います。この強さと影響は、Engagement Signal の作成画面ではなく、Calculated Affinity の設定時に指定します。
いかがでしたでしょうか。
今回は、TrailNest の商品閲覧・カート追加・購入を、Personalization で利用する Engagement Signal として設定しました。
それぞれに顧客・日時・商品・Event の識別子を指定することで、誰が、いつ、どの商品に対して行動したかを扱うための定義を用意しました。
次回は、これらのシグナルを使用してカテゴリへの Real-Time Calculated Affinity を設定し、Backpacks や Sleeping への興味を、Hero Banner の出し分けに利用する準備を進めます。
今回は以上です。