ユーザートラッキングとプライバシー
- 1 免責条項
- 2 識別子
- 2.1 その他のサービス個別のクッキー
- 3 オプトアウト
- 3.1 オプトアウトページの作成
- 3.2 Cxenseスクリプトの変更
- 3.2.1 cx.jsを非同期で読み込んでいる場合
- 3.2.2 cx.jsを同期で読み込んでいる場合
- 3.3 オプトアウトが実際に行われているかどうかの確認
ユーザプロファイル生成に際して、Pianoはデータ収集に関する法律および業界標準を遵守し、個人を特定する情報は収集していません。Piano Insightにおけるプライバシーポリシーも併せてご参照ください。
免責条項
以下は生成されるCookieとローカルストレージに関する情報です。cx.jsのパブリックインターフェースの一部として考慮されません。これらは予告なしにいつでも動作やフォーマットを変更することがあります。
識別子
同一のユーザのサイト訪問を正確にカウントしたり、ユーザプロファイルを生成するために、Piano Insight は情報を格納する方法として、 cookie や ローカルストレージ を利用します。Pianoが使用するすべてのCookieとローカルストレージにはすべてランダムな識別子やタイムスタンプのような何らかの状態で保持したり、セグメントのマッチングの場合にはユーザIDが関連するセグメントIDといった個人を特定できない情報のみを格納します。
サイト特定の2つの1st パーティークッキーがサイトのドメインにセットされ、サイトのユーザをセッション内および複数セッションに渡って特定します。これらのクッキーはcX_S, cX_Pという名称が付いています。対応するローカルストレージのエントリー、_cX_S, _cX_Pもそれぞれセットされます。この識別子にはクライアント側、サーバ側のどちらからでもアクセスできます。クライアント側では、cX_P は cx.getUserId() で読み出すことができます。サーバサイドでは、標準的なメカニズム、例えば cX.getCookie("cX_P")で読み出すことができます。
さらに、クライアントがサポートし許可していれば、2つのサードパーティークッキーがセットされ、Cxenseネットワーク内のすべてのサイトを跨いだセッションからユーザプロファイルの生成が可能です。これらのクッキーは "gcks" や "gckp"と呼ばれます。
cX_Tクッキーが稀なケースで使用されることもあります。これは一時的にセットされすぐに消去されるものです。このクッキーはランダムな値を保持し、サイトのトップレベルドメインを見つけるために使用されます。例えば、"http://www.ibm.com" のトップレベルドメインが "http://ibm.com" であることや、"http://bbc.co.uk" が "http://www.bbc.co.uk" のトップドメインであることを特定するために使用しています。
その他のサービス個別のクッキー
上記のクッキーはPiano(旧Cxense製品)のサービスを利用する際には必ずセットされます。特定のサービスや機能を使用する場合にはさらに追加のクッキーがセットされる場合もあります:
DMPセグメントを使ってサードパーティーシステムとともに広告のターゲティングを行う場合、ユーザが属しているセグメントIDが1つのローカルストレージを使ってクライアント側でキャッシュされます:
_cX_segmentIds (セグメントIDのリスト)
名称 | 種類 | 保持期間 | 内容 | ドメイン |
| Cookie | セッション | サイト内の特定ユーザーセッション(単一セッション) | First |
| Cookie | 365日 | サイト内の特定ユーザーセッション(セッション越え) | First |
cX_G | Cookie | 365日 | 異なるIDを一つにマッピングするグローバルID | First |
| Cookie | セッション | Cxenseネットワーク内の全てのサイトにおいて、セッション情報を構築する用途 | Third |
| Cookie | 365日 | Cxenseネットワーク内の全てのサイトにおいて、ユーザープロファイル情報を構築する用途 | Third |
cX_cons | localStorage |
| 同意 を記録するため | First |
| localStorage | サードパーティシステムで、DMPセグメントを用いて広告ターゲティングをする際に利用 | First | |
| Cookie | テンポラリ | 一時的にだけセットされ、すぐに削除される | First |
| localStorage |
| ファーストパーティクッキーの "cX_S" と一致 | ー |
| localStorage |
| ファーストパーティクッキーの "cX_P" と一致 | ー |
_cX_atfr | localStorage | - | 次のページビューに送られる、ページビューの "after-the-fact" (事後)の情報を格納します。ウィンドウ サイズや widget visibility、ユーザーのページ滞在時間(active time)などの情報が含まれます。 | First |
cX_lastP1Time | localStorage |
| Safari 以外のブラウザでは週に1度 3rdパーティ IDを記録します。これは次回以降にロードする必要があります。 | First |
cX_lastLocalCstTime | SessionStorage | テンポラリ | Safari の場合、週に1度 3rd パーティIDを記録します。これは次回以降にロードする必要があります。 | First |
_cX_SA | SessionStorage | テンポラリ | セッションアノテーション用。セッション アノテーションについてはこちらを参照ください。 | First |
cX_lst | Local Storage |
| クロスサイトトラッキング用に 3rdパーティトークンを記録します。 | Third |
cx_partner | SessionStorage | テンポラリ | 各種連携先パートナーごとに <partner>=<# of hits> の形式で、パートナーごとに実行された Cookieシンク の数のログを保持します。 | First |
_cX_expires | LocalStorage |
| ローカルストレージを期限切れにすることを目的としています。デフォルトではローカルストレージの有効期限はありません。ローカルストレージのトークンは Cookie の有効期限と一致します。 | First |
cstp | Cookie | Temporary | 広告パートナーの Cookieシンク のために使用されます。オプションであり、すぐに削除されます。 | First |
cX_LSS | Cookie | 365 days | セッションの開始時間を追跡するためのオプションのツールです。 | First |
cX_LSP | Cookie | Temporary | 前回のセッション時間を記録します(cX_LSS と同様)。 | First |
オプトアウト
GDPR用途のオプトアウトの場合はこちらのページをご参照ください: GDPR と cx.js
オプトアウトページの作成
ウェブサイトに訪れたユーザーがPiano Insight(DMP、Content、CCE)でのトラッキングをオプトアウト出来るようにするには、各サイトにてオプトアウトページをご用意ください。
従来は http://cxense.com のウェブサイトに設置したオプトアウトページを直接ご利用いただいていましたが、これは3rdパーティークッキーに依存しておりました。3rdパーティークッキーはその利用制限が厳しくなってきたためお客様自身のサイトにオプトアウトページを設置していただくことが必要となりました。
オプトアウトページにはオプトアウトボタン(またはリンク)があり、それをクリックすることにより "cx_optOut=true" をブラウザのローカルストレージに書き込みます。これを実装した最小限のサンプルコードを示します:
<html>
<head>
</head>
<body>
<script type="text/javascript">
function hasLocalStorage() {
try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
}
function getOptOutStatus(key) {
var status = false;
if (hasLocalStorage()) {
var optedOut = window.localStorage.getItem(key);
if (optedOut && optedOut === 'true') {
status = true;
}
}
return status;
}
var currentStatusLabel = "Your current status is: ";
var currentStatusOpted = "Opted ";
var currentStatusOptedIn = "in";
var currentStatusOptedOut = "out";
var currentStatusOpt = "Opt ";
var currentStatusOptIn = "in";
var currentStatusOptOut = "out";
var cxOptOutKey = 'cx_optOut';
// Read the opt-out status from the local storage
var optOutStatus = getOptOutStatus(cxOptOutKey);
// Update UI to reflect current state
document.write(currentStatusLabel + currentStatusOpted + (optOutStatus ? currentStatusOptedOut : currentStatusOptedIn) + '<br />\n');
document.write('<button onclick="onButtonClick();">' + currentStatusOpt + (optOutStatus ? currentStatusOptIn : currentStatusOptOut) + '<br /></button>\n');
function onButtonClick() {
if (hasLocalStorage()) {
if (!optOutStatus)
localStorage.setItem(cxOptOutKey, 'true');
else
localStorage.removeItem(cxOptOutKey);
}
location.reload();
}
</script>
</body>
</html> |
Cxenseスクリプトの変更
上記の実装によってローカルストレージに書き込まれたオプトアウトステータスにしたがうためには、サイト上のCxenseスクリプトに下記のような変更が必要です。この変更を加えることにより、オプトアウトしたユーザーのページビューイベントは匿名化されて送信されます。
以下の変更についてサイト上に弊社タグマネでCxenseスクリプトを設置されているお客様の場合、弊社側での対応が別途必要となりますのでサポート(support@piano.io)宛にお問い合わせ下さい。 |
cx.jsを非同期で読み込んでいる場合
<script type="text/javascript">
function hasLocalStorage() {
try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
}
function cx_getOptOutStatus(key) {
var status = false;
if (hasLocalStorage()) {
var optedOut = window.localStorage.getItem(key);
if (optedOut && optedOut === 'true') {
status = true;
}
}
return status;
}
var cX = cX || { options : { consent: cx_getOptOutStatus('cx_optOut') } };
cX.callQueue = cX.callQueue || [];
cX.callQueue.push(["setSiteId", '<siteId>']);
cX.callQueue.push(["sendPageViewEvent"]);
</script>
<script type="text/javascript">
(function(d,s,e,t){e=d.createElement(s);e.type='text/java'+s;e.async='async';
e.src='http'+('https:'===location.protocol?'s://s':'://')+'cdn.cxense.com/cx.js';
t=d.getElementsByTagName(s)[0];t.parentNode.insertBefore(e,t);})(document,'script');
</script> |
cx.jsを同期で読み込んでいる場合
<script src="https://cdn.cxense.com/cx.js"></script>
<script type="text/javascript">
function hasLocalStorage() {
try { return typeof window.localStorage === 'object' && typeof window.localStorage.getItem === 'function'; } catch (e) { return false; }
}
function cx_getOptOutStatus(key) {
var status = false;
if (hasLocalStorage()) {
var optedOut = window.localStorage.getItem(key);
if (optedOut && optedOut === 'true') {
status = true;
}
}
return status;
}
if (cx_getOptOutStatus('cx_optOut')) { cX.requireConsent(); cX.clearIds(); }
cX.setSiteId('<siteId>');
cX.sendPageViewEvent();
</script> |
オプトアウトが実際に行われているかどうかの確認
作成されたオプトアウトページ上でオプトアウトを選択した場合に、cx_optOut=true のローカルストレージが作成されているかどうか
1の確認ができた状態で、ページにアクセスした際にページビューイベントの送信(rep.gif)が発生していないかどうか、発生している場合には 匿名のページビュー として送信されているか
※ rep.gif のリクエストパラメータに con=y が含まれているかどうか、これによって個人を識別するページビューとしての送信が行われず、匿名のページビュー扱いになります
※お客様側の実装状況次第でページビューイベントが全く飛ばないケースと、匿名のページビューイベントの飛ぶケースのいずれかが起こりえます
をご確認ください。