共有PCでの家族の利用や、店舗の接客端末など、同一端末で複数のログインアカウントが切り替わる場合には、パターンに応じて以下のような実装を推奨します。
- ログインアカウントが切り替わる時に実行する処理
- visiror_idのリセット
- 切り替えた user_id を identify.user_id として送信
- ログアウト時(ログインアカウントの切り替えを伴わない)に実行する処理
- visitor_idのリセット
visitor_idのリセットの実装は KARTE Web, KARTE for App でそれぞれ異なります。実装の詳細については以下の記事をご覧ください。
- KARTE Web:
- KARTE for App:
KARTEのユーザー識別の仕組み
KARTEでは、identifyイベントでuser_idというフィールドを連携すると、複数のブラウザやデバイスでのエンドユーザーのイベントを同一ユーザーのイベントとして統合します。基本的なユーザー識別の流れは ユーザーマージの仕様 をご覧ください。
同一端末から複数のuser_idを連携する場合のデータ管理
user_idが異なる場合(例:user_id: Aとuser_id: B)、それぞれは独立したユーザーとして扱われます。各メンバーIDに紐付くデータは以下のように管理されます。
- user_id: Aを連携中のイベントはuser_id: Aに紐づく
- user_id: Bを連携中のイベントはuser_id: Bに紐づく
- メンバー間のデータはマージされない(メンバー同士はマージできない)
KARTEでは強整合性に基づき解析が行われるため、原則としてイベントの送信順に準拠して解析が進められます。ただし、以下のようなケースでは、イベントが意図したユーザーに紐付かない状況が生じることがあります。
- SPAでviewイベントとidentifyイベントの実行タイミングが前後する場合
- イベント発生とidentifyイベントの実行順序が制御できない実装環境
明示的なログアウトを行った場合でも、krt('renew_visitor_id')
を実行しないと、KARTEは以前送信されたuser_idのユーザーとして認識し続けてしまいます。
visitor_idのリセット処理有無による違い
krt('renew_visitor_id')
などのリセット処理を実行することで、visitor_id が再生成され、新しいKARTEユーザーとして認識されるようになります。これにより、例えばログアウトなどでKARTEユーザーがメンバーでなくなったことを正しく認識させることができます。
renewを行わない場合の問題点
renewを行わない場合、ログアウト時にメンバーとして認識され続けてしまうことにより、ログアウト後のユーザーに対して本来メンバーに配信されるはずの接客が配信されてしまうことがある点が問題です。
一例として、サイト上でエンドユーザーがログインを行った際にはidentifyでuser_id: Aを送信してメンバーとして認識させるが、ログアウト時にはKARTEユーザーのリセット処理を実行しない場合の処理の流れを図示します。(こちらはあくまで一例となります。)
- ユーザーはvisitor_id:001として計測される
- identifyイベントでuser_id:Aを送信する
- visitor_id:001がuser_id:Aとしてメンバー化される
- クライアント側でuser_id:Aからログアウトする
- ❌ クライアント側ではログアウトしているが、KARTEはuser_id:Aとして認識し続ける
- 任意のイベントを送信すると、ログアウトしたユーザーに対して、KARTEはuser_id:Aとして解析・配信を行う
- ❌ ログアウトしたユーザーに対して、user_id:A向けの接客が表示される
renewを行う場合の動作
renewを行う場合、ログアウト時にvisitor_idがリセットされることで、renew後のユーザーは新規のvisitorとして認識されます。それにより、ログアウトしたユーザーに対してvisitor向けの接客を表示でき、正しい接客を実現できます。
一例として、サイト上でエンドユーザーがログインを行った際にはidentifyでuser_idを送信してメンバーとして認識させ、かつ、ログアウト時にKARTEユーザーのリセット処理を実行する場合の処理の流れを図示します。(こちらはあくまで一例となります。)
- ユーザーはvisitor_id:001として計測される
- identifyイベントでuser_id:Aを送信する
- visitor_id:001がuser_id:Aとしてメンバー化される
- クライアント側でuser_id:Aからログアウトする
- クライアント側でrenewを実行する
- ⭕ visitor_id:001がリセットされ、以降visitor_id:002として計測される
- 任意のイベントを送信すると、ログアウトしたユーザーに対して、KARTEはvisitor_id:002として解析・配信を行う
- ⭕ ログアウトしたユーザーに対して、visitor_id:002向けの接客が表示される
ログアウト時にkrt('renew_visitor_id')
を行うことで、ブラウザや端末上で新しいKARTEユーザーとして認識することができ、その後再度ログイン(identifyイベント発生)するまでの行動を再ログイン時のユーザーIDに紐付けることができます(同一ユーザーIDであれば、同じユーザーとして行動ログはマージされます)。
renewによる KARTE Live の録画の停止について
KARTE Webではkrt('renew_visitor_id')
を実行すると録画中のライブを停止する処理が行われます。KARTE Liveをご利用の場合、ユーザー切り替え時にはrenewを実行することを推奨します。
renewによるキャッシュ等のクリアについて
図中の「キャッシュ等がクリア」にて説明されている処理の詳細については、以下のドキュメントをご覧ください。