Thanks Mail for Stripe
Thanks Mail for Stripe は、Stripe Payment Links での購入完了後に、カスタマイズしたサンクスメールを顧客に自動送信する軽量プラグインです。デジタル商品の販売、ソフトウェアライセンス、サービスビジネスに最適です。
👉 セットアップガイドと開発者向けメモ : 開発の背景と Stripe Webhooks の設定方法
外部サービス不要 – Stripe Webhooks と直接連携
このプラグインは Stripe Webhook イベントを直接受信し、WordPress 組み込みのメール関数を使用してメールを送信します。Zapier、Make、その他のサードパーティ自動化サービスは不要です。
主な機能
- メール自動送信 – Stripe Webhook 経由でサンクスメールを自動送信する
- 多言語サポート – ロケール設定付きのカスタマイズ可能なメールテンプレート最大 10 種類
- スマート言語検出 – Payment Link ID またはロケールから顧客の言語を自動検出する
- カスタマイズ可能なテンプレート – プレースホルダーを使用してメールの件名と本文を自由にカスタマイズ可能
- カスタム送信者設定 – 差出人メールアドレスと送信者名をカスタマイズする
- 重複送信防止 – 組み込みの冪等性処理によりメールの重複送信を防止する
- テストメール機能 – 本番稼働前にテストメールを送信して設定を確認する
- メールログ – 管理画面で送信済みメールの履歴を表示する
- セキュアな Webhook 検証 – Stripe Webhook 署名を検証する (HMAC-SHA256)
仕組み
- 顧客が Stripe Payment Link で購入する
- Stripe が WordPress サイトに Webhook イベントを送信する
- セキュリティのために Webhook 署名を検証する
- Payment Link ID に基づいて顧客の言語を検出する
- サンクスメールを wp_mail() を使用して顧客に送信する
- リトライ時の重複送信を防止するためにトランザクションをログに記録する
ユースケース
- デジタル商品の販売 (ソフトウェア、電子書籍、コース)
- ソフトウェアライセンスキーの配布 (手動フォローアップ)
- サービス予約の確認メール
- 寄付のサンクスメッセージ
- Stripe Payment Links を使用したすべてのチェックアウト
要件
- WordPress 5.0以上
- PHP 7.4以上
- Payment Links が有効な Stripe アカウント
- SSL 証明書 (HTTPS) – Webhook に必要
- 確実なメール配信のために SMTP プラグインを推奨
メール送信のベストプラクティス
重要:「差出人メールアドレス」の設定には必ず独自ドメインのメールアドレスを使用してください。
- 良い例: info@yoursite.com, support@yoursite.com
- 悪い例: yourname@gmail.com, yourname@yahoo.com
Gmail やその他のフリーメールサービスを差出人に使用すると、SPF/DKIM/DMARC 認証により配信が失敗します。サーバーは Gmail の代わりにメールを送信する権限がありません。
「返信先」の設定には任意のメールアドレス (Gmail を含む) を使用できます。この設定は返信先のみに影響し、メール配信には影響しません。
推奨 SMTP プラグイン
確実なメール配信のために、SMTP プラグインの使用を推奨します:
- WP Mail SMTP
- Post SMTP
- FluentSMTP
これらのプラグインは PHP の mail() 関数の代わりに適切な SMTP サーバーを通じてメールを送信し、配信率を向上させます。
テストモードとライブモード
テストモードからライブモードに切り替える際は、設定の更新を忘れないでください:
- Webhook 署名シークレット – テストとライブで異なるシークレットを持つ (whsec_…)
- Payment Link ID – テストとライブで異なる ID を持つ (plink_…)
- Webhook エンドポイント – Stripe ダッシュボードでテストモードとライブモードの両方にエンドポイントを登録する
セキュリティのベストプラクティス
- プラグインは HMAC-SHA256 を使用して Stripe Webhook 署名を検証する
- Webhook リクエストは5分間の許容範囲内で検証される
- メールの重複送信を防止するためにセッション ID を保存する
- すべての設定が適切にサニタイズおよびエスケープされている
利用可能なフィルターフック
プラグインはカスタマイズ用のフィルターフックを提供します:
tmfs_email_headers– 送信前にメールヘッダーを変更するtmfs_email_subject– メール件名をカスタマイズするtmfs_email_body– メール本文をカスタマイズするtmfs_detect_language– 言語検出ロジックをオーバーライドする
例: メールに CC を追加
add_filter( 'tmfs_email_headers', function( $headers, $to, $lang, $session_id ) {
$headers[] = 'Cc: sales@example.com';
return $headers;
}, 10, 4 );
例: カスタム言語検出
add_filter( 'tmfs_detect_language', function( $lang, $session ) {
// Custom logic based on session data
if ( strpos( $session['customer_details']['email'], '.jp' ) !== false ) {
return 'ja';
}
return $lang;
}, 10, 2 );
データベーステーブル
プラグインは送信済みメールを追跡するためにテーブル {prefix}stm_sent_emails を作成します:
id– 自動採番 IDsession_id– Stripe Checkout セッション ID (ユニーク)email– 顧客のメールアドレスlang– 検出された言語 (ja/en)product_name– 商品名 (利用可能な場合)amount– 購入金額sent_at– メール送信時のタイムスタンプ
Webhook の問題のトラブルシューティング
Webhook が動作しない場合は、以下の一般的な問題を確認してください:
- SSL 証明書 – Stripe は Webhook に HTTPS を必要とする
- Webhook URL – URL が正しくアクセス可能であることを確認する
- 署名シークレット – テスト/ライブモードに正しいシークレットを使用しているか確認する
- サーバーファイアウォール – 海外 IP からのリクエストをブロックするホスティングがある
- セキュリティプラグイン – REST API エンドポイントをブロックする場合がある
- WAF ルール – サーバーレベルの WAF が Webhook リクエストをブロックする場合がある
Stripe ダッシュボード > Developers > Webhooks で詳細なエラーログを確認してください。
データとプライバシー
このプラグインは、メールの重複送信を防止し、管理者が配信履歴を確認できるよう、WordPress データベースにメール配信ログを保存します。このプラグインが外部サービスにデータを送信することはありません。
保存されるデータ
プラグインはカスタムデータベーステーブル ({prefix}stm_sent_emails) に以下のデータを保存します:
session_id– Stripe Checkout セッション ID (重複送信防止用のユニークキーとして使用)email– 顧客のメールアドレス (どの顧客にメールが送信されたかの確認用)lang– 検出された言語コード、ja または en (使用されたテンプレートの記録用)product_name– 商品名 (将来の使用のために予約)amount– 購入金額と通貨 (管理者の参照用)sent_at– メール送信時のタイムスタンプ
さらに、プラグインの設定 (Webhook シークレット、メールテンプレート、Payment Link ID など) は wp_options テーブルにキー stm_settings で保存されます。
目的
- 重複送信防止 – Stripe は Webhook イベントをリトライする場合がある。セッション ID により同じメールの二重送信を防止する
- 配信確認 – 管理者がメールが正しいアドレスに送信されたことを確認できる
- カスタマーサポート – 顧客からの問い合わせに対応するためのトランザクション参照
データ保持
- メールログはデフォルトで無期限に保存される
- 管理者はデータベースアクセスにより個別のレコードを手動で削除可能
- WordPress 管理画面からプラグインをアンインストールすると、すべてのデータ (ログと設定) が自動的に削除される
外部サービス
- このプラグインは Stripe からの Webhook イベントを受信するのみで、Stripe への外部 API 呼び出しは行わない
- このプラグインが顧客データをサードパーティサービスに送信することはない
- メールは WordPress 組み込みの
wp_mail()関数を使用して送信される (配信はサーバーまたは SMTP プラグインの設定に依存)
GDPR に関する考慮事項
- 顧客のメールアドレスは、メールの重複送信防止と配信記録の管理という正当な業務目的で保存される
- サイトのプライバシーポリシーにこのデータ保存について記載する必要がある
- 顧客からの要求に応じて、データベースへの直接アクセスによりデータのエクスポートまたは削除が可能
