メインコンテンツへスキップ
Pro プラン10 minutes中級

削除権(RTBF)

訪問者からのデータ削除リクエストに対応し、忘れられる権利の要件を遵守しましょう。このプライバシーコンプライアンスガイドで削除権について学びます。

erasuredeletionrtbfgdprprivacy-rights
最終更新日:

訪問者からのデータ削除リクエストに対応し、GDPR の削除権に準拠する方法を学んでください。

削除権を理解する

RTBF とは何か

GDPR第17条による忘れられる権利(RTBF)により、個人は以下の場合に個人データの削除をリクエストできます:

  • 元の目的でデータが不要になった
  • 同意が取り消された
  • データが違法に処理された
  • 法的義務が削除を要求している
  • 個人が処理に異議を唱えている

アナリティクスに適用される場合

訪問者は自分のアナリティクスデータの削除をリクエストできます:

  • ページビューとセッション履歴
  • イベント追跡データ
  • 特定されたユーザープロフィール
  • 収益属性データ

削除リクエストを受け取る

リクエストチャネル

以下を通じてリクエストを受け付けます:

  • メール([email protected]
  • サイト上のウェブフォーム
  • 郵送
  • 対面(該当する場合)

必要な情報

リクエストを処理するには、以下が必要です:

  • 身元確認
  • リクエストされた削除の範囲
  • ユーザーが持つ識別情報

リクエストフォームの例

<form action="/privacy/erasure" method="POST">
  <h2>データ削除リクエスト</h2>

  <label>メールアドレス(確認用)</label>
  <input type="email" name="email" required>

  <label>ユーザーID(わかっている場合)</label>
  <input type="text" name="user_id">

  <label>削除すべきデータはどれですか?</label>
  <select name="scope">
    <option value="all">すべてのデータ</option>
    <option value="analytics">アナリティクスデータのみ</option>
    <option value="account">アカウントとアナリティクス</option>
  </select>

  <label>追加情報</label>
  <textarea name="details"></textarea>

  <button type="submit">リクエストを送信</button>
</form>

リクエストを処理する

ステップ1:身元を確認する

削除の前に、リクエスト者を確認してください:

// 検証プロセスの例
async function verifyIdentity(email, userId) {
  // オプション1:確認メールを送信
  await sendVerificationEmail(email, {
    action: 'data_deletion',
    token: generateSecureToken()
  });

  // オプション2:既知のユーザーと照合
  const user = await findUserByEmail(email);
  if (user && user.id === userId) {
    return { verified: true, user };
  }

  return { verified: false };
}

ステップ2:データを識別する

リクエスト者に関連するすべてのデータを見つけます:

ダッシュボード経由: 訪問者が識別されている場合(メールまたはユーザーIDをトラッカーに渡した場合)、訪問者プロフィール/analytics/profiles)を開き、名前またはメールで検索して、その人のプロフィール、セッション、イベントを確認してください。

API経由: REST API(Proプラン以上)は、ウェブサイトの訪問者レコードをリスト表示して、対応するデータを特定できます:

# ウェブサイトの訪問者データを取得
curl -X GET "https://api.zenovay.com/api/external/v1/analytics/{websiteId}/visitors" \
  -H "X-API-Key: zv_YOUR_API_KEY"

ステップ3:データを削除する

Zenovayは現在、個々の訪問者のアナリティクスレコードを削除するセルフサービスツールを提供していません。特定の訪問者または特定されたユーザーの検証済みリクエストに対応するには、[email protected]に連絡し、ウェブサイトと識別子(訪問者ID、特定されたユーザーID、またはトラッカーに渡したメール)を提供してください。Zenovayチームはあなたに代わって削除を実行します。

個々の訪問者またはユーザーデータを削除するための公開APIエンドポイントはありません – REST APIは訪問者レコードの読み取り専用です。

リクエストがあなた自身のZenovayアカウント(および関連する個人データ)の削除である場合、自分で行うことができます:プロフィール(/profile)を開き、アカウント削除を選択して確認します。これはあなたのアカウントを永久に削除し、接続されたシステム全体に削除を伝播させます。

ステップ4:完了を確認する

// リクエスト者に確認を送信
await sendEmail(requester.email, {
  subject: 'データ削除完了',
  body: `
    データ削除リクエストが処理されました。

    リクエストID: ${request.id}
    完了: ${new Date().toISOString()}
    削除されたデータ:
    - ページビュー履歴
    - イベント追跡データ
    - セッション記録
    - ユーザープロフィールデータ

    このアクションは永久的で取り消せません。
  `
});

削除されるもの

削除に含まれるもの

データタイプ削除
ページビュー
イベント
セッションデータ
セッション記録
ヒートマップ寄稿
ユーザープロフィール
収益データ
カスタムプロパティ

含まれないもの

データタイプ理由
集計統計匿名化、個人データではない
監査ログ法的要件
請求書レコード財務コンプライアンス

削除を実行する

単一の訪問者または特定されたユーザー

