ここでは、Webページ上で取得できる外部サービスのCookie等を使ってKARTE上の複数ビジターをマージする方法について説明します。
この機能は計測タグv2設置ページのみで利用可能です
使用目的
- サイト側で保持する、KARTEが発行するビジターIDよりも安定的なユーザーの識別ID(以下、「外部サービスのID」)を連携するために利用します
- この機能では主に、「ログインID」などサイト側で特定された個人に付与するIDではなく、アノニマスなユーザーに対して付与された「外部サービスのID」を連携することが想定されています
- 「ログインID」を連携する場合は、ユーザータグ(identifyイベント)のuser_idフィールドを使って連携することを推奨しています
この機能でできること
- Webページ上からKARTEに対して「外部サービスのサーバーサイドCookieに保存されたID」等を連携することで、そのIDを使ってKARTE上に複数いるビジターを1人のユーザーにマージすることができます
- これにより、「本来は同一ブラウザからのアクセスであるにも関わらずKARTE上では別々のユーザーとして計測されたビジター」を、KARTE上でも同一ユーザーとして解釈し直すことができるケースがあります
この機能ではできないこと
- この機能で利用するためのサーバーサイドCookie自体をKARTEから発行することはできません。サーバーサイドCookieは、別のサービス(Googleタグマネージャー等)を使って発行する必要があります
注意点
誤ったユーザーのマージについて
- この機能を通じてKARTEに連携されるIDが正しくない場合、別々のブラウザからアクセスした別々のビジターが、意図せずマージされてしまう可能性があります
- たとえば、ユーザー全員に固定のIDを連携してしまうと、意図せず全ユーザーが同一ユーザーにマージされてしまう恐れがあります
- タグの実装においては、ブラウザ毎にユニークなIDが正しく連携されるよう、事前に十分に検証してください
意図せずユーザーがマージされてしまった期間のイベントデータについては、正しい状態に後から復元することはできません。十分に注意してタグの実装や検証を実施してください。
連携するIDについて
- 連携するIDは、次の条件を満たすものを推奨しています
- 第三者から推測困難な値である
- メールアドレスや電話番号など個人特定に利用可能なセンシティブな情報に該当しない
- 上記の条件を満たさない場合、ハッシュ化するなど復元困難な値に変換してから連携することを推奨しています
設定方法
「external_id連携タグ」を設置する
- 下記のような「external_id連携タグ」をWebページ上に設置することで、KARTEに外部サービスのIDを連携することができます
<script type="text/javascript">
krt('set', {
external_id: {{外部サービスのIDを文字列で渡す}}
});
</script>
※ まずは検証用のユーザーに対してのみタグを配信し、問題が無ければ全ユーザーに適用するようにしてください
ユーザーのマージを確認する
- 自分自身のユーザーで上記タグを配信した場合、まずはKARTE管理画面上でそのユーザーを特定しましょう
- 外部のIDが正しく連携されたユーザーは、次のような状態になります
- identifyイベントが自動発生し、
wuid-ext-連携されたID
という形式の値がuser_idフィールドに連携されます - ユーザーの統合(
_merge_user
)イベントが発生し、wuid-ext-連携されたID
という形式のuser_idを持つユーザーにマージされます
- identifyイベントが自動発生し、
注意点
「external_id連携タグ」と「ユーザータグ」の同時実行不具合
概要
上記「external_id連携タグ」と「user_idを含むユーザータグ」を同時に実行する場合、外部サービスID(external_id
)を使ったユーザーのマージとログインID(identify.user_id
)を使ったユーザーのマージのいずれか一方が失敗することがあります。
原因
2023年8月現在、KARTEの解析基盤では次のような仕様となっています。
- 1リクエスト中に含まれる複数のイベントでユーザーマージがされうるIDが複数連携されても、ユーザーマージ処理にはそのうちの1つのIDしか利用されない
「external_id連携タグ」と「user_idを含むユーザータグ」を同時に実行する場合、両者から発生するイベントが同一リクエストで送られることがあります。その場合、いずれか一方のタグに起因するマージ処理しか実行されなくなります。
回避方法
「external_id連携タグ」と「user_idを含むユーザータグ」の処理が同時に実行されないよう、いずれか一方の処理の実行を遅延させてください。
「external_id連携タグ」の実行を遅延させる場合の例を次に示します。
<script type="text/javascript">
// 実行遅延させない場合
krt('set', {
external_id: {{外部サービスのIDを文字列で渡す}}
});
</script>
<script type="text/javascript">
// 実行遅延させる場合
setTimeout(function() {
krt('set', {
external_id: {{外部サービスのIDを文字列で渡す}}
});
}, 1000); // 1,000ms後に実行する
</script>