---
title: "追跡サービス"
slug: "tracking-service"
abstract: "ヘッドレスフロントエンドアプリケーションにおけるイベント、目標、成果、キャンペーン、ページ/ルートビューの追跡"
---
# 追跡サービス

Headless Servicesが提供するトラッキングサービスは、クライアント側の行動に基づいてSitecore分析イベントをxDBにプッシュできる分析トラッキングREST APIです。デフォルトではイベント、目標、アウトカム、キャンペーン、ページ/ルートビューの追跡をサポートしており、高度なトラッキングニーズに応じて拡張可能です。

## セットアップ

トラッキングサービスはインストールされていますが、Sitecore Headless Servicesをインストールする際に *デフォルトで無効*になります。

トラッカーを有効にするには、例えば構成パッチファイルでSitecore.JSS.TrackerServiceEnabled設定をtrueに設定してください。

<configuration>
 <sitecore>
 <settings>
 <setting name="Sitecore.JSS.TrackerServiceEnabled" value="true" />
 </settings>
 </sitecore>
</configuration>

トラッカーは他のサービスと同様に[SSC APIキー](https://doc.sitecore.com/xp/en/developers/102/sitecore-experience-manager/api-keys-for-the-odata-item-service.html) を利用しています。APIキーはトラッカーのCORSサポートを可能にします。各アプリに1つのAPIキーを使うのが良い習慣ですが、すべてのサービスで同じAPIキーを使うことができます。

## トラッキングイベント

エンドポイント /sitecore/api/jss/track/event?sc\_apikey=keyを使ってイベントを追跡できます。

エンドポイントはJSONのペイロードでPOSTリクエストを受け入れます。

以下の表は追跡可能なイベントの種類と、トラッキングサービスエンドポイントに送信すべきペイロードを示しています。

-   イベントタイプ:ペイロード
-   目標:

{
 "goalId": "<goal ID>"
}

-   結果:

{
 "outcomeId": "<goal ID>",
 "currencyCode": "<currency code>",
 "monetaryValue": "<monetary value>"
}

-   ページイベント:

{
 "pageId": "<page ID>",
 "url": "<page URL>"
}

-   キャンペーン:

{
 "campaignId": "<campaign ID>"
}

-   イベント:

{
 "eventId": "<event-value>"
}

> !ヒントJSSアプリケーションを開発している場合、[JSS Tracking API](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/jss-tracking-api.html "JSS Tracking API")を利用できます。

## 連絡先および追跡データのインデックス化と閲覧

トラッキングコードによってプッシュされたデータは [エクスペリエンスプロファイル](https://doc.sitecore.com/xp/en/users/102/sitecore-experience-platform/experience-profile.html)で確認できます。

デフォルトでは、Sitecoreは匿名の連絡先データをインデックス化しないため、非特定ユーザーのデータはエクスペリエンスプロファイルに表示されません。テスト結果をより効率的に確認するには、[匿名連絡先のインデックス化を有効にする](https://doc.sitecore.com/xp/en/developers/102/sitecore-experience-platform/enable-indexing-of-anonymous-contacts-in-the-xdb-index.html)ことができます。

> !重要本番環境での匿名連絡先のインデックス化は推奨しません。

トラッカーサービスは最初から [連絡先の特定](https://doc.sitecore.com/xp/en/developers/102/sitecore-experience-platform/identifying-contacts.html) をサポートしていませんが、拡張は可能です。

Sitecore、ユーザーセッション終了前にトラッキングデータをExperience Profileに保存またはインデックス化しません。ユーザーセッションを終了するには、エンドポイントを呼び出し /sitecore/api/jss/track/flush。

## トラッカーの拡張

トラッカーは追跡データの導管であり、必要に応じて拡張します。App\_Config\\Sitecore\\JavaScriptServices\\Sitecore.JavaScriptServices.Tracker.configで定義されたtrackEventパイプラインは、受信する追跡リクエストを処理する役割を担います。

構成パッチを使って、新規または交換したパイプラインプロセッサを含めることができます。

プロセッサはSitecore.JavaScriptServices.Tracker.Pipelines.TrackEvent<T>から派生し、TはC#型で、JSONをデシリアライズします。

パイプラインプロセッサTrackEventメソッドは以下の条件を満たす必要があります:

-   受信リクエストを処理できない場合はリターンします。他の操作なしにパイプラインプロセッサに戻ると、パイプラインは再開され(次のプロセッサへ続きます)。
-   もし受信リクエストを処理できるなら、 args.HasBeenTracked() を呼び出してパイプラインを中止します。パイプラインを中止すると、すでにいくつかのアクションが取られている可能性があるため、さらなる処理が停止されます。
-   リクエストを処理 *できる* がエラーが発生した場合は args.ReportError() 呼び出して戻します。