概要
KARTE を導入するサービスでは、次のように同一端末で複数のログインアカウントが切り替わる場合があります。
- 家族共用 PC: 同じブラウザで家族それぞれが EC サイトやサービスにログイン
- 接客端末: 店舗スタッフが顧客情報を確認後、別の顧客の対応に移る端末
ここでは、同一端末で複数のログインアカウントが切り替わる場合に起こりうる事象とその解決方法について説明します。
起こりうる事象
同一端末で複数の利用者がログインする環境では、ログアウト後も KARTE 側で前の利用者として認識され続け、次の利用者がログインをするまでは前の利用者向けの接客が配信される事象が起こりえます。
この事象を解決するためには、ログアウト時に visitor_id のリセット を行うことを推奨します。
なぜこの事象が起こるのか
解決方法の説明の前に、この事象が起こるメカニズムについて簡単に説明します。
この事象は KARTE のユーザー識別の仕組みに起因しています。
前提
当ページでは次のように呼称し、説明します。
- ビジター: visitor_id のみを連携しているエンドユーザー
- メンバー: 独自の user_id を連携しているエンドユーザー
- ユーザー: user_id の連携有無を問わないエンドユーザー
KARTE のユーザー識別の基本
KARTE では、以下の 2 つの識別子を使ってユーザーを管理しています。
- visitor_id: 各ブラウザ・端末に固有の識別子(自動発行)
- user_id: サービス上のユーザー ID(identify イベントで連携)
identify イベントで user_id というフィールドを連携すると、KARTE 側で visitor_id と user_id を紐付けします。
通常、user_id はサービス側がユーザーに対して払い出す一意な識別子です。
そのため、とあるユーザーが複数のブラウザや端末を利用していても、identify イベントで user_id を連携した時点でブラウザ・端末固有の visitor_id と一意な user_id が紐づきます。
これにより、複数ブラウザや端末をまたいだイベントを同一メンバーのイベントとして統合できます。
対して、同一端末(つまり 1 つの visitor_id)から複数の user_id を連携する場合は、異なる user_id (例: user_id: A と user_id: B)ごとに独立したメンバーとして扱われます。各 user_id に紐付くデータは以下のように管理されます。
- user_id: A を連携中のイベントは user_id: A に紐づく
- user_id: B を連携中のイベントは user_id: B に紐づく
- メンバー間のデータはマージされない(異なるメンバー同士はマージできない)
※ 基本的なユーザー識別の流れは ユーザーマージの仕様 をご覧ください。
事象が起こるメカニズム
- ログイン時: identify イベントで visitor_id と user_id が紐付けられる
- ログアウト時: アプリケーション側ではログアウトするが、KARTE 側では visitor_id と user_id の紐付きが残り続ける
- 次のユーザーの利用時: 同じ端末(同じ visitor_id)のため、前のユーザーが操作しているものとして認識される
つまり、KARTE では明示的に「ユーザーが切り替わった」ことを伝えない限り、ログアウト後であっても前のユーザーの情報をもとにした制御がなされてしまいます。
※ 次のユーザーがログインすれば KARTE に「ユーザーが切り替わった」ことが伝わり正しく認識されます。
解決方法
この問題を解決するには、ログアウト時に visitor_id のリセット を行います。
visitor_id のリセットとは、新しい visitor_id を発行して KARTE に「新しいユーザーが端末を使い始めた」ことを認識させる処理です。
これにより、前にログインしていたユーザーの情報が引き継がれることを防ぎ、ログアウト後に別のユーザーが使い始めたことを正しく認識できるため、適切な接客サービスを配信することができます。
実装について
visitor_id をリセットするタイミング
以下の 2 つのタイミングで visitor_id のリセットを行うことを推奨します。
- ログインアカウントが切り替わる時
- visitor_id のリセット
- 新しい user_id を identify イベントとして送信
- ログアウト時(アカウント切り替えを伴わない場合も)
- visitor_id のリセット
実装方法
visitor_id のリセットの実装は KARTE Web, KARTE for App でそれぞれ異なります。
プラットフォーム | 実装方法 | 詳細ドキュメント |
---|---|---|
KARTE Web | krt('renew_visitor_id') |
krt('renew_visitor_id') |
KARTE for App (iOS) | KarteApp.renewVisitorId() |
[iOS] アプリケーションのログアウトに対応する |
KARTE for App (Android) | KarteApp.renewVisitorId() |
[Android] アプリケーションのログアウトに対応する |
実装時の注意事項
- KARTE Web では、visitor_id リセット時に録画中のライブが停止される処理が行われるため、KARTE Live をご利用の場合にはこの点に注意してください
- KARTE for App では、WebView 利用時は Cookie や LocalStorage のクリアも併せて実行することを推奨します
Before/After の動作例
リセットしない場合(問題のあるパターン)
- A さんがログインして顧客情報を閲覧(visitor_id: 001 + user_id: userA)
- A さんがログアウト(KARTE 側では visitor_id: 001 + user_id: userA の紐付きが残る)
- B さんが同じ端末を使用(visitor_id: 001 のまま)
- B さんに A さん向けの接客が配信される
リセットする場合(正しいパターン)
- A さんがログインして顧客情報を閲覧(visitor_id: 001 + user_id: userA)
- A さんがログアウト + visitor_id リセット実行(visitor_id: 002 に変更)
- B さんが同じ端末を使用(visitor_id: 002 の新規ユーザー)
- B さんに適切な新規ユーザー向け接客が配信される