# ワンクリック配信停止管理

ワンクリック配信停止は、メール受信者がメールクライアントのインターフェースから直接、ワンクリックでマーケティングメールの配信を停止できる機能です。この機能は、CAN-SPAM、GDPR、CASL、RFC 8058などのメール規制への準拠を保証すると同時に、ユーザーエクスペリエンスとメール配信性を向上させます。

## 概要

Treasure Data Managed Unsubscribeを有効にすると、システムは自動的に以下を実行します。

- RFC 8058準拠のヘッダー(`List-Unsubscribe`と`List-Unsubscribe-Post`)をすべての送信メールに追加
- メールクライアントの互換性を最大化するため、HTTPSとmailtoの両方の配信停止方法を提供
- Treasure Dataのインフラストラクチャを通じて配信停止リクエストを安全に処理
- レポートと抑制のために、すべての配信停止イベントを一元化されたデータベーステーブルに記録


### List-Unsubscribe Headerとは？

List-Unsubscribe Headerは、受信者が将来のメールをオプトアウトする簡単な方法を提供するメールヘッダーフィールドです。通常、メールコンテンツとは別に、メールクライアントのインターフェースに「配信停止」リンクまたはボタンとして表示されます。

![Gmail配信停止ボタン](/assets/one-click-unsubscribe-example-3.9717d98e00887d5d7a4b0da8c7c2544d890afa89afec68a9660c8240e386685e.5be018a0.png)

### なぜ重要なのですか？

2024年2月から、GoogleとYahooは、すべてのバルクマーケティングメールがワンクリックのList-Unsubscribe Headerをサポートすることを要求し始めました。この要件は、より良いユーザーエクスペリエンス、受信トレイへの配置の改善、および現代のメール規制への準拠を確保するのに役立ちます。

## 仕組み

### マーケター向け

1. **Sender Profileの設定**: Sender Profile設定で「Treasure Data Managed Unsubscribe Link and Email」を有効化
2. **リダイレクトURLの設定**: 配信停止後にユーザーがリダイレクトされるブランドランディングページのURLを指定
3. **キャンペーンの送信**: このSender Profileを使用して送信されるすべてのメールに、配信停止機能が自動的に含まれます
4. **イベントの追跡**: `subscription_events`テーブルで配信停止イベントを監視


### エンドユーザー向け

受信者がメールを受信すると、主要なメールクライアント(Gmail、Yahoo、Outlook.com)のメールヘッダーに「配信停止」ボタンが表示されます。

![Gmail配信停止ボタン](/assets/one-click-unsubscribe-example-3.9717d98e00887d5d7a4b0da8c7c2544d890afa89afec68a9660c8240e386685e.5be018a0.png)

このボタンをクリックすると、次の2つの方法のいずれかがトリガーされます。

1. **HTTPS POST**(最新のメールクライアントで推奨): Treasure Dataの配信停止エンドポイントに直接POSTリクエストを送信
2. **Mailto**(フォールバック): Treasure Dataの配信停止メールアドレスにメールを送信


どちらの方法でも、配信停止リクエストが安全に処理され、データベースに記録されます。

**ユーザーエクスペリエンスの例:**

ユーザーが配信停止ボタンをクリックすると、確認ダイアログが表示されます：

![配信停止確認ダイアログ](/assets/one-click-unsubscribe-example-1.21aa521ac35f1d5a835385b538141bec3f20c6fedc390f03d39495a0073dae55.5be018a0.png)

確認後、成功メッセージが表示されます：

![配信停止成功メッセージ](/assets/one-click-unsubscribe-example-2.3382503c6421d212245013ae68720526047695b60e426c78e64bb986fb37cb70.5be018a0.png)

## TD Managed One-Click Unsubscribeの設定

### 前提条件

- Engage Studioで設定された検証済みのメールドメイン
- キャンペーン用に作成されたSender Profile
- 配信停止確認用の顧客ホスト型ランディングページ(HTTPS必須)


注意
ランディングページは顧客側でホストする必要があります。Treasure Dataによるホスト型ランディングページは今後のリリースで提供予定です。

### 設定手順

1. **Sending Configurations** > **Sender Profiles**に移動
2. 新しいSender Profileを作成するか、既存のものを編集
3. **Unsubscribe Header**タブに移動
4. **「Treasure Data Managed Unsubscribe Link and Email」**を選択
5. **Redirect URL**を入力(`https://`で始まる必要があります)
例: `https://www.yourcompany.com/unsubscribe-confirmation`
これは、ユーザーが配信停止をクリックした後にリダイレクトされるカスタマーランディングページです。
6. **Save**をクリック


