PLUGIN
Thanks Mail for Stripeは、Stripe Payment Linksでの購入完了時に自動でサンクスメール(お礼メール)を送信するWordPressプラグインです。
Zapier、Make、IFTTTなどの外部サービスは不要で、Stripeのwebhookを直接受信してメールを送信します。デジタル商品の販売、ソフトウェアライセンスの発行、サービス予約の確認など、様々なシーンで活用できます。
ダウンロード:
WordPress.org プラグインページ (準備中)
DEMO
Stripe Payment Linkで決済が完了すると、自動的にサンクスメールが送信されます。

日本語用と英語用のPayment Linkを作成しておけば、言語を自動判定して適切なテンプレートでメールを送信します。
INSTALLATION
- プラグインをダウンロードし、
/wp-content/plugins/ディレクトリにアップロードします - WordPress管理画面の「プラグイン」メニューからプラグインを有効化します
- 「設定」→「Thanks Mail for Stripe」で各種設定を行います
- 表示されるWebhook URLをStripeダッシュボードに登録します
- Webhook署名シークレットとPayment Link IDを設定します
- テストメールを送信して動作を確認します
サーバー要件:
- WordPress 5.0以上
- PHP 7.4以上
- SSL証明書(HTTPS必須)
- SMTPプラグイン推奨(メール到達率向上のため)
FEATURES
1. Webhook経由の自動メール送信
Stripeからwebhookイベント(checkout.session.completed)を受信すると、自動的にサンクスメールを送信します。外部サービスは一切不要です。
2. 日本語・英語テンプレート
日本語(JA)と英語(EN)それぞれのメールテンプレートを用意できます。件名と本文は管理画面から自由にカスタマイズ可能です。
3. Payment Link IDによる言語自動判定
日本語用と英語用で別々のPayment Linkを作成し、そのIDを登録しておくことで、どちらのリンクから購入されたかを判定し、適切な言語のメールを送信します。
4. 二重送信防止(冪等性)
StripeはWebhookをリトライすることがあります。同じ決済に対して複数回メールを送信しないよう、Checkout Session IDをデータベースに保存して重複を防止します。
5. Webhook署名検証
Stripeから送られてくるWebhookが本物かどうかを、HMAC-SHA256署名で検証します。なりすましリクエストを確実にブロックします。
6. テストメール機能
設定が正しく動作するか、実際にテストメールを送信して確認できます。テスト決済をしなくても動作確認が可能です。
SETTINGS
Stripe設定
| 設定項目 | 説明 |
|---|---|
| Webhook署名シークレット | Stripeダッシュボードで取得したwhsec_...を入力 |
| Payment Link ID(日本語用) | 日本語顧客向けのplink_...を入力 |
| Payment Link ID(英語用) | 英語顧客向けのplink_...を入力(オプション) |
一般設定
| 設定項目 | 説明 |
|---|---|
| ブランド名 | メール内の{brand}に置換される名前 |
| 送信元メールアドレス | Fromに表示されるメールアドレス ※必ず自分のドメインのメールアドレスを使用してください |
| 送信者名 | Fromに表示される名前 |
| 返信先メールアドレス | Reply-Toヘッダに設定(Gmail等でもOK) |
送信元メールアドレスの重要な注意
送信元メールアドレスには、必ず自分のドメインのメールアドレスを設定してください。
- OK: info@yoursite.com, support@yoursite.com
- NG: yourname@gmail.com, yourname@yahoo.co.jp
Gmailなどのフリーメールを送信元に設定すると、メールが届かない原因になります。
理由:サーバーからGmailアドレスを名乗ってメールを送信すると、受信側のメールサーバーが「なりすまし(spoofing)」と判断します。
- SPF認証失敗:GmailのSPFレコードがあなたのサーバーを許可していない
- DKIM認証失敗:Gmailの署名キーで署名されていない
- DMARC:Gmailの厳格なポリシーにより拒否/スパム扱い
返信先メールアドレス(Reply-To)は配信に影響しないため、Gmailなどを設定しても問題ありません。
メールテンプレート
日本語・英語それぞれの件名と本文を設定します。以下のプレースホルダーが使用できます。
{brand}– ブランド名(設定で指定){session_id}– Checkout Session ID(照合用){email}– 顧客のメールアドレス
STRIPE SETUP
Webhookエンドポイントの登録
- Stripeダッシュボードにログイン
- Developers → Webhooksを開く
- Add endpointをクリック
- Endpoint URLにプラグイン設定画面のURLを貼り付け
https://あなたのドメイン/wp-json/thanks-mail/v1/webhook - 以下のイベントを選択:
checkout.session.completedcheckout.session.async_payment_succeeded
- Add endpointで保存
- Signing secret(
whsec_...)をコピーしてプラグインに設定
Payment Link IDの確認方法
StripeダッシュボードでPayment Linkの詳細を開くと、URLにplink_...というIDが含まれています。
- テスト:
https://dashboard.stripe.com/test/payment-links/plink_XXXXXXXX - 本番:
https://dashboard.stripe.com/payment-links/plink_XXXXXXXX
このplink_XXXXXXXXがプラグインに入力するIDです。
TROUBLESHOOTING
Webhookが403エラーになる
セキュリティプラグインやサーバーのWAFがWebhookリクエストをブロックしている可能性があります。
Wordfenceの場合:
- Firewall → All Firewall Options → Allowlisted URLsを開く
- Webhook URLのパス(
/wp-json/thanks-mail/v1/webhook)を追加
エックスサーバーの場合:
- サーバーパネル → WordPressセキュリティ設定を開く
- 「REST API アクセス制限」をOFFにする
この設定は海外IPからのREST APIアクセスを制限するもので、Stripeからのリクエストもブロックされてしまいます。
Webhookは200なのにメールが届かない
Stripeダッシュボードで{"sent": true}と表示されているのにメールが届かない場合、以下を確認してください。
1. 送信元メールアドレスを確認
送信元メールアドレスにGmailなどのフリーメールを設定していませんか?必ず自分のドメインのメールアドレス(例:info@yoursite.com)を設定してください。詳しくは上記「送信元メールアドレスの重要な注意」を参照してください。
2. 二重送信防止機能
「最近の送信履歴」を確認してください。同じSession IDがすでに記録されている場合、二重送信防止機能が働いています。これは正常な動作です。
3. SMTPプラグインの導入
上記を確認しても届かない場合は、SMTPプラグイン(WP Mail SMTPなど)を導入して、メール送信の信頼性を向上させてください。
テスト環境と本番環境の切り替え
Stripeのテストモードと本番モードでは、以下の値がすべて異なります。
- Webhook署名シークレット(
whsec_...) - Payment Link ID(
plink_...)
本番環境に切り替える際は、必ずこれらの値をLive用のものに更新してください。また、StripeダッシュボードのWebhook設定も、テスト用とLive用で別々に登録が必要です。
FILTERS
プラグインの動作をカスタマイズするためのフィルターフックが用意されています。
メールヘッダーのカスタマイズ
CCやBCCを追加する例:
add_filter( 'stm_email_headers', function( $headers, $to, $lang, $session_id ) {
$headers[] = 'Cc: sales@example.com';
return $headers;
}, 10, 4 );
言語判定のカスタマイズ
メールアドレスのドメインで言語を判定する例:
add_filter( 'stm_detect_language', function( $lang, $session ) {
$email = $session['customer_details']['email'] ?? '';
if ( strpos( $email, '.jp' ) !== false ) {
return 'ja';
}
return $lang;
}, 10, 2 );
利用可能なフィルター一覧
stm_email_headers– メールヘッダーの変更stm_email_subject– 件名の変更stm_email_body– 本文の変更stm_detect_language– 言語判定ロジックの変更
DATABASE
プラグインはwp_stm_sent_emailsテーブルを作成し、送信履歴を保存します。
| カラム | 型 | 説明 |
|---|---|---|
| id | BIGINT | 自動採番ID |
| session_id | VARCHAR(255) | Checkout Session ID(ユニーク) |
| VARCHAR(255) | 顧客メールアドレス | |
| lang | VARCHAR(8) | 言語(ja/en) |
| product_name | VARCHAR(255) | 商品名 |
| amount | VARCHAR(50) | 金額 |
| sent_at | DATETIME | 送信日時 |
プラグインをアンインストールすると、このテーブルと設定データは自動的に削除されます。
CHANGELOG
1.0.0
- 初回リリース
- Webhook経由の自動サンクスメール送信
- 日本語・英語テンプレート対応
- Payment Link IDによる言語自動判定
- 送信元メールアドレス・送信者名のカスタマイズ
- 二重送信防止機能
- テストメール機能
- 送信履歴ログ
- Webhook署名検証
- 日本語翻訳同梱


コメント