インストール状態
リアルタイム グローブを監視せずに、Zenovay トラッカーが正しく動作しているかを検証できます。Install Health エンドポイントは、トラッカーの最近のアクティビティ、サイトの到達性、現在の Cookie レス・同意記録の構成、そして対応すべき問題のリストを構造化して返します。
この URL をブラウザで直接開くことはできません。 エンドポイントは Bearer JWT を必要とします。新しいタブで URL を開くと 401 Missing or invalid authorization header が返されます。レポートを表示する方法:
- ダッシュボード (推奨) — app.zenovay.com にサインインし、ドメインを開いて 設定 → インストール状態 をクリックします。
- API — 有効な Bearer JWT (ダッシュボード セッション トークン) を付けてエンドポイントを呼び出します。下記の API リファレンス を参照してください。
表示場所
Zenovay ダッシュボードで:
- ドメイン ページを開き、対象のドメインをクリックします。
- 設定 を開き、インストール状態 タブをクリックします。
- レポートは 30 秒ごとに自動的に更新されます。更新 ボタンで強制的に再チェックできます。
レスポンスの読み方
各呼び出しは次のフィールドを持つ JSON オブジェクトを返します。
| フィールド | 型 | 意味 |
|---|---|---|
last_event_seen_at | ISO8601 | null | このサイトのイベントを Zenovay が最後に受信したタイムスタンプ。 |
minutes_since_last_event | number | null | 上記の便利な派生値。 |
last_event_count_5m | number | 直近 5 分間に受信したページビュー + カスタム イベント。 |
last_event_count_24h | number | 直近 24 時間の同じ指標。 |
script_reachable | boolean | null | サーバー側からドメインへの HEAD プローブの結果。null = プローブがブロックまたはサンドボックス、false = HTTP エラー、true = サイトが正常に応答。 |
script_version | string | null | Zenovay が現在配信しているトラッカーのバージョン。 |
csp_blocking_suspected | boolean | 将来のヒューリスティック用に予約。V1 では常に false。 |
cookieless_enabled | boolean | ダッシュボードの Cookie レス トグルが有効になっている、または 配信される HTML に Zenovay スクリプト タグの data-cookieless="true" が含まれている いずれかの場合に true。SPA が別の JS バンドルからスクリプト タグを動的に注入する場合 (Next.js、動的ローダー) は HTML スキャンで検出できません — その場合はダッシュボードの設定を明示的にオンにしてください。 |
consent_recording_active | boolean | このサイトで Cookie 同意バナー (CMP) が構成されているか。これはセッション リプレイではありません — セッション記録はドメイン → 設定 → レポート で制御される別の Pro+ 機能です。 |
last_5_event_types | string[] | 直近 5 件のカスタム イベント タイプ。 |
issues | array | 診断によって検出されたアクション可能な項目 — 下記参照。 |
ダッシュボードのステータス カラー
タブ上部の 4 枚のカードは次のしきい値を使用します。
- 緑 — 直近 5 分以内にイベントを受信。
- 黄 — 直近 1 時間以内、ただし直近 5 分以内ではない。
- 赤 — 1 時間以上イベントなし、または一度もイベントを受信していない。
よくある問題と対処
issues 配列は Zenovay が返す可能性のある診断コードを列挙します。各エントリには severity、安定した code、人間が読める message、fix_url が含まれます。
| コード | 重要度 | 意味 | 対処 |
|---|---|---|---|
awaiting_first_event | info | サイトが作成されてから 24 時間未満で、まだイベントが受信されていません。 | サイトをリロードして最初のページビューを送信してください。 |
script_never_installed | error | このトラッキング コードに対するイベントを Zenovay が一度も受信していません。 | トラッキング スクリプト がすべてのページに設置されているか確認してください。 |
silent_tracker | error | イベント間の現在の間隔がこのサイトの通常の間隔の 10 倍以上になっています (下限 6 時間、上限 7 日)。サイトが直近 24 時間に 5 件以上のイベントを受信している場合のみ発火します — 1 日 1 訪問者程度の個人サイトでは誤発火しません。 | スクリプト タグが残っているか、広告ブロッカーがリクエストを遮断していないか、Content Security Policy が api.zenovay.com をブロックしていないかを確認してください。 |
tracker_quiet | warn | 現在の間隔がこのサイトの通常の間隔の 3 倍以上になっています (下限 1 時間、上限 24 時間)。サイトが直近 24 時間に 10 件以上のイベントを受信している場合のみ発火します。低トラフィック サイトは意図的に警告されません。 | 新しいタブでサイトを開き、トラッキングが続いているか確認してください。警告には実際の間隔と通常の間隔が含まれているため、本当の障害かどうかを判断できます。 |
site_not_reachable | warn | Zenovay はサイトに到達しましたが、HTTP エラーを受信しました。 | ホスティング プロバイダーのステータスを確認してください。 |
probe_blocked | info | ネットワークまたは CSP ルールがプローブをブロックしました。トラッカー自体は動作している可能性があります。 | 情報のみ — 直近イベントのカウンターと比較してください。 |
sandbox_detected | info | ドメインが既知の開発パターン (localhost、*.vercel.app、*.netlify.app など) に一致します。 | ステージング環境では想定どおりです。 |
実際に何が送信されているか確認したいですか? Debug Overlay を有効にし、サイトの任意の URL に ?zenovay_debug=1 を付けてアクセスしてください。トラッカーが送信した直近 20 件のイベントが個人情報をマスクした状態で表示されます — Install Health が tracker_quiet を返したときに、特定のページが実際にイベントを発火しているかを確認するのに便利です。
メール アラート (ドメインごとにオプトイン)
診断がドメインで silent_tracker エラーを検出すると、Zenovay はサイトの所有者に 1 回限りのメールを送信します。イベントが再開されると、1 回限りの「復旧通知」メールが届きます。1 つの障害につき最大 1 通のメール — 5 層の重複排除でスパムを防止します:
- cron は 1 分ごとではなく、6 時間ごとに実行されます。
silent_trackerのしきい値自体が、最低 6 時間の間隔を要求します。- 直近 24 時間で 5 件未満のイベントしかないサイトは、アラートをトリガーしません (1 日 1 訪問者の個人ブログには決してメールが届きません)。
- 内部のステート マシンは遷移時のみ発火します (正常 → 沈黙、または 沈黙 → 正常)。連続する cron 実行では発火しません。
- メール ログの冪等性キーは障害の最初の沈黙のタイムスタンプに固定されています — ステート マシンのバグであっても、1 つの障害につき 2 通のサイレント メールを送信することはできません。
サンドボックス/開発ドメイン (localhost、*.vercel.app、*.netlify.app、*.pages.dev、*.workers.dev、*.test、*.local) は、アラートから完全に除外されます。
ドメインごとのアラートは、ドメイン → 設定 → インストール状態 → メール アラート で切り替えます。デフォルトはオンです。
API リファレンス
/api/install-health/:trackingCode単一のサイトに対する認証必須の診断。
URL: https://api.zenovay.com/api/install-health/<YOUR_TRACKING_CODE> — <YOUR_TRACKING_CODE> を実際のコード (例: ZV_AbCdEf...) に置き換えてください。ルート定義では Express スタイルの :trackingCode 表記を使用していますが、先頭のコロンは実際の URL には含まれません。
認証: Bearer JWT (ダッシュボードのセッション トークン)。
キャッシュ: ダッシュボードのポーリングを軽量に保つため、レスポンスは 30 秒間エッジでキャッシュされます。
プライバシー: レスポンスに個人データ (IP アドレス、User-Agent 文字列、リファラー値) は含まれません — カウント、フラグ、イベント タイプ名のみです。
リクエスト例
# URL の先頭にコロンはありません — ZV_YOUR_TRACKING_CODE を
# app.zenovay.com → ドメイン → 設定 にある実際のコードに置き換えて
# ください。Bearer JWT は必須です。ログイン済みのダッシュボード
# セッションから DevTools → ネットワーク → /api/auth/user 経由で
# コピーしてください。
curl https://api.zenovay.com/api/install-health/ZV_YOUR_TRACKING_CODE \
-H "Authorization: Bearer $YOUR_JWT"レスポンス例
{
"last_event_seen_at": "2026-05-02T21:15:42.110Z",
"minutes_since_last_event": 0,
"last_event_count_5m": 12,
"last_event_count_24h": 1843,
"script_reachable": true,
"script_version": "v2.0.1",
"csp_blocking_suspected": false,
"cookieless_enabled": true,
"consent_recording_active": false,
"last_5_event_types": ["pageview", "click", "scroll", "form_submit", "outbound_click"],
"issues": []
}このエンドポイントは意図的に認証必須となっています。トラッキング コードは事実上公開情報 (サイトの HTML に埋め込まれている) なので、認証なしの診断には独自の不正利用対策が必要になります。ダッシュボードの JWT を使用してください。