[email protected]にメールを送信し、ウェブサイトと削除したい識別子(訪問者ID、特定されたユーザーID、またはトラッカーに渡したメール)を提供してください。Zenovayチームはあなたのアカウントに対してリクエストを確認し、削除を実行してから確認を返します。

一括削除

複数の人を対象とした一括削除リクエストの場合、完全なリストを[email protected]に送信してください。現在、ダッシュボードにセルフサービスの一括削除ツールはありません。

タイムラインの要件

GDPR期限

アクション期限
リクエストを確認迅速に(3日以内推奨)
削除を完了30日以内
必要に応じて延長+60日(通知が必須)

リクエスト追跡

// 削除リクエストを追跡
const deletionRequest = {
  id: generateId(),
  requester_email: '[email protected]',
  user_id: 'user_123',
  received_at: new Date(),
  acknowledged_at: null,
  completed_at: null,
  status: 'pending'
};

// 確認時に更新
deletionRequest.acknowledged_at = new Date();
deletionRequest.status = 'acknowledged';

// 完了時に更新
deletionRequest.completed_at = new Date();
deletionRequest.status = 'completed';

エッジケースに対処する

ユーザーが複数の識別子を持っている

// リンクされたすべての識別子を検索
const user = await findUser(email);

const allIdentifiers = {
  user_id: user.id,
  visitor_ids: user.visitor_ids,
  emails: user.emails,
  device_ids: user.device_ids
};

// 関連するすべてのデータを削除
for (const visitorId of allIdentifiers.visitor_ids) {
  await deleteVisitorData(visitorId);
}
await deleteUserData(user.id);

匿名訪問者のリクエスト

訪問者が特定されていない場合:

  1. 持っている識別情報をリクエスト
  2. 以下を提供できるか確認:
    • Cookie値
    • デバイスフィンガープリント
    • 特定の訪問時刻
  3. 特定できない場合、データは既に匿名化されていることを説明

第三者データ

データが第三者と共有されている場合:

  1. 第三者を特定
  2. 削除リクエストを転送
  3. 第三者による削除を確認
  4. チェーンを文書化

削除の例外

拒否できる場合

GDPRは以下の場合に拒否を許可します:

  • 法的主張のためにデータが必要
  • 法的保持義務
  • 公共の利益上の理由
  • 言論の自由権の行使

拒否する方法

[リクエスト者へ]

[日付]付けのデータ削除リクエストを受け取りました。

残念ながら、以下の理由からこのリクエストに応じることができません:

[ ] 進行中の法的手続のためこのデータを保持する必要があります
[ ] このデータを保持する法的義務があります
[ ] このリクエストは明らかに不当または過度です

この決定に同意しない場合、監督当局に苦情を申し立てる権利があります。

よろしくお願いします
[あなたの会社]

オートメーション

削除リクエストの取り込みエンドポイント

Zenovayは削除リクエストウェブフックを発行しません。独自のフォームやヘルプデスクを通じて削除リクエストを収集する場合は、あなた側の取り込みエンドポイントに接続して、各リクエストがログに記録され、自動的にチケット化されるようにしてください:

// 独自の取り込みエンドポイントを設定
app.post('/privacy/deletion-intake', async (req, res) => {
  const { user_id, email, request_id } = req.body;

  // リクエストをログ
  await logDeletionRequest({
    request_id,
    user_id,
    email,
    received_at: new Date()
  });

  // 内部ワークフローをトリガー
  await createDeletionTicket({
    user_id,
    email,
    deadline: addDays(new Date(), 30)
  });

  res.status(200).json({ received: true });
});

スケジュール済みクリーンアップ

非アクティブなユーザーの削除を自動化:

// 毎日実行
async function cleanupInactiveUsers() {
  const inactiveUsers = await findUsersInactiveFor(365); // 1年

  for (const user of inactiveUsers) {
    await sendNotification(user.email,
      'ログインしない限り、30日後にデータを削除します');

    scheduleForDeletion(user.id, 30); // 日
  }
}

ドキュメンテーション

記録を保持する

以下の記録を保持してください:

レコード保持期間
削除リクエスト3年
検証証拠3年
完了確認3年
拒否理由3年

削除証明書

削除の証明を提供:

データ削除証明書

リクエストID: del_abc123
受信日: 2025-01-15
完了日: 2025-01-20

リクエスト者: [email protected]

削除されたデータ:
- 1,234ページビューレコード
- 567イベントレコード
- 89セッション記録
- 1ユーザープロフィール

削除確認者: [システム/管理者]
タイムスタンプ: 2025-01-20T15:30:00Z

この証明書は、上記のデータが当社のシステムから永久に削除されたこと
を確認し、復旧することはできません。

ベストプラクティス

レスポンステンプレート

以下のテンプレートを準備:

  • 確認メール
  • 検証リクエスト
  • 完了確認
  • 拒否(理由付き)

スタッフトレーニング

チームに以下をトレーニング:

  • 削除リクエストの認識
  • 検証手続
  • タイムライン要件
  • エスカレーションプロセス

定期的な監査

定期的に確認:

  • リクエスト処理時間
  • 完了率
  • 一般的な問題
  • プロセス改善

次のステップ

この記事は役に立ちましたか?