
【第586回】Personalization:Sitemap Builder で Profile Attribute を設定する
前回の記事では、Salesforce Personalization の Sitemap Builder で Resolvers を設定し、Product Detail から、
Product ID
Product Name
Product Price
を取得できるようにしました。
Resolver を使用することで、
「現在表示しているページ上に、どのようなデータがあるのか」
を取得できるようになりました。
例えば、
Page Type
→ 「現在表示されているのは Product Detail」Resolver
→ 「表示されている商品 ID は TN-BP-003」
というところまで設定できています。
しかし、Web サイトから取得したい情報は商品情報だけではありません。
今回の TrailNest の Checkout では、
First Name
Last Name
Customer ID
Email Address
Country
など、Web サイトを利用しているユーザー自身の情報も入力します。
そこで今回は、Sitemap Builder の Profile Attributes を設定していきます。
Personalization 基礎シリーズ
Sitemap Builder シリーズ
Data 360 設定シリーズ
Personalization 設定シリーズ
Profile Attributes とは
Profile Attributes は、Web サイトを利用しているユーザー自身に関する情報を Profile Event として送信するための設定です。
Salesforce Interactions SDK の Event では、ユーザーの行動を interaction、ユーザー自身に関する Profile 情報を user として扱います。
例えば user には、Email Address、Loyalty ID、First Name などの情報を含めることができます。
前回作成した Resolver と少し似ているように感じますが、役割は異なります。
簡単に整理すると、
Page Type
→ 「何のページなのか」Resolver
→ 「ページ上にどんな値があるのか」Profile Attributes
→ 「この訪問者に関する情報は何か」Event
→ 「その訪問者が何をしたのか」
という関係になります。
匿名ユーザーでも Tracking できる
Profile Attributes を設定しなければ Web Tracking ができない、というわけではありません。
Salesforce Interactions SDK は First-Party Cookie を使用し、Web サイトを訪問したブラウザにランダムな anonymousId を割り当てます。
同じ Cookie が残っていれば、再訪問時にも同じ匿名訪問者として認識できます。
また、現在の Web SDK では、新しい Anonymous ID が作成された後、最初に送信される Event に Profile Data が含まれていない場合、匿名ユーザー用の最小限の Identity Profile Event が自動的に送信されます。
これにより、ユーザーがまだ誰なのか分からない段階でも、その訪問者の Engagement Event を Profile に関連付けることができます。
例えば TrailNest に初めて訪問したユーザーが、
商品を閲覧
↓
Category を閲覧
↓
Cart に商品を追加
と操作した場合、Email Address や Customer ID が分からない状態でも、匿名ユーザーとして行動を Tracking できます。
個人情報が取れるとどうなるのか
TrailNest では、ユーザーが Checkout に進むと Email Address と Customer ID を入力します。
ここで、それまで匿名だった訪問者について、
Email Address = customer@example.com
Customer ID = CUST-000001
といった、既知顧客との関連付けに利用できる情報を取得できます。
Salesforce Interactions SDK では Profile Data を user.attributes に格納します。
さらに Profile Event には eventType を設定し、
この Profile Data が何の種類なのか
を指定します。
例えば Email Address の Profile Event は、
user: {
attributes: {
eventType: "contactPointEmail",
email: "customer@example.com"
}
}という構造になります。
eventType = "contactPointEmail" を指定することで、この Profile Event を Contact Point Email 用の Data Stream にルーティングできます。
現在の Recommended Schema では、contactPointEmail には eventType と email が必要です。
一方、Customer ID は後ほど partyIdentification の Profile Event として送信します。
通常の実装では何を Profile 情報として送るか
ここで、実際の Web サイトではどのような Profile 情報を送信することが多いのか整理しておきます。
Web サイト上に存在する First Name、Last Name、Email Address などを、すべて毎回送信する必要があるわけではありません。
Salesforce のドキュメントでも、user オブジェクトは、ユーザー属性が初めて分かったとき、または変更されたときに送信すればよいとされています。
例えば Login、Registration、Form Submission などがそのタイミングです。
実際の EC サイトや会員サイトでは、概ね次のように考えると分かりやすいと思います。
未ログイン状態
まだユーザーが誰なのか分からないため、Anonymous ID を使って Web 上の行動を Tracking します。
Anonymous ID
↓
Product View
↓
Add to Cart
↓
その他の Web 行動
Form Submission や Guest Checkout
Email Address が分かれば、Contact Point Email として送信できます。
Email Address
→ Contact Point Email
Customer ID などの既知識別子が分かった場合
ログイン、会員登録、Checkout などによって、
Customer ID
Member ID
Loyalty ID
CRM Customer ID
など、企業側で管理している継続的な識別子を取得できる場合があります。
このような識別子は Party Identification として扱う Recommended Schema が用意されています。
Recommended Mapping では、userId が Party Identification DMO の Identification Number にマッピングされ、IDType や IDNameWeb とともに送信できます。
例えば、
Customer ID = C00012345
のような値です。
Email Address は変更される可能性がありますが、企業側で発行した Customer ID や Member ID は一般的に、より継続して利用しやすい識別子です。
そのため、Web サイト上でこのような既知の Customer ID を取得できる場合には、Party Identification として送信することも重要です。
Salesforce の Developer Blog でも、CRM ID や Loyalty ID のような既知の Customer ID を partyIdentification Event として送り、Party Identification DMO を通じて Identity Resolution に利用する構成が紹介されています。
First Name / Last Name
First Name や Last Name は、Customer ID のような主要な識別子というより、Profile を enrich するための属性として考えると分かりやすいです。
Salesforce の Recommended Mapping では、
eventType = identity
の Profile Event に含まれる、
firstName
lastName
などを Individual DMO にマッピングできます。
ただし、CRM や Commerce などからすでに、
Customer ID
First Name
Last Name
Email Address
が Data 360 に取り込まれている場合、Web サイトから First Name や Last Name を毎回送り直す必要はありません。
つまり、実装イメージとしては、
Anonymous ID
→ 「このブラウザの訪問者」
Email Address
→ 「この訪問者の Contact Point」
Customer ID / Member ID
→ 「企業が管理しているどの顧客なのか」
First Name / Last Name
→ 「その顧客の Profile 属性」
と整理すると分かりやすいと思います。
TrailNest では何を実装するのか
今回の TrailNest にはログイン機能はありませんが、より実際の EC サイトに近い検証を行うため、Checkout で Customer ID を入力できるようにしています。
Checkout では、
First Name
Last Name
Customer ID
Email Address
Country
を入力します。
Salesforce Interactions SDK の Recommended Schema では、Profile Event として、
Contact Point Email
Identity
Party Identification
などが用意されています。
Email Address は Contact Point Email として送信します。
一方、Customer ID は Party Identification として送信します。
Party Identification は、企業側で管理している Customer ID、CRM ID、Loyalty ID などの既知識別子を、Web SDK が管理している匿名ユーザーの識別情報と関連付けるために利用できます。
Salesforce の Recommended Mapping では、
userId
→ Identification Number
IDType
→ Party Identification Type
IDNameWeb
→ Identification Name
として Party Identification DMO にマッピングします。
今回の TrailNest では、例えば、
Customer ID = CUST-000001
という値を入力した場合、
IDNameWeb = TrailNest Customer ID
IDType = Customer ID
userId = CUST-000001
という形で送信する構成にします。
なお、今回 Customer ID は検証用として自由入力できるようにしています。
実際の EC サイトでは、
CRM Customer ID
Commerce Customer ID
Loyalty ID
Member ID
など、企業側で一意かつ継続的に管理されている ID を利用する方が適しています。
Salesforce の Party Identification Mapping でも、userId は Party Identification DMO の Identification Number にマッピングされます。
今回の TrailNest では、
Anonymous ID
↓
Product View
↓
Add to Cart
↓
Customer ID + Email Address を入力
↓
Contact Point Email
+
Party Identification
という流れで Profile 情報を追加していきます。
ただし、Customer ID や Email Address を送信しただけで既存顧客と自動的に統合されるわけではありません。
この後で行う、
Web Connector の Data Mapping
Data 360 の Identity Resolution
まで設定して、初めて既存の顧客 Profile と関連付けるための準備が整います。
Profile Attributes タブを開く
Sitemap Builder の Profile Attributes タブを開くと、デフォルトで Email Capture が用意されているため、そのまま利用します。

Email Capture では、次の Attribute がデフォルトで設定されています。
Key:eventType
Type:String
Value:contactPointEmail

eventType は Profile Event の種類を指定する必須項目です。Profile Data は Salesforce Interactions SDK では共通の user.attributes に格納されます。
そこで eventType を使用して、この Profile Data をどの Profile Event として処理するのか を指定します。
今回の「contactPointEmail」は、Contact Point Email の Profile Event を意味します。
Salesforce Interactions SDK の Data 360 Module は、この eventType を Web Connector Schema の Developer Name と照合し、対応する Profile Data Stream にルーティングします。
Attribute の Type
Profile Attribute の Type では、その値をどのように指定するのかを選択できます。
Sitemap Builder では、
String
Number
Boolean
Resolver
URL Param
UTM Param
Cookie
などが用意されています。

例えば、
String
→ 固定文字列Number
→ 固定数値Boolean
→ True / FalseResolver
→ Resolvers タブで作成した Resolver の結果URL Param
→ URL Parameter の値UTM Param
→ UTM Parameter の値Cookie
→ Cookie に保存された値
といった形です。
例えば、
Type:String
Value:example@example.com
とすると、example@example.com という固定値が送信されます。
しかし実際の TrailNest では、当然ながらユーザーごとに Email Address が異なります。そのため今回は、Checkout に入力された Email Address を Resolver で取得します。
ここで前回の記事で確認した Resolver がつながってきます。
Email Capture に Resolver を設定
Profile Attributes タブを開き、デフォルトで用意されている Email Capture に email Attribute を追加します。

設定は、以下で設定します。
Key:email
Type:Resolver
Resolver:Checkout Email

前回の記事で作成した Checkout Email Resolver を指定します。
これで固定された Email Address ではなく、Checkout でユーザーが入力した Email Address を contactPointEmail の email として動的に利用できるようになります。
※ この Resolver の設定が、たびたび解除されてしまう事象が発生したので、もし解除されたら再設定してください。下の Preview で email: checkoutemail() となっていれば問題ありません。
画面下部の Preview では、作成した Profile Attributes が Event の user データとしてどのように構成されるのか確認できます。
user: {
attributes: {
eventType: "contactPointEmail",
email: checkoutemail()
}
}プレビューして問題なければ、「保存」してください。特に、email が checkoputemail() になっていることを確認してください。
なお、Email Address を contactPointEmail として送信しただけで、Data 360 上の既存顧客と自動的に統合されるわけではありません。実際の顧客統合には、Web Connector の Data Mapping や Data 360 の Identity Resolution の設定も関係します。
Party Identification を追加で設定する
続いて、Checkout で入力された Customer ID を Party Identification として扱うための Profile Attribute を作成します。
今回は、前回の記事で作成した Checkout Customer ID Resolver を使用します。
Profile Attributes タブで新しい Add Profile Attribute を追加します。今回は
Customer Identification
という名前にします。
以下の 4 つの Attribute を設定します。
① eventType
Key:eventType
Type:String
Value:partyIdentification
この Profile Event が Party Identification であることを指定します。
② IDNameWeb
Key:IDNameWeb
Type:String
Value:TrailNest Customer ID
Customer ID の識別名を設定します。
③ IDType
Key:IDType
Type:String
Value:Customer ID
今回使用する識別子の種類を設定します。
④ userId
Key:userId
Type:Resolver
Resolver:Checkout Customer ID
前回作成した Resolver を指定することで、Checkout に入力された Customer ID を利用します。
Preview では、次のような構成になります。こちらも「保存」します。
user: {
attributes: {
eventType: "partyIdentification",
IDNameWeb: "TrailNest Customer ID",
IDType: "Customer ID",
userId: checkoutcustomerid()
}
}
これで、
Email Address
→ Contact Point EmailCustomer ID
→ Party Identification
という 2 種類の Profile 情報を用意できました。
いかがでしたでしょうか。
Salesforce Interactions SDK では user オブジェクトを使用して匿名ユーザー・既知ユーザーの Profile 情報を送信できます。
Profile 情報は、Login、Registration、Form Submission など、属性が初めて分かったときや更新されたときに送信するのが基本です。
ただし、この段階ではまだ Contact Point Email や Party Identification を作成しただけです。
実際に Profile Event を送信するためには、これらの Profile Attributes を Event に紐付ける必要があります。
次回は、いよいよ Events タブを設定します。
Product View、Add to Cart、Customer の確認、Purchase などの Event を作成し、これまで設定してきた、
Page Type
Resolver
Profile Attributes
を実際の Event と結び付けていきます。
今回は以上です。