「reCAPTCHAの有料化が不安でTurnstileに切り替えたのに、今度はContact Form 7のTurnstileが動かない、送信できない…」と困っていませんか?
実はこの不具合は、あなたの設定ミスだけが原因ではありません。reCAPTCHAの実質的な有料化、移行先であるCloudflare Turnstileの外部JavaScript依存、そしてContact Form 7(CF7)側の仕様が重なって、2025年末から2026年にかけて同じトラブルが日本語・英語を問わず多発しています。
この記事では、Contact Form 7のTurnstileが動かない原因を切り分けて解説し、すぐに試せる対処法を手順で紹介します。さらに、そもそもCAPTCHAに頼らずにスパムを防ぐ「APIキー不要・設定不要」の代替策まで踏み込みます。記事内で紹介するFormNestプラグインは、以下から無料でダウンロードできます。
FormNestを無料でダウンロード
プラグインをダウンロードContact Form 7のTurnstileが動かない・送信できない主な原因
Contact Form 7のTurnstileが動かない原因は、大きく分けて「Turnstileが表示されない」「表示されるが送信できない」「保存・設定でエラーになる」の3パターンに整理でき、外部JavaScriptの読み込み、プラグイン同士の競合、バージョン要件のいずれかに集約されることがほとんどです。
Cloudflare Turnstileは、Googleの「reCAPTCHA」に代わる無料のCAPTCHA(人間とボットを判別する仕組み)です。ただしブラウザ上で外部JavaScriptを実行して動作するため、サイトの高速化設定やキャッシュ、テーマ・プラグインとの相性で簡単に動かなくなります。まずは自分のサイトがどのパターンに当てはまるかを見極めましょう。
原因1: JavaScript圧縮・Rocket LoaderによるTurnstileの非表示
最も多いのが、サイト高速化のためのJavaScript最適化が原因でTurnstileのウィジェットが表示されないケースです。Turnstileは専用のJavaScriptを読み込んでチェックボックスや認証UIを描画しますが、このスクリプトが圧縮・結合・遅延読み込みの対象になると、正しく初期化できずに何も表示されなくなります。
具体的には、Autoptimizeやキャッシュ系プラグインの「JavaScript最適化(minify/結合)」機能、そしてCloudflareの「Rocket Loader」が代表的な干渉要因です。Rocket LoaderはすべてのJavaScriptの実行を遅延させるため、Turnstileの初期化スクリプトまで遅延され、ウィジェットが空白のままになります。TEDASKなどの技術系メディアでも、表示されない場合はまずJavaScript圧縮とRocket Loaderを疑うべきだと指摘されています。
このパターンは、フォーム自体は表示されているのにTurnstileの部分だけが空白になる症状が典型です。ブラウザのデベロッパーツールのコンソールにスクリプトエラーが出ていないかも確認しましょう。
原因2: 確認画面・マルチステップフォームとの競合
次に多いのが、確認画面やマルチステップ(複数ステップ)フォームを使っている場合に、Turnstileが正しく動かず送信できないケースです。Contact Form 7は標準では確認画面を持たないため、「Contact Form 7 add confirm」や「Contact Form 7 Multi-Step Forms」などのアドオンで確認画面を実現している人が多くいます。
しかし、Lightningの開発元である株式会社ベクトルなどの解説でも、確認画面アドオンを併用しているとContact Form 7本体のTurnstileインテグレーション機能がうまく動作しないことがあると注意喚起されています。確認画面に遷移した時点でTurnstileのトークン(認証の有効性を示す一時的な値)が失効し、最終送信時に「認証に失敗しました」と判定されて送信できなくなるためです。
このパターンは、フォーム入力から確認画面までは進めるのに、最後の送信ボタンでエラーになる症状で見分けられます。確認画面アドオンには「Contact Form 7 add confirm」のように公式ディレクトリから削除されたものもあり、確認画面まわりはCF7の弱点が集中しやすい領域です。
原因3: 複数のCAPTCHAプラグイン競合とバージョン要件
3つ目の原因は、Turnstileを二重に設定してしまう競合と、Contact Form 7のバージョン不足です。Cloudflare TurnstileをCF7で使う方法には、「Simple Cloudflare Turnstile」などの専用プラグインを使う方法と、Contact Form 7本体(6.1以降)のインテグレーション機能を使う方法の2通りがあります。この2つを同時に有効にすると、同じフォームにTurnstileが二重に読み込まれて競合し、送信できなくなります。
WordPress公式サポートフォーラムでも、Simple Cloudflare Turnstileを無効化・削除してCF7本体の機能だけに一本化することで解決した報告が共有されています。なお、ネイティブのTurnstileインテグレーション機能はバージョン6.1以上が必要で、6.1未満では設定項目自体が存在しません。さらにメール設定の「追加ヘッダー」でBccの記述順序が崩れていると保存エラーや「アクセス拒否」が出る事例もあり、Turnstile設定と同時にメール設定も見直すと安全です。
なぜ今「reCAPTCHAからTurnstile」で不具合が増えているのか
Turnstileの不具合が2025年末から急増している背景には、Google reCAPTCHAの実質的な有料化があります。多くのサイト運営者が一斉にTurnstileへ乗り換えた結果、外部JavaScript依存という弱点が一気に顕在化したのです。ここでは、なぜ今この問題が起きているのかを構造的に整理します。トラブルの根っこを理解すれば、目先の対処だけでなく再発しない仕組みを選べるようになります。
reCAPTCHA有料化(無料枠縮小)の実態
Google reCAPTCHAは長年「無料で使えるスパム対策の定番」でしたが、無料で利用できる範囲が大きく縮小されました。複数の制作会社の解説によると、無料枠はおおむね1か月100万評価まで(reCAPTCHA v3など)とされ、これを超える場合は有料の「reCAPTCHA Enterprise」への切り替えが必要になります。
さらに大きいのが、GoogleがすべてのユーザーをGoogle Cloudプロジェクトへ移行させる方針を打ち出している点です。Yum-designなどの解説でも、移行後はGoogle Cloudとの紐付けやクレジットカード登録が前提になり管理が煩雑になると指摘されています。今すぐ全サイトが課金されるわけではないものの、無料・手軽という前提が崩れたことで、多くの運営者が代替を探し始めました。この「reCAPTCHA有料化」への不安が、Turnstileへの大移動を引き起こした最初のドミノです。
移行先のTurnstileも外部JS依存で不安定
reCAPTCHAの代替として最有力なのがCloudflare Turnstileです。Turnstileは300ドメインまで無料、検証回数も無制限とされ、個人サイトや小規模サイトであればコスト面のメリットは確かに大きいツールです。
しかし、TurnstileもreCAPTCHAと同じく「外部JavaScriptをブラウザで実行する」方式である点は変わりません。そのため記事前半で見たように、JavaScript圧縮・Rocket Loader・キャッシュ・確認画面アドオンといった、WordPressサイトに当たり前に入っている仕組みと簡単に衝突します。reCAPTCHAの課金不安から逃れてTurnstileに来たのに、今度は表示・送信の不具合に悩まされる人が続出しているのはこのためです。つまり、CAPTCHAの種類を変えても「外部JS依存」という根本的な弱点は引き継がれてしまうのです。
「有料化 → 乗り換え → 不具合」の負の連鎖
ここまでをまとめると、現在多くのWordPressサイトで次のような負の連鎖が起きています。
- Google reCAPTCHAが実質有料化し、無料・手軽の前提が崩れる
- 無料のCloudflare Turnstileへ乗り換える
- Turnstileも外部JS依存のため、圧縮・Rocket Loader・確認画面と競合して動かない
- 設定を直しても、サイトの高速化設定やテーマ更新のたびに再発する
この連鎖の本質は、「CAPTCHAという外部サービスにスパム対策を依存していること」そのものにあります。CAPTCHAを別のCAPTCHAに乗り換える限り、外部JSの読み込み・キー管理・相性問題というコストはついて回ります。次の章ではまず目の前のTurnstileを直す手順を解説し、その後で「そもそもCAPTCHAに頼らない」根本解決を紹介します。WordPressフォームのスパム対策を体系的に知りたい場合は、ハニーポットやレート制限を含めたWordPressフォームのスパム対策の解説も参考になります。
Contact Form 7 Turnstileが動かないときの対処法【手順】
ここからは、Contact Form 7のTurnstileが動かない・送信できないときに試すべき対処法を、効果が高く確認しやすい順に5つの手順で解説します。上から順に確認すれば、多くのケースで原因を特定できます。作業前には、必ずサイトのバックアップを取得してください。プラグインの有効化・無効化やキャッシュ削除は影響範囲が広いため、元に戻せる状態を作っておくことが大切です。
手順1: Contact Form 7のバージョンを6.1以上に更新する
最初に、Contact Form 7のバージョンを確認します。ネイティブのTurnstileインテグレーション機能はバージョン6.1以上で利用できるため、それ未満では設定項目自体が表示されません。WordPress管理画面の「プラグイン」一覧でContact Form 7のバージョンを確認し、6.1未満であれば最新版に更新します。
更新後、「お問い合わせ」→「インテグレーション」にTurnstileの設定欄が表示されているかを確認します。表示されていれば、Cloudflareで取得したサイトキーとシークレットキーを入力します。欄が出ない場合は、スーパーリロード(キャッシュを無視した再読み込み)か、後述のキャッシュクリアを先に試してください。
手順2: JavaScript圧縮・Rocket Loaderの除外設定をする
Turnstileが「表示されない」場合は、JavaScriptの最適化を一時的に止めて切り分けます。Autoptimizeやキャッシュ系プラグインのJavaScript圧縮・結合機能をオフにし、Cloudflareを使っている場合はRocket Loaderを無効化して、Turnstileが表示されるか確認します。
表示されるようになった場合は、最適化を全部オフにするのではなく、Turnstileのスクリプト(challenges系ドメインから読み込まれるもの)だけを最適化の除外リストに追加するのが理想です。これでサイト全体の高速化を保ったままTurnstileを動かせます。確認はフロントエンドでフォームを開き、ウィジェットが描画されるかを見ます。描画されない場合は、デベロッパーツールのコンソールでどのスクリプトがブロックされているかを特定しましょう。
手順3: 重複するCAPTCHAプラグインを停止する
Turnstileが「表示されるのに送信できない」「二重に表示される」場合は、CAPTCHAの二重設定を疑います。「Simple Cloudflare Turnstile」などの専用プラグインと、Contact Form 7本体のインテグレーション機能の両方を有効にしていないかを確認してください。
両方有効になっている場合は、どちらか一方に一本化します。公式サポートフォーラムでも、Simple Cloudflare Turnstileを無効化・削除してCF7本体の機能だけに統一して送信できるようになった事例が共有されています。reCAPTCHA用のプラグインが残っている場合も競合の原因になるため停止します。一本化したら必ずテスト送信を行い、通知メールが届くか、エラーメッセージが消えたかを確認しましょう。
手順4: 確認画面・マルチステップ併用時のショートコード位置を調整する
確認画面やマルチステップフォームを使っていて最終送信でエラーになる場合は、Turnstileの配置を見直します。確認画面に遷移するとTurnstileのトークンが失効しやすいため、Turnstileのウィジェットは「最後に送信を行う画面(確認画面側)」に配置するのが基本です。
確認画面アドオンによっては、Contact Form 7本体のインテグレーション機能と相性が悪く、どう配置しても安定しないことがあります。その場合は、確認画面アドオンとTurnstileの組み合わせ自体を見直す必要があります。確認画面はもともとContact Form 7の弱点であり、アドオンの開発終了(「Contact Form 7 add confirm」は公式から削除済み)も相まって、確認画面とスパム対策を両立させるのが難しいのが実情です。
この段階で「確認画面もスパム対策も安定させたい」と感じたら、後述するように確認画面とスパム対策を最初から標準搭載しているフォームプラグインへの乗り換えが、もっとも手間の少ない解決策になります。
手順5: キャッシュをクリアして再検証する
最後に、ここまでの設定変更を反映させるためにキャッシュをクリアします。キャッシュ系プラグインのキャッシュ削除、Cloudflareのキャッシュパージ、そしてブラウザのキャッシュクリアをすべて実施してから、シークレットウィンドウ(プライベートブラウジング)でフォームを開いて再検証します。
再検証では、(1)Turnstileのウィジェットが表示されるか、(2)入力して送信できるか、(3)通知メールが届くか、の3点をチェックします。PCだけでなくスマートフォンや別ブラウザでも確認すると、ブラウザ依存の不具合を見落としません。
ここまで実施しても安定しない場合は、サイトの環境(テーマ・高速化設定・サーバー)とTurnstileの外部JSの相性問題が根深い可能性が高いです。設定をいじるたびに再発するようであれば、CAPTCHA方式そのものを見直すフェーズに入ります。
それでも直らない場合の根本解決:CAPTCHAに頼らないスパム対策
Turnstileの設定を直してもまた動かなくなる、という再発に疲れたなら、根本的な発想の転換が有効です。スパム対策は「CAPTCHAを表示してユーザーに認証させる」方式だけではありません。ユーザーには何も見せずにボットだけを弾く「ハニーポット」や「レート制限」という方式があり、これらは外部JavaScriptもAPIキーも不要です。ここでは、CAPTCHAに依存しないスパム対策の仕組みとメリットを解説します。これがTurnstile不具合の連鎖を断ち切る本命の解決策です。
ハニーポット方式とは
ハニーポット(Honeypot)とは、フォームに人間には見えない「おとり」の入力欄を仕込み、そこに入力があった送信をボットとみなして弾く仕組みです。人間のユーザーには表示されないため入力されることはなく、自動でフォームを埋めるスパムボットだけが引っかかります。
ハニーポットの最大の利点は、ユーザーに一切の操作を求めない点です。reCAPTCHAやTurnstileのような「チェックボックスを押す」手間がなく、コンバージョン率(問い合わせ完了率)を下げません。さらに外部JavaScriptを読み込まないため、JS圧縮やRocket Loaderと競合して動かなくなる心配もありません。WordPressには「WP Armour」のようなハニーポット専用プラグインもあり、APIキー不要・有効化するだけで使えると評価されています。
IPレート制限とは
IPレート制限とは、同じIPアドレスから短時間に大量の送信があった場合に、それを制限・ブロックする仕組みです。スパムボットは短時間に何度も送信を繰り返す傾向があるため、「一定時間内の送信回数に上限を設ける」だけで、機械的な連続送信を効果的に防げます。
レート制限もハニーポットと同様に、ユーザー側の操作を必要とせず外部JavaScriptにも依存しません。ハニーポットが「見えないおとりでボットの性質を突く」のに対し、レート制限は「送信頻度という行動パターンでボットを突く」アプローチで、両者を組み合わせると守備範囲が広がります。CAPTCHAをすり抜ける高度なボットにも、レート制限が二重の防壁として機能します。
CAPTCHAを不要にするメリット
ハニーポットとレート制限を中心にスパム対策を組むと、CAPTCHA特有の悩みからまとめて解放されます。整理すると、メリットは次の通りです。
- キー管理が不要:reCAPTCHAやTurnstileのサイトキー・シークレットキーの取得・更新・紛失リスクがなくなる
- 外部JavaScript非依存:JS圧縮・Rocket Loader・キャッシュとの競合で「動かない」が起きない
- ユーザー体験が向上:認証操作がゼロになり、問い合わせ完了率が下がりにくい
- 有料化リスクから解放:外部CAPTCHAサービスの料金体系変更に振り回されない
もちろん、ハニーポットやレート制限だけで100%のスパムを防げるわけではありません。重要なのは複数の方式を多層で組み合わせ、運用の手間と防御力のバランスを取ることです。これらを最初から標準搭載したフォームプラグインを選べば、設定の手間すらかかりません。確認画面付きでスパム対策まで標準で備えたフォームを探しているなら、次に紹介するFormNestが有力な選択肢になります。
APIキー不要・設定不要でスパム対策できるFormNest
FormNestは、ハニーポット・IPレート制限・セキュリティログを標準搭載した無料のWordPressフォームプラグインです。APIキーの取得も外部JavaScriptの設定も不要で、有効化した時点からスパム対策が自動で有効になります。Contact Form 7+Turnstileの不具合に悩まされてきた人にとって、もっとも手間の少ない乗り換え先のひとつです。
FormNestは、開発が終了したMW WP Formの代替として開発されたプラグインで、ドラッグ&ドロップでの直感的なフォーム作成、確認画面、自動返信メール、CSVエクスポートといった日本のビジネスサイトで必要な機能を無料で備えています。フォームの作り方や全体像は、FormNestの使い方の完全ガイドも参考にしてください。
FormNestのスパム対策が標準搭載である理由
FormNestがスパム対策を標準搭載しているのは、「フォームプラグインの責務としてスパム対策を内側で完結させる」という設計思想によるものです。Contact Form 7のようにスパム対策を外部のreCAPTCHAやTurnstileに任せる構成では、どうしてもキー管理と外部JS依存というコストが発生します。
FormNestは有効化した瞬間から、見えないハニーポットフィールドが自動で挿入され、同一IPからの連続送信にはレート制限が働きます。さらにセキュリティログで不審な送信を記録でき、どの程度スパムを弾いているかを後から確認できます。これらはすべてサイトキーやシークレットキーを一切設定せずに機能します。筆者が検証した範囲でも、有効化直後にハニーポットとレート制限が動作し、追加プラグインやAPIキーなしでフォームスパムが目に見えて減少しました。CAPTCHAの設定に何時間も費やしてきた人ほど、「設定不要で即有効」の価値を感じやすいはずです。
Contact Form 7+Turnstileとの違い
Contact Form 7+Turnstileの構成とFormNestの違いを、運用コストの観点で比べると差がはっきりします。Contact Form 7では、スパム対策のためにTurnstile(または有料化したreCAPTCHA)のアカウント作成・キー取得・プラグイン連携・相性調整が必要で、確認画面はさらに別アドオンを要します。
一方FormNestは、スパム対策・確認画面・自動返信メールをすべて標準で内蔵しています。外部サービスのアカウントもキーも不要なため、JS圧縮やRocket Loaderと競合して「動かない」事態が原理的に起きにくい構成です。とくにCF7の弱点である「確認画面とスパム対策の両立」を標準機能だけで実現できる点が大きな違いです。
FormNestは以下からダウンロードして、すぐに試せます。FormNestを有効化するだけで、CAPTCHAなしのスパム対策と確認画面付きフォームが手に入ります。
FormNestFormNestでも完璧ではない点(公平な注記)
公平を期すために、FormNestの制限も挙げておきます。FormNestはMW WP Formの代替として登場した比較的新しいプラグインで、Contact Form 7(有効インストール1,000万以上)やWPForms(数百万規模)と比べると利用実績はこれからの段階です。情報量やサードパーティ製アドオンの数では、歴史の長いプラグインに分があります。
また、reCAPTCHAやTurnstileのような「目に見えるCAPTCHA」を意図的に表示したい要件(金融系フォームなど、認証を視覚的に示す必要がある場合)には、ハニーポット中心の方式は合わないこともあります。自サイトの要件を踏まえ、どの方式が適切かを判断してください。FormNestはあくまで「CAPTCHAの運用コストと不具合に疲れた人に向いた、設定不要の現実解」という位置づけです。
なお、本記事の動作・仕様はFormNest v1.0.7時点・WordPress 6.x〜7.0環境での確認に基づきます。プラグインのバージョンや環境により挙動が異なる場合があります。
スパム対策方式の比較表(reCAPTCHA / Turnstile / ハニーポット)
ここまでの内容を、スパム対策方式ごとに比較表で整理します。自サイトに合った方式を選ぶ際の判断材料にしてください。
| 比較項目 | reCAPTCHA | Cloudflare Turnstile | ハニーポット+レート制限(FormNest等) |
|---|---|---|---|
| 料金 | 無料枠縮小・実質有料化の流れ | 300ドメインまで無料 | 完全無料 |
| APIキー取得 | 必要 | 必要 | 不要 |
| 外部JavaScript | 依存する | 依存する | 依存しない |
| JS圧縮・Rocket Loaderとの競合 | 起こりやすい | 起こりやすい | 起きにくい |
| ユーザーの操作 | 場合により必要 | ほぼ不要 | 不要 |
| 確認画面との両立 | アドオン依存で不安定 | アドオン依存で不安定 | 標準対応(FormNest) |
| 管理の手間 | Google Cloud移行で増加 | キー管理・相性調整 | 有効化のみ |
表の通り、CAPTCHA系(reCAPTCHA・Turnstile)はキー管理と外部JS依存が共通の弱点です。「動かない」トラブルの再発を根本から避けたいなら、ハニーポット+レート制限を標準搭載した方式が運用面で優位です。WordPress運営で入れておきたいプラグイン全般は、WordPressの必須プラグインの解説も参考にしてください。
Contact Form 7のTurnstile・スパム対策に関するよくある質問(FAQ)
Contact Form 7のTurnstileが表示されないのはなぜ?
Turnstileが表示されない原因の多くは、JavaScriptの圧縮・結合やCloudflareのRocket Loaderが、Turnstileの初期化スクリプトを遅延・改変しているためです。まずこれらの最適化を一時的にオフにして表示されるか確認し、表示されたらTurnstileのスクリプトだけを最適化の除外対象に設定してください。キャッシュのクリアも忘れずに行いましょう。
reCAPTCHAは本当に有料化されたの?無料では使えない?
reCAPTCHAが即座に全面有料化されたわけではありませんが、無料枠が月100万評価程度に縮小され、Google Cloudプロジェクトへの移行とクレジットカード登録が前提になる流れが進んでいます。小規模サイトなら当面無料の範囲で使える可能性はありますが、管理が煩雑になり「無料・手軽」という前提は崩れつつあるのが実情です。
Turnstileと確認画面アドオンを併用すると送信できないのはなぜ?
確認画面に遷移する過程でTurnstileのトークン(認証の有効性を示す一時的な値)が失効し、最終送信時に認証失敗と判定されるためです。Turnstileは最終送信を行う画面に配置するのが基本ですが、確認画面アドオンとの相性問題は根深く、安定させるのが難しい領域です。確認画面とスパム対策を標準搭載したプラグインへの乗り換えが確実な解決策になります。
CAPTCHAを使わずにフォームのスパムを防げる?
防げます。フォームに見えないおとり欄を仕込む「ハニーポット」と、同一IPからの連続送信を制限する「レート制限」を組み合わせれば、ユーザーに認証操作を求めずにボットの大半を弾けます。これらは外部JavaScriptもAPIキーも不要なため、Turnstileのような「動かない」トラブルが起きにくいのが利点です。FormNestはこの方式を標準搭載しています。
FormNestはContact Form 7と併用できる?無料で使える?
FormNestは完全無料で、すべての機能を追加課金なしで利用できます。Contact Form 7と技術的に併用すること自体は可能ですが、フォームごとに管理が分かれて煩雑になるため、フォームをFormNestへ統一する運用がおすすめです。FormNestはスパム対策・確認画面・自動返信メールを標準搭載しているため、移行後はContact Form 7と外部CAPTCHAの組み合わせが不要になります。
まとめ
Contact Form 7のTurnstileが動かない・送信できない原因は、(1)JavaScript圧縮・Rocket Loaderによる非表示、(2)確認画面・マルチステップとの競合、(3)CAPTCHAプラグインの二重設定とバージョン要件、の3つに集約されます。まずはバージョン確認・最適化の除外設定・重複プラグインの停止・キャッシュクリアの手順で切り分けてみてください。
ただし、この問題の根っこには「reCAPTCHA有料化 → Turnstile乗り換え → 外部JS依存で不具合」という構造的な連鎖があります。CAPTCHAを別のCAPTCHAに替え続ける限り、キー管理と相性問題のコストはなくなりません。再発に疲れたら、ハニーポット+レート制限という「CAPTCHAを不要にする」方式が根本解決になります。FormNestなら、ハニーポット・レート制限・確認画面・自動返信メールをすべて標準搭載し、APIキーも外部JavaScriptの設定も不要で、有効化するだけでスパム対策が始まります。CAPTCHAの設定に費やしてきた時間を、本来のサイト運営に取り戻しましょう。
FormNestを無料でダウンロード
プラグインをダウンロード

