---
title: "JSSトラッキングAPI"
slug: "jss-tracking-api"
abstract: "Sitecoreヘッドレスサービストラッカーのクライアント側実装の概要"
---
# JSSトラッキングAPI

[Headless Services Tracker](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/tracking-service.html "Tracking Service")のクライアント側実装は@sitecore-jss/sitecore-jss-trackingNPMパッケージです。このパッケージはTracking Service(TS)を軽量に包み込むラッパーで、シンプルな約束ベースのAPIとTypeScript型付けのサポートを提供し、使いやすくしています。  

Tracking APIにはTypeScript型付けが付属しているため、VS CodeのようなTypeScript対応エディタを使っていれば、注釈付きコード補完が可能です。

> !注Tracking APIはサーバー側レンダリング中に自動的に無効化し、クライアント側で再処理された際の重複カウントを回避します。

## イベントの種類

JSS Tracking APIを使ってイベント、目標、成果、キャンペーン、ページ/ルートビューを追跡できます。

JSSトラッキングAPIは以下のイベントタイプのインターフェースを提供します:

-   偶数タイプ:イベントプロパティ
-   GoalInstance:

{
 goalId: "<goal ID>"
}

-   OutcomeInstance:

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

-   PageViewInstance:

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

-   CampaignInstance:

{
 campaignId: "<campaign ID>"
}

-   EventInstance:

{
 eventId: "<event-value>"
}

## ページビューの追跡

トラッキングAPIは任意のページビューイベントの追跡をサポートしており、キャッシュルートやカスタムルートなど、レイアウトサービスリクエストを伴わないルート変更の追跡に役立ちます。

ページビューを追跡する際には、以下の点を念頭に置いてください:

-   レイアウトサービスへのリクエストはデフォルトでページビューを追跡します。レイアウトサービスのリクエストクエリ文字列に tracking=false を追加することで無効にできます(JSSアプリの RestLayoutService クラスで設定可能)。JSSのトラッキングAPIですべてのページトラッキングを処理したい場合は、レイアウトサービスのトラッキングを無効にするのが理にかなっているかもしれません。
-   ページビューイベントは、追跡するURLが任意であっても、追跡するためにSitecoreのアイテムIDが必要です。アイテムベースでないルートを追跡する場合は、追跡対象の代理アイテムを作成する必要があります。

## 制限

JSSトラッキングAPIには以下の制限があります:

-   JSSアプリケーションは [JSSが提供するRESTレイアウトAPIを使用する](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/fetch-layout-data-with-the-jss-rest-layout-service.html "Fetch layout data with the JSS REST Layout Service")必要があります。
-   追跡データは直接Sitecoreサービスに提出されるため、 [切断モードで](https://doc.sitecore.com/xp/ja/developers/hd/19/sitecore-headless-development/start-a-jss-app-in-disconnected-mode.html "Start a JSS app in disconnected mode")JSS追跡APIを使うことはできません。
-   グローバルクッキーやセッションクッキーが生成されなければ、JSSのトラッキングAPIは動作しません。

> !重要Sitecore 10.0.1以降、SitecoreはすべてのクッキーにデフォルトでSecureフラグを設定します。これは、接続モードやヘッドレスモードでJSSのローカル開発に影響を与えることがあります。なぜなら、アプリケーションがHTTPSで動作していない場合、プロキシされたSitecoreクッキー(分析クッキーを含む)はブラウザによって拒否されるため、訪問が追跡されず、コンテンツがパーソナライズされない場合があります。これを回避するために、以下のいずれかの方法があります:
> 
> -   ノードサーバーを改変したり、ローカルリバースプロキシを使ったり、ngrokのようなサービスを利用したりして、ローカル環境でHTTPSを有効にしてください。開発用にコンテナでSitecoreを実行する場合は、そのdocker-compose環境で提供されているTraefikリバースプロキシを利用できます。
>     
> -   Sitecore Web.configを次のように変換します:
>     
> -   httpCookies構成では、requireSSLをfalseに、sameSiteをUnspecifiedに設定します。
>     
> -   sessionState構成では、cookieSameSiteをUnspecifiedに設定します。
>     
> 
> 本番環境での回避策は推奨しません。