### 生成されるメールヘッダー

この設定を使用してメールを送信すると、Treasure Dataは自動的に以下のヘッダーを追加します。


```
List-Unsubscribe: <mailto:unsubscribe@engage-subscription.{region}.treasuredata.com?subject={token}>, <https://engage-subscription.{region}.treasuredata.com/unsubscribe?token={token}>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
```

これらのヘッダーは、メールクライアントにワンクリック配信停止リクエストの処理方法を指示します。

**注意**: `{region}`は、Treasure Dataのリージョン（us01、eu01、ap03、またはap02）に自動的に置き換えられます。

## テンプレート変数の使用

特別なテンプレート変数を使用して、メールコンテンツに配信停止リンクを直接埋め込むことができます。これらの変数は、TD Managed Unsubscribeが有効な場合に利用できます。

### 利用可能な変数

| 変数 | 説明 | 出力例 |
|  --- | --- | --- |
| `{{sender.unsubscribe_url}}` | セキュアトークン付きHTTPS配信停止URL | `https://yourlandingpage.com?postTo=https%3A%2F%2Fengage-subscription.{region}.treasuredata.com%2Funsubscribe%3Ftoken%3Dabc123` |
| `{{sender.unsubscribe_email}}` | Mailto配信停止アドレス | `unsubscribe@engage-subscription.{region}.treasuredata.com` |
| `{{sender.unsubscribe_email_subject}}` | Mailto配信停止の件名（セキュアトークンを含む） | `abc123` |


**注意**: 例の`{region}`は、実際のTreasure Dataリージョンコードに自動的に置き換えられます。

### メールテンプレートでの使用例

**HTTPS配信停止:**


```html
<p>
  If you no longer wish to receive these emails,
  <a href="{{sender.unsubscribe_url}}">click here to unsubscribe</a>.
</p>
```

**Mailto配信停止:**

メール経由で配信停止を有効にするには、メールの件名にトークンを含める必要があります：


```html
<p>
  If you no longer wish to receive these emails,
  <a href="mailto:{{sender.unsubscribe_email}}?subject={{sender.unsubscribe_email_subject}}">
    unsubscribe via email
  </a>.
</p>
```

**Visual Editorの使用:**

Visual Editorを使用してメールテンプレートを作成する場合、リンク挿入ダイアログからmailto配信停止リンクを挿入できます：

1. 配信停止リンクにしたいテキストを選択
2. ツールバーのリンクアイコンをクリック
3. Link Typeとして**E-MAIL**を選択
4. 以下のフィールドに入力：
  - **Email**: `{{sender.unsubscribe_email}}`
  - **Subject**: `{{sender.unsubscribe_email_subject}}`
  - **Text to display**: 任意のリンクテキスト（例：「Unsubscribe email」）
5. **OK**をクリック


![Visual Editor - Mailto配信停止リンク設定](/assets/visual-editor-mailto-unsubscribe.e2a512a4b254413026f5cd1dd61c847a06ddf95e3b383de326bdc5aafe53f256.5be018a0.png)

重要
`{{sender.unsubscribe_url}}`を使用する場合、URLには自動的にTD配信停止エンドポイントを含む`postTo`パラメータが含まれます。ランディングページはこのパラメータを抽出し、POSTリクエストを送信して配信停止プロセスを完了する必要があります。

## 配信停止イベントデータ

すべての配信停止イベントは、メールドメインのデータベース内の`subscription_events`テーブルに自動的に記録されます。これにより、配信停止アクティビティを追跡し、トレンドを分析し、配信停止ユーザーを今後のキャンペーンから除外するワークフローを構築できます。

サブスクリプションイベントのスキーマ、クエリ、ベストプラクティスの詳細については、[サブスクリプションイベントテーブル](/ja/products/marketing-cloud/engage-studio/channels/email/subscription-events-table)を参照してください。

## カスタムランディングページの構築

ユーザーがメール本文の配信停止リンク(`{{sender.unsubscribe_url}}`を使用)をクリックすると、カスタムランディングページにリダイレクトされます。ページはTreasure DataにPOSTリクエストを送信して配信停止プロセスを完了する必要があります。

重要
ランディングページは顧客側の独自のインフラストラクチャでホストする必要があります。Treasure Dataは現在、ホスト型ランディングページを提供していませんが、この機能は今後のリリースで提供予定です。

### ランディングページの要件

1. **トークンの抽出**: URLから`postTo`パラメータを解析
2. **確認の表示**: 確認メッセージまたはボタンを表示
3. **POSTリクエストの送信**: TD配信停止エンドポイントにPOSTリクエストを送信


### ランディングページ実装例


```html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>配信停止確認</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 600px;
            margin: 50px auto;
            padding: 20px;
            text-align: center;
        }
        .success {
            color: #2e7d32;
            background-color: #e8f5e8;
            padding: 20px;
            border-radius: 8px;
            margin: 20px 0;
        }
        .error {
            color: #d32f2f;
            background-color: #ffebee;
            padding: 20px;
            border-radius: 8px;
            margin: 20px 0;
        }
        .loading {
            color: #1976d2;
        }
        #postForm {
            display: none;
        }
    </style>
</head>
<body>
    <h1>配信停止</h1>
    <div id="result">
        <p class="loading">配信停止リクエストを処理中...</p>
    </div>

    <!-- 自動送信用の隠しフォーム -->
    <form id="postForm" method="POST" target="responseFrame"></form>
    <iframe name="responseFrame" style="display: none;"></iframe>

    <script>
        function getUrlParameter(name) {
            const urlParams = new URLSearchParams(window.location.search);
            return urlParams.get(name);
        }

        function displayMessage(message, type = 'success') {
            const resultDiv = document.getElementById('result');
            resultDiv.innerHTML = `<div class="${type}">${message}</div>`;
        }

        function submitForm(url) {
            const form = document.getElementById('postForm');
            form.action = url;
            form.submit();

            // 送信後に成功メッセージを表示
            setTimeout(() => {
                displayMessage(`
                    <h2>ありがとうございます</h2>
                    <p>メールの配信停止が完了しました。</p>
                    <p>今後、マーケティングメールは配信されません。</p>
                `, 'success');
            }, 1000);
        }

        function init() {
            const postTo = getUrlParameter('postTo');

            if (!postTo) {
                displayMessage(`
                    <strong>エラー：無効な配信停止リンクです</strong><br>
                    引き続きメールを受信する場合は、サポートまでお問い合わせください。
                `, 'error');
                return;
            }

            // URL形式の検証
            try {
                new URL(postTo);
                submitForm(postTo);
            } catch (e) {
                displayMessage(`
                    <strong>エラー：無効な配信停止リンクです</strong><br>
                    引き続きメールを受信する場合は、サポートまでお問い合わせください。
                `, 'error');
            }
        }

        window.addEventListener('DOMContentLoaded', init);
    </script>
</body>
</html>
```

注意
自社デザインが必要な場合は、要件に応じてCSSやHTMLを更新してください。

### 配信停止エンドポイント

**メソッド**: `POST`

**リージョン別エンドポイントURL**:

| リージョン | エンドポイントURL |
|  --- | --- |
| US | `https://engage-subscription.us01.treasuredata.com/unsubscribe` |
| EU | `https://engage-subscription.eu01.treasuredata.com/unsubscribe` |
| Tokyo | `https://engage-subscription.treasuredata.co.jp/unsubscribe` |
| Korea | `https://engage-subscription.ap02.treasuredata.com/unsubscribe` |


**パラメータ**:

- `token` (クエリパラメータ): メールからの一意の暗号化されたトークン


**リクエスト例**:


```
POST https://engage-subscription.{region}.treasuredata.com/unsubscribe?token={token}
```

**レスポンス**:

成功 (200):


```json
{
  "message": "Success"
}
```

エラー (400):


```json
{
  "message": "Invalid request"
}
```

**注意**: `{{sender.unsubscribe_url}}`を使用すると、エンドポイントURLは`postTo`パラメータに自動的に含まれます。ランディングページはこのURLを抽出し、POSTリクエストを送信する必要があります。

## トークンのセキュリティと有効期限

各配信停止リンクには、一意のセキュアなトークンが含まれており、以下の特性があります：

- **メール送信後60日間有効**です
- **暗号化されており**、ユーザーのプライバシーを保護し、改ざんを防止します
- **メールを受信した特定の受信者の配信停止にのみ使用できます**


**異なるシナリオでのトークンの動作：**

- **期限切れトークン（60日超過）**: POSTリクエストは`Invalid request` (400)を返し、イベントは記録されません。ユーザーにはサポートへの連絡または代替方法の使用を促すメッセージを表示する必要があります
- **重複リクエスト**: 有効期間内のすべてのリクエストは正常に処理され、`subscription_events`に複数のイベントが記録されます。操作は冪等です（配信停止は配信停止のまま）
- **無効または改ざんされたトークン**: リクエストは`Invalid request` (400)を返し、データベースにデータは書き込まれません。


## よくある質問

### どのメールクライアントがワンクリック配信停止をサポートしていますか？

メールクライアントごとに異なる配信停止方法をサポートしています。

| メールクライアント | Mailtoヘッダー | HTTPSヘッダー | One-Click (RFC 8058) |
|  --- | --- | --- | --- |
| Gmail | サポート* | サポート | サポート |
| Gmail Mobile | 非サポート | 非サポート | 非サポート |
| Apple Mail (iOS/macOS) | サポート | サポート | サポート |
| Outlook.com | サポート | 非サポート | 非サポート |
| Yahoo! Mail | サポート* | 非サポート | サポート |
| Samsung Mail | 非サポート | 非サポート | 非サポート |


*GmailとYahooは最終的にmailtoを廃止し、ワンクリックHTTPSのみをサポートする予定です。

**ベストプラクティス**: 最大限の互換性のために、HTTPSとmailtoの両方のヘッダーを常に含め、ヘッダーをサポートしないクライアント向けに`{{sender.unsubscribe_url}}`を使用してメール本文に配信停止リンクを追加してください。

### Gmailで配信停止ボタンが表示されないのはなぜですか？

配信停止ボタンが表示されない原因：

- 送信者レピュテーションまたはドメインレピュテーションが低い
- メール送信量が不十分(Gmailは一貫した送信量を要求)
- ヘッダーが欠落または不正


**確認方法**:

- Gmailの「メールのソースを表示」を使用してヘッダーの存在を確認
- ドメイン認証(SPF、DKIM、DMARC)を確認
- スパム苦情を減らして送信者レピュテーションを改善


**テストの代替手段**: Apple Mail（iPhone/iPad/Mac）を使用して配信停止機能をテストすることをお勧めします。配信停止ボタンが確実に表示され、mailtoとHTTPS POSTヘッダーの両方をサポートしています。

## 現在の制限事項

ワンクリック配信停止機能には現在以下の制限があります。

- **単一のグローバルサブスクリプショングループ**: 現在、すべての配信停止は単一の「Global」サブスクリプショングループに適用されます。トピックベースの配信停止管理(特定のメールタイプから配信停止できる機能)は今後のリリースで利用可能になります。
- **オプトアウトのみ**: 現在、オプトアウト(配信停止)イベントのみがサポートされています。オプトイン(再登録)機能はまだ利用できず、カスタム実装で管理する必要があります。
- **メールチャネルのみ**: 現在はメールキャンペーンに限定されています。SMS、プッシュ通知、その他のチャネルのサポートは今後のリリースで追加されます。
- **顧客ホスト型ランディングページが必要**: 顧客は配信停止確認用の独自のランディングページをホストする必要があります。Treasure Dataによるホスト型ランディングページとプリファレンスセンターは今後のリリースで提供予定です。
- **手動抑制**: マーケターは配信停止ユーザーをキャンペーンから除外するワークフローを手動で構築する必要があります。配信停止ユーザーについては、Attributeのアトリビュートとして追加するように連携する必要があります。配信レイヤーでの自動抑制は今後のリリースで追加されます。


## 関連ドキュメント

- [サブスクリプションイベントテーブル](/ja/products/marketing-cloud/engage-studio/channels/email/subscription-events-table)
- [Email Sender Configuration](/ja/products/marketing-cloud/engage-studio/channels/email/email-sender-configuration)
- [Email Domain Configuration](/ja/products/marketing-cloud/engage-studio/channels/email/email-domain-configuration)
- [Email Deliverability & Authentication](/ja/products/marketing-cloud/engage-studio/channels/email/email-deliverability-authentication)
- [Email Delivery Events Table](/ja/products/marketing-cloud/engage-studio/channels/email/email-delivery-events-table)


## サポート

ワンクリック配信停止に関する問題が発生した場合は、以下の情報を添えてTreasure サポートに連絡してください。

- Campaign ID
- トークン値(該当する場合)
- 配信停止試行のタイムスタンプ
- 受信したエラーメッセージ