Zenovayは訪問者ごとに3つのバッジ — Anonymous、Identified、Paying — のいずれかを表示します。バッジは3Dグローブ(訪問者のホバーポップアップ内)とJourneys → Usersタブ内に表示されます。この記事では、各状態の意味、訪問者がどのように状態を移行するか、そしてダッシュボードを外部と共有する際にデータをマスクする方法を解説します。
3つのバッジ
| バッジ | 意味 | 訪問者がこの状態になるタイミング |
|---|---|---|
| Anonymous(グレー) | 訪問者はログインせずに閲覧しています。Zenovayはデバイス、国、行動を把握していますが、誰なのかは分かりません。 | 識別されていないすべてのページビューのデフォルト。Cookielessモードではクッキーは設定されません。 |
| Identified(青) | 訪問者はあなたのプロダクトにサインインしています。Zenovayはメール、名前、送信されたカスタムトレイトを把握しています。 | サイトがzenovay('identify', userId, { email, name })を呼び出した後 — 通常ログインまたはサインアップ直後。 |
| Paying(緑) | 訪問者のレコードが有料サブスクリプションに紐付いている、または生涯収益がゼロより大きい。 | 自動的に、ZenovayがStripe、LemonSqueezy、Polar、PayPalから決済webhookを受信したとき — 追加のトラッカー呼び出しは不要。 |
訪問者を「Identified」にする方法
識別はオプトインです:ユーザーがログインしたときに、サイトからzenovay('identify', ...)を呼び出す必要があります。最もシンプルな呼び出し:
// ログイン、サインアップ後、または既知のユーザーを把握できたタイミングで
zenovay('identify', user.id, {
email: user.email,
name: user.name
});
これだけです。次のページビューがそのアイデンティティに関連付けられ、バッジがAnonymousからIdentifiedに切り替わります。よくある落とし穴: identify()は安定したID(データベースの主キー)でのみ呼び出してください — メールやユーザー名はユーザーが変更できるため、userIdとして渡さないでください。
Next.js、React、Vue、プレーンHTML、Shopify、WordPressのステップバイステップ設定とコードサンプルについては、Visitor Identificationドキュメントをご覧ください。
Claude Code、Cursor、ChatGPT、GitHub Copilotを使用していますか? AIアシスタントにVisitor Identificationドキュメントを指示し、お使いのスタックにzenovay('identify')を組み込んでもらってください。ドキュメントには主要フレームワーク向けのコピー&ペースト可能なスニペットがあります。
訪問者が「Paying」になる仕組み
訪問者をトラッカー呼び出しでPayingにすることはできません。Zenovayは接続した決済プロバイダ(Stripe、LemonSqueezy、Polar、PayPal)からwebhookイベントを受信し、顧客レコードを自動的に紐付けます。決済が到着するとすぐに、訪問者のバッジがPayingに切り替わります。生涯収益と注文数が訪問者詳細パネルに表示されます。
訪問者が後でサブスクリプションをキャンセルしても、total_revenueがゼロより大きい限りPayingバッジを保持します — 過去の顧客価値はチームにとって依然として重要です。
メールがなくcustomer IDだけの場合は?
一部の統合(例:内部user IDはあるがまだメールがないモバイルアプリ)では次のように呼び出せます:
zenovay('identify', user.id, {
customer_id: 'cus_internal_123'
});
その訪問者はIdentifiedとしてカウントされます — バッジが表示され、訪問者詳細カードのメール欄にID onlyと表示されます。決済webhookがそのcustomer IDをStripe / LemonSqueezy / Polar / PayPalアカウントに紐付けた瞬間にPayingになります。
スクリーンショットやデモでの識別子の隠し方
/profile → Preferences → Blur identifiersをオンに切り替えます。メールは最初の数文字とトップレベルドメイン以外がマスクされます(例:jo••••@ex••.com)、名前は各部分の最初の文字だけが表示されます(例:J••• D•)。ダッシュボード全体にこのマスキングが適用されます。トグルはブラウザごとに保持されるため、リロード後に再有効化する必要はありません。
ブラーはプレゼンテーション補助であり、アクセス制御ではありません。 ブラウザのDevToolsを持つユーザーは、トグルがオンの状態でもマスクされていないデータを見ることができます。識別子へのアクセスを本当に制限するには、Settings → Teamでチームメンバーシップを管理してください。
公開ダッシュボードは常にマスクされます
読み取り専用の公開ダッシュボードを共有するとき、識別子はトグルの状態に関係なくマスクされます。ダッシュボード所有者が公開URL経由で表示する場合でもメールは最初の数文字とトップレベルドメイン以外がマスクされ(例:jo••••@ex••.com)、名前はJ••• D•として表示されます。Globe APIは公開レスポンスからidentity_email、identity_name、identity_planフィールドを完全に省略します — データはUIで非表示になっているだけでなく、そもそも送信されません。
これは厳格な保証です:受信者に実際の顧客のメールを漏らすことなく公開リンクを共有できます。
バッジが表示される場所
- 3Dグローブ:訪問者マーカーをクリックしてポップアップを開きます — ポップアップにはバッジが表示されます(Payingは緑、Identifiedは青)。
- Journeys → Usersタブ:Users一覧の各行にバッジが表示され、訪問者詳細パネルに
identify()で送信したメール、名前、プラン、カスタムトレイトを含む完全なアイデンティティカードが表示されます。テーブル上のgoal、device、OS、country、sourceフィルターを使って一覧を絞り込むことができます。
よくある質問
Q: identify()を使うのにクッキーは必要ですか?
A: いいえ。Zenovayのcookielessモードはウィンドウスコープのインメモリvisitor IDを使用します — identify()はクッキーやlocalStorageエントリを設定することなく、既存のセッションをユーザーに紐付けます。
Q: identify()はGDPR / ePrivacyの同意が必要ですか?
A: 処理の根拠によります。Cookielessトラッカー自体はユーザーのデバイスに何も保存しないため、ePrivacy第5条(3)を発動しません。ただしidentify()呼び出しは個人データ(メール、名前)を処理するため、GDPR第6条に基づく法的根拠が必要です。多くのプロダクトでは「契約の履行」(ユーザーがあなたのプロダクトにサインインしている)が根拠となります。
Q: webhookなしでidentify()を使って訪問者を直接paying扱いにできますか?
A: 設計上できません。Payingステータスはtotal_revenue > 0または決済プロバイダのcustomer IDから導出され、両方ともwebhookが設定します。これにより値が検証可能に保たれます — フィナンシャルチームが実際の金銭に紐付いているためバッジを信頼できます。テストのために手動で訪問者をマークする必要がある場合は、Stripe Test Modeを通じて$0のテスト決済を実行してください。
Q: 同じブラウザセッションに対して異なるIDでidentify()を呼び出すとどうなりますか?
A: Zenovayはアカウント切り替えとして扱います — 新しいアイデンティティがその訪問者レコードの古いものを置き換えます。前のidentifyイベントはタイムラインに残るため、アカウント変更を監査できます。
関連記事
- 公開ダッシュボードの共有方法は? — 共有リンクのマスキングとアクセス制御
- Zenovayはクッキーを使いますか? — クッキーなしで識別がどう機能するか
- Stripe Revenue統合 — Payingバッジのための決済webhook接続