xDBプログラミング:ゴールやページイベントをAPIを使用して登録する

samatsu 7/22/2015 1278 N/A xDB Programming

ページイベントやゴールをAPIを使用して登録する方法をご紹介します。前提としてですが、マーケターやコンテンツの編集者はコンテンツエディターやエクスペリエンスエディターを使用して 訪問者がWebサイト上で行った様々なイベントやコンバージョンを記録することができるようになっています。

例えば、下図のようにダウンロード ページイベントを デジタルアセットデータにUI上で簡単に関連付けられます。

同じように、ゴール(コンバージョン)もUI上で簡単にページに関連付けることができます。

そのほかソーシャル連携やWFFM(フォームを簡単に作成するモジュール)を利用することで、ユーザーがあるアクションを実行したときにドロップダウンリストなどから選択したゴールをトリガーさせる設定をUI上で簡単に行えるようになっています。

多くの場合は、UIを使用してコンバージョンやイベントをトラックする設定を行えるのですが、何らかの理由によりプログラムの中でゴールやイベントをトリガーしたい場合があります。

例えばサイト内検索ページイベントを記録することを考えます。まず、サイト内検索の方法はクエリパラメーターで検索文字列を指定して検索を行ったり、テキストボックスに入力したテキストで検索をしたりなど検索キーワードの指定方法が様々です。またチェックボックスなどを用意して詳細の絞り込み条件を指定して検索できるようにする場合、細かな検索条件を自動的に判断してページイベントのデータに含めて記録することはできません。

そのような場合は、プログラムでゴールやイベントを登録する必要があります。では実際にページイベントとゴールをトリガーしてインタラクション(今回の訪問)に関連付ける方法を記載していきます。

1.ページイベントをAPIを使用して登録する

ページイベント登録用のAPIは用意してあるので次のようなコードを使用することで簡単に登録できます。下記コードサンプルでは検索ページイベントを登録しています。PageEventDataのDataプロパティに検索キーワードを設定しています。ItemIdに関連するアイテムのGUIDを設定sます。

protected void btnSearch_Click(object sender, EventArgs e)
{
    if (Tracker.IsActive && !string.IsNullOrEmpty(txtSearch.Text))
    {
        string name = "Site Search";
        // 検索イベントの定義アイテムのID
        Guid search = new Guid("{0C179613-2073-41AB-992E-027D03D523BF}");
        var pageEventData = new Sitecore.Analytics.Data.PageEventData(name, search)
        {
            ItemId = Sitecore.Context.Item.ID.Guid,
            Data = txtSearch.Text,
            Text = "Internal Site Search"
        };

        Tracker.Current.Interaction.CurrentPage.Register(pageEventData);
    }
}

ちなみに、上記サンプルではコンテキストアイテムのGUIDをページイベントに関連付けて設定していますが、これは必須ではありません。つまり、Sitecoreで管理されている純粋なWebフォーム(aspx)やMVCのコントローラーからも上記のようなコードでページイベントを登録できます。その際、関連するアイテムがなければ、ItemIdにアイテムのGUIDを設定する必要はありません。

サイト内検索で使用されたキーワードはエクスペリエンスプロファイルで確認できます。また、エクスペリエンスアナリティクスからも統計データとして確認できます。

MongoDBのItneractionsコレクションの関連するIteractionsドキュメントにページイベントが格納されます。

2.ゴールをAPIを使用して登録する

ゴールもページイベントと同じなので、ほとんど同じ(というか全く同じ)コードを使用してプログラム内でゴールをトリガーすることができます。下記サンプルでは デフォルトで作成されているデモの要望(Instant Demo)ゴールをプログラムから起動しています。見ていただくと分かりますが、ページイベントと同じです。

protected void btnGoal_Click(object sender, EventArgs e)
{
    if (Tracker.IsActive)
    {
        string name = "デモ依頼";
        var goal = new Sitecore.Analytics.Data.PageEventData(name, new Guid("{28A7C944-B8B6-45AD-A635-6F72E8F81F69}"))
        {
            ItemId = Sitecore.Context.Item.ID.Guid,
            Data = "商品の名前のIDなど詳細データ",
            Text = "商品の名前などゴールの詳細を説明するテキスト",
        };
        Tracker.Current.CurrentPage.Register(goal);
    }
}

ゴールのトリガーもページイベント同様必ずしもサイトコアアイテムに関連するページで実行する必要はありません。単純のなWebフォームやMVCのコントローラのアクションからゴールを登録することができます。その場合に関連するアイテムが存在しなければ ItemIdプロパティは未設定で構いません。トリガーされたゴール(コンバージョン)はエクスペリエンスプロファイルで確認できます。エクスペリエンスアナリティクスやテストでサイトの品質を計測する際にもトリガーされたゴールや獲得したエンゲージバリューをレポートで確認できます。

ゴールもページイベント同様インタラクション(訪問)に関連付くので Interactionsコレクションの対応するドキュメントのPageEventsフィールドの中にゴールのデータが格納されます。下図を見て分かる通りゴールの場合はIsGoalフィールドがtrueになります。

3.まとめ

xDBプログラミンのサンプルとして今回はページイベントとゴールをAPIを使用して登録する方法をご紹介しました。

2015/7/27追記

doc.sitecore.netのサイトにもプログラムを使用してページイベントと結果(Outcome)を登録する情報が掲載されたので、リンクを紹介します。

Register a page event programmatically
https://doc.sitecore.net/sitecore%20experience%20platform/xdb%20api%20customization/register%20a%20page%20event%20programmatically

Register an outcome programmatically
https://doc.sitecore.net/sitecore%20experience%20platform/xdb%20api%20customization/register%20an%20outcome%20programmatically

Sample Register a page event
https://doc.sitecore.net/sitecore%20experience%20platform/xdb%20api%20customization/sample%20register%20a%20page%20event