Contact Form 7 でメールが2通届くときの主な原因と対処法

JavaScriptの二重読み込み

テーマや他のプラグインが原因で、Contact Form 7の送信スクリプトが複数回読み込まれることがあります。
その結果、送信処理が二重に走り、同じメールが2通届くケースがあります。

ユーザー操作による多重送信

送信ボタンを連打してしまったり、通信が遅れて再度クリックされると、複数回送信されてしまうことがあります。

通常は送信ボタンが自動的に無効化されますが、JavaScriptエラーやキャッシュの影響で機能しない場合があります。

キャッシュ系プラグインやCDNの影響

サイト高速化のために導入したキャッシュ系プラグイン(Autoptimize、LiteSpeed Cacheなど)やCDNの設定が原因で、フォーム送信処理が二重化することがあります。
特に「JavaScriptの遅延読み込み」や「最適化」の設定は要注意です。

メール設定の二重化

Contact Form 7には「メール」と「メール(2)」という2種類の送信設定があります。
「メール(2)」が有効になっていると、意図せず2通送信される場合があります。

サーバー側のタイムアウトやリトライ

フォーム送信時にサーバーがタイムアウトすると、自動的に再送処理が走ることがあります。
その結果、メールが2通届くことがあるため、サーバー環境の影響も見逃せません。


解決方法

テーマやプラグインの競合をチェック

一度テーマをデフォルト(Twenty Twenty-Fourなど)に切り替え、他のプラグインを停止してみましょう。
二重送信が止まれば、競合が原因です。

メール(2)をオフにする

管理画面の「メール」タブにある「メール(2)」を確認し、不要なら無効化しましょう。

送信ボタンの多重クリックを防ぐ

もし送信ボタンが無効化されない場合は、以下のようなスクリプトを追加するのも有効です。

document.addEventListener('wpcf7submit', function(event) {
  const submitButton = event.target.querySelector('input[type="submit"]');
  if (submitButton) {
    submitButton.disabled = true;
  }
}, false);

キャッシュ系プラグインの設定を見直す

キャッシュや最適化プラグインを使っている場合は、Contact Form 7のページをキャッシュ除外に設定するか、JavaScriptの遅延読み込みを無効にしてみましょう。

サーバー環境を確認する

サーバーログを確認し、タイムアウトや再送が原因であれば、サーバーの安定性改善や移行を検討する必要があります。


まとめ

Contact Form 7で同じメールが2通届く原因は、

  • JavaScriptの二重読み込み
  • ユーザー操作による多重送信
  • キャッシュ系プラグインやCDNの影響
  • メール(2)の設定
  • サーバー側のリトライ

といった複数の要因が考えられます。

「なぜ2通送られてしまうのか」を一つずつ切り分けながら確認すれば、解決できるかと思います。