WordPressでStripe Payment Linkを使って商品を売っていると、決済後のサンクスメールを自動で送りたくなります。ZapierやMakeで組む方法もありますが、月額コストがかかり、フローが止まってメールが届いていなかった、という事故も起こります。この記事では、外部サービスを使わずWordPressサーバー内だけで完結させる方法を、実際に導入して運用した手順でまとめます。Stripe側のWebhook登録、送信元メールがSPFで弾かれる罠、Xserverで403になる原因まで、つまずく箇所を先に潰しておきます。
使うのは、Stripe Payment Linkの決済完了をWebhookで受け取ってメールを送る無料プラグイン「Thanks Mail for Stripe」です。
この記事でわかること
- Stripe決済後にサンクスメールを自動送信する仕組み
- Stripe側のWebhook設定の手順(ここが一番つまずく)
- 送信元メールアドレスの落とし穴(SPF認証で届かなくなる話)
- Xserverなど国内サーバーで起きる403エラーの対処法
Stripe決済後のメール自動送信で何が解決するか
Stripe Payment Linkの決済完了後に、自分のブランド名でサンクスメールを自動送信できるのが最大の価値です。
- 外部サービス不要(Zapier/Makeの月額コストがゼロに)
- 日本語・英語のテンプレート切り替え(Payment Link単位で言語判定)
- 二重送信防止つき(Stripeのwebhookリトライに対応済み)
逆に、フィルターフックによる高度なカスタマイズなど開発者向けの詳細は開発元の公式ページにまとまっています。この記事では、運用者視点の「ここを押さえれば動く」ポイントに寄せます。
Zapier・Makeと比べてどうか|月額コストと停止リスク
Stripe決済後にメールを送る手段はいくつかありますが、運用コストと信頼性が違います。
ZapierやMakeは自由度が高い代わりに、月額費用がかかり、外部サービスが止まればメールも止まります。個人的には、「月数件から数十件の販売規模で、ランニングコストを抑えたい」ならプラグインで完結させるのがちょうどいいと感じました。
仕組み|Stripe WebhookからWordPressのメール送信までの流れ
動作はとてもシンプルです。
- お客さんがStripe Payment Linkで決済する
- StripeがwebhookイベントをあなたのWordPressに送信する
- プラグインが署名を検証し、正規のリクエストか確認する
- Payment Link IDで言語を判定し、テンプレートに沿ってメールを送信する
- 送信済みSession IDを記録し、二重送信を防止する
外部サービスを経由しないので、「気づいたらフローが止まっていた」という事故が起きません。
プラグインのインストール手順
方法1:WordPress管理画面から(推奨)
- WordPress管理画面 →「プラグイン」→「新規追加」
- 検索で「Thanks Mail for Stripe」
- 「今すぐインストール」→「有効化」
方法2:手動インストール
- WordPress.orgのプラグインページからZIPを取得
- 解凍して
thanks-mail-for-stripeフォルダを/wp-content/plugins/へアップロード - 管理画面の「プラグイン」で有効化
Stripe Webhookの登録手順(ここが山場)
プラグイン自体のインストールは簡単ですが、Stripe側のWebhook登録がいちばんの山場です。ここを乗り越えれば、あとは管理画面で項目を埋めるだけです。
Step 1:StripeダッシュボードでWebhookを登録する
全体の流れはこうなります。
- Stripeダッシュボードにログイン
- Developers → Webhooks → Add endpoint
- Endpoint URLにプラグイン設定画面に表示されるURLを貼り付け:
https://あなたのドメイン/wp-json/thanks-mail/v1/webhook - イベントは
checkout.session.completedとcheckout.session.async_payment_succeededを選択 - 保存後に表示されるSigning secret(
whsec_...)をコピー
Stripeダッシュボードの画面はこのようになっています。

Add endpointでURLの入力とイベントの選択を行います。

保存後に表示されるSigning secretを必ずコピーしてください。

Step 2:プラグインの設定画面を埋める

| 設定項目 | 設定する値 | 補足 |
|---|---|---|
| Webhook署名シークレット | whsec_...をペースト | Step 1でコピーしたもの |
| Payment Link ID(日本語用) | plink_... | StripeのPayment Link詳細URLから確認 |
| Payment Link ID(英語用) | plink_... | 英語版を用意している場合のみ |
| ブランド名 | サービス名やショップ名 | メール内の{brand}に表示される |
| 送信元メールアドレス | info@yoursite.com | 必ず自分のドメインのアドレス |
| 送信者名 | Fromに表示される名前 | |
| 返信先メールアドレス | Reply-Toに設定するアドレス | Gmail等でもOK |
日本語用と英語用でそれぞれPayment Linkを作成し、そのIDを登録しておくと、どちらのリンクから購入されたかを判定して適切な言語のテンプレートでメールを送信します。
Step 3:テストメールで動作確認する
設定画面にテストメール送信ボタンがあります。まずはここで送信が通るか確認してから、Stripeのテストモードで実際の決済フローを試しましょう。

実際にテストメールが届くか、受信箱も確認します。

Stripe Webhookでメールが届かないときの原因と対処
トラブルが起きたとき、以下のフローチャートで原因を切り分けできます。
送信元をGmailにするとメールが届かない(SPF認証の失敗)
これがいちばん多いハマりポイントです。
WordPressサーバーから yourname@gmail.com を名乗ってメールを送ると、受信側サーバーが「このサーバーはGmailの送信元として許可されていない」と判断して弾きます。これがSPF認証の失敗です。
対策:送信元(From)は必ず自分のドメインのメールアドレスを使う。
info@yoursite.com や shop@yoursite.com など、WordPressを動かしているドメインのアドレスにしてください。返信先(Reply-To)にGmailを設定するのは問題ありません。
XserverでStripe Webhookが403エラーになる|REST APIアクセス制限
Xserver(エックスサーバー)を使っている場合、StripeのWebhookがすべて403で弾かれることがあります。
原因:Xserverの「WordPressセキュリティ設定」にある「REST APIアクセス制限」がONになっていると、海外IPからのREST APIアクセスがブロックされます。Stripeのサーバーは海外にあるため、当然ブロック対象になります。
対策:サーバーパネル → WordPressセキュリティ設定 →「REST APIアクセス制限」をOFFにする。

Wordfenceなどのセキュリティプラグインを使っている場合は、WebhookのURL(/wp-json/thanks-mail/v1/webhook)をホワイトリストに追加してください。
Webhookは200 OKなのにメールが届かない場合の3原因
Stripeのダッシュボードで200 OKが返っているのにメールが届かない場合、3つの原因が考えられます。

- 送信元がフリーメール → 上記のSPF認証の問題。自ドメインのアドレスに変更する
- 二重送信防止が作動 → 「最近の送信履歴」に同じSession IDがあれば正常動作
- サーバーのメール送信自体の問題 → WP Mail SMTPなどのSMTPプラグインの導入を検討する
Stripeのテストモードから本番環境への切り替え忘れ
Stripeのテストモードと本番モードでは、Webhook署名シークレット(whsec_...)とPayment Link ID(plink_...)がすべて別物です。
本番環境に移行する際は、StripeダッシュボードのWebhook設定もLive用で別途登録し、プラグインの値もLive用に更新してください。ここを忘れると「テストでは動いたのに本番で動かない」になります。
サンクスメールのテンプレートをカスタマイズする
件名と本文は管理画面から自由に編集できます。以下のプレースホルダーが使えます。
{brand}:設定で指定したブランド名{email}:顧客のメールアドレス{session_id}:Checkout Session ID(照合用)
ダウンロードリンクを含めたり、クーポンコードを添えたり、自由にカスタマイズできます。フィルターフックによるさらに細かい制御(CC追加、言語判定のカスタマイズなど)は開発元の公式ドキュメントを参照してください。
送信履歴で「メールが届いたか」を確認する
管理画面の「最近の送信履歴」で、いつ・誰に・どの商品のメールを送ったかが確認できます。

お客さんから「メールが届いていない」と問い合わせがあったとき、ここを見れば送信の有無をすぐに確認できます。プラグインをアンインストールすると、このデータも自動的に削除されるので、個人情報が残り続ける心配もありません。
よくある質問
Stripeの決済後にメールを自動送信するのに、Zapierは必要ですか?
必要ありません。WordPressプラグインでStripeのWebhookを直接受け取れば、外部サービスを経由せずにメールを送信できます。月額コストがかからず、外部サービスの障害でフローが止まる心配もなくなります。
Stripe Webhookが403エラーで届きません。原因は何ですか?
Xserverなど国内サーバーで「REST APIアクセス制限」が有効になっていると、海外IPからのリクエストが遮断されます。Stripeのサーバーは海外にあるため、この設定がオンだとWebhookがすべて403で弾かれます。サーバーパネルのWordPressセキュリティ設定でオフにしてください。
Webhookは200 OKなのにメールが届かないのはなぜですか?
多くの場合、送信元メールアドレスにGmailなどのフリーメールを指定していることが原因です。SPF認証に失敗して受信側で弾かれます。送信元は必ず自分のドメインのアドレスにしてください。返信先にGmailを指定するのは問題ありません。
Stripeのテストモードで動いたのに、本番で動きません。
Webhook署名シークレット(whsec_)とPayment Link ID(plink_)は、テストモードと本番モードで別の値です。本番用のWebhookを改めて登録し、プラグイン側の設定値も本番用に差し替えてください。
日本語と英語でサンクスメールを出し分けられますか?
できます。日本語用と英語用のPayment Linkをそれぞれ作成し、そのIDを登録しておくと、どちらのリンクから購入されたかを判定して対応する言語のテンプレートで送信されます。
プラグインは無料で使えますか?
WordPress.orgで公開されている無料プラグインです。Stripeの決済手数料以外に、メール送信のための追加費用はかかりません。
まとめ|Stripe決済後のメール自動化は月額0円でできる
Stripe Payment Linkで商品を販売しているなら、サンクスメールの自動送信はWordPress側だけで完結できます。
- ZapierやMakeの月額コストをなくしたい人
- 自分のブランド名でサンクスメールを送りたい人
- 日本語と英語でテンプレートを分けたい人
- 外部サービスの障害に振り回されたくない人
セットアップのハードルは「Stripe側のWebhook登録」と「送信元メールアドレスの設定」の2点。ここさえクリアすれば、あとは放っておいても動き続けます。もし403エラーで詰まったら、Xserverの REST APIアクセス制限を思い出してください。
ダウンロード・一次情報
- WordPress.org公式ページ(インストール)
- 開発元公式ドキュメント(一次ソース)(仕様・フィルターフック・詳細)



