mcpField
D
double-opt-in-email

double-opt-in-email

github.com/mukul975マーケティング・グロース32339 回インストール32 週間前に更新
リポジトリ

double-opt-in-email について

ダブルオプトインのメール購読フローを設計するための実務的なスキルです。マーケティング同意を扱うチーム向けに、確認手順、抑制リスト、複数地域の法令要件を整理します。

主な機能

  1. 012段階のメール同意フロー
  2. 02メール形式の検証
  3. 03抑制リストの確認
  4. 04トークンの期限と再試行処理
  5. 05複数地域の同意ルール

活用シーン

  1. 01ニュースレター登録フローの構築
  2. 02抑制リスト宛ての確認メール送信の防止
  3. 03期限切れまたは再利用された確認リンクへの対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/privacy-data-protection-skills --skill double-opt-in-email

インストール後、Claude Code で/double-opt-in-emailを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
template.md
references/
standards.md
workflows.md
scripts/
process.py

詳細

ダブルオプトインメールの実装

概要

ダブルオプトイン(DOI)は、メールマーケティングにおける同意取得のゴールドスタンダードです。次の2つの手順が必要です。(1)ユーザーがメールアドレスを送信し、関心があることを示します。(2)ユーザーが確認メール内の認証リンクをクリックします。これにより、GDPR第7条1項(立証可能性)、ePrivacy指令第13条(電子メールマーケティングに対する事前同意)、およびドイツ連邦通常裁判所(BGH)の判決で定められた、ドイツで期待される標準としてのDOIを満たす、検証可能な同意記録が作成されます。

ダブルオプトインのワークフロー

START: User enters email on CloudVault SaaS Inc. sign-up or newsletter form
  │
  ├─► Step 1: Initial Opt-In Request
  │     ├─ User enters email address
  │     ├─ User ticks unticked checkbox: "Send me product updates and news"
  │     ├─ Validate email format (RFC 5322)
  │     ├─ Check suppression list — if email is suppressed, do NOT send confirmation
  │     └─ Display: "Check your email to confirm your subscription."
  │
  ├─► Step 2: Generate Confirmation Token
  │     ├─ Create cryptographically random token (256-bit, URL-safe base64)
  │     ├─ Associate token with: email address, purpose, timestamp, IP, user agent
  │     ├─ Set expiration: 48 hours from generation
  │     └─ Store pending subscription record (status: "pending_confirmation")
  │
  ├─► Step 3: Send Confirmation Email
  │     ├─ From: [email protected]
  │     ├─ Subject: "Confirm your CloudVault newsletter subscription"
  │     ├─ Body:
  │     │   ├─ "You requested to receive product updates from CloudVault SaaS Inc."
  │     │   ├─ "Click below to confirm:"
  │     │   ├─ [Confirm Subscription] button → confirmation URL with token
  │     │   ├─ "If you didn't request this, you can ignore this email."
  │     │   ├─ "This link expires in 48 hours."
  │     │   └─ Controller details: CloudVault SaaS Inc., 42 Innovation Drive, Dublin
  │     ├─ Headers:
  │     │   ├─ List-Unsubscribe: <mailto:[email protected]>
  │     │   └─ List-Unsubscribe-Post: List-Unsubscribe=One-Click
  │     └─ Note: This confirmation email is NOT marketing — it is transactional
  │
  ├─► Step 4: User Clicks Confirmation Link
  │     ├─ Validate token: exists, not expired, not already used
  │     ├─ If valid:
  │     │   ├─ Update subscription status: "confirmed"
  │     │   ├─ Record consent with full audit trail:
  │     │   │   ├─ Initial request: timestamp, IP, user agent
  │     │   │   ├─ Confirmation: timestamp, IP, user agent
  │     │   │   └─ Consent text version hash
  │     │   ├─ Add email to active marketing list
  │     │   └─ Display: "Subscription confirmed! You'll receive updates from CloudVault."
  │     │
  │     ├─ If expired:
  │     │   ├─ Display: "This link has expired. Please subscribe again."
  │     │   └─ Delete pending record
  │     │
  │     └─ If already used:
  │           └─ Display: "You're already subscribed."
  │
  └─► Step 5: Ongoing Management
        ├─ Every marketing email includes one-click unsubscribe (RFC 8058)
        ├─ Unsubscribe adds to suppression list (permanent)
        ├─ Consent records retained for demonstration per Art. 7(1)
        └─ Re-consent requested after 24 months of inactivity

トークンの有効期限と再試行の処理

シナリオアクション理由
トークンの有効期限が切れた(48時間)保留中のレコードを削除し、リマインダーを送信しませんスパムのリスクを避けます。ユーザーは再登録できます
ユーザーが2回リクエストした1件が保留中の場合、2回目の確認メールは送信しませんメールの大量送信を防ぎます
メールがバウンスした保留中のレコードに「バウンス」のマークを付け、再試行しません無効なメールアドレスです
トークンが2回使用された「登録済み」ページを表示しますレコードの重複を防ぎます

抑制リストの管理

抑制リストは、CAN-SPAM法第7704(a)(3)(A)条(配信停止処理を10日以内に行うこと)およびGDPR第17条3項(c)(法的義務の遵守のための保持)への準拠に不可欠です。

  1. 配信停止があった場合:そのメールアドレスを直ちに抑制リストに追加します
  2. 抑制リストは恒久的です:メールアドレスを抑制リストから自動的に削除してはいけません
  3. 送信前に確認します:マーケティングメールを送信する前、およびDOI確認メールを送信する前に、必ず抑制リストを確認します
  4. 抑制対象のメールアドレスで再登録があった場合:再登録を許可しますが、新たにDOI確認を求めます。確認リンクがクリックされた後にのみ、抑制リストから削除します

複数法域への準拠

要件GDPR + ePrivacyCAN-SPAM(米国)CASL(カナダ)
同意の種類事前オプトイン(DOIを推奨)オプトアウト(ただし、DOIがベストプラクティス)明示的な同意(黙示の同意には制限あり)
配信停止第7条3項 — 同意を与える場合と同じくらい簡単に行える処理に10営業日処理に10営業日
送信者の識別情報第13条1項(a)実際の郵送先住所が必要連絡先情報が必要
記録の保持第7条1項 — 同意を立証するオプトアウトのリクエストを3年間保持する同意記録を保持する
罰則最大2,000万ユーロ、または全世界の売上高の4%メール1通あたり最大51,744ドル違反1件あたり最大1,000万カナダドル

主な規制上の参考資料

  • ePrivacy指令第13条 — 未承諾の通信
  • GDPR第7条1項 — 同意の立証
  • GDPR第7条3項 — 同意の撤回
  • CAN-SPAM法(15 U.S.C. 7701-7713) — 米国の商用メール要件
  • CASL(S.C. 2010, c. 23) — カナダのスパム対策法
  • RFC 8058 — メーリングリストのメールヘッダーでワンクリック機能を通知する方法
  • ドイツBGH VI ZR 269/12(2004年) — メールマーケティングの同意取得における標準としてのダブルオプトイン
  • CNILの商業的勧誘に関する決議(2022年) — メール同意要件

コメント