メインコンテンツへスキップ
見出し画像
Photo bycocoro_no_koe

【第586回】Personalization:Sitemap Builder で Profile Attribute を設定する

    Nobuyuki Watanabe

    前回の記事では、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 / False

    • Resolver
      → 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 Email

    • Customer 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 と結び付けていきます。

    今回は以上です。


    次の記事はこちら

    前回の記事はこちら

    私の note のトップページはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。