Tech
Contact Form 7 で Turnstile と確認画面を併用する方法|干渉せず両立できる
Cloudflare Turnstile によるスパム対策と、Contact Form 7 の確認画面・マルチステップを同じフォームで併用できるか。
実機で動作を検証した結果と、設定でつまずきやすいポイント、Turnstile ウィジェットの置き場所まで解説します。
Contact Form 7(CF7)でスパム対策に Cloudflare Turnstile を入れつつ、UX 改善のために確認画面やマルチステップも付けたい。
このとき「両方を同じフォームに入れて干渉しないのか」という不安から、導入をためらう方は少なくありません。
結論から言うと、Turnstile と確認画面・マルチステップは併用できます。
この記事では、なぜ両立するのかという仕組みの整理と、実際に動作を検証した結果、そして設定でつまずきやすいポイントまでを解説します。
なぜ「併用できるか不安」になるのか
確認画面やマルチステップは、CF7 標準の「入力→送信」という1ステップの流れに、確認ステップや複数ページの遷移を割り込ませる機能です。
一方 Turnstile は、送信時に「人間かどうか」の検証を挟みます。
どちらも送信の前後に処理を差し込むため、同じ場所を取り合って壊れるのではないか と直感的に不安になりやすいのです。
実際には、両者が担うレイヤーは別です。
確認画面・マルチステップは画面遷移とデータの受け渡しを担当し、Turnstile は CF7 の検証(バリデーション)チェーンの中で1つのチェック項目として働きます。
処理する層が違うため、正しく配置すれば競合しません。
実機で動作を検証しました
「理屈では併用できる」だけでは不安が残るため、ローカル環境で実際に組み合わせて動作を確認しました。
検証した構成は次のとおりです。
- Contact Form 7 に、Cloudflare Turnstile 連携プラグインを導入
- 同じフォームに Frontierline Forms 無料版の確認画面・マルチステップを設定
- Turnstile は Cloudflare 公式のテストキー(常に通過する検証用キー)で組み込み
検証結果は次のとおりです。
- 単一ステップ+確認画面+Turnstile:入力→確認→送信→完了まで正常に進み、送信データも保存されました
- 4段マルチステップ+確認画面+Turnstile:各ステップの遷移と最終送信が正常に完了しました
- ハニーポットを強制発火させたケース:不正送信として正しくブロックされ、データは保存されませんでした
いずれの構成でも、確認画面・マルチステップの遷移が Turnstile の存在によって崩れることはありませんでした。
※ ここで使ったのは Cloudflare 公式のテストキーです。
テストキーは常に「通過」を返すため、今回の検証は フローが最後まで破綻せず動くかどうかの動作確認 であり、Turnstile が実際のスパムをどれだけ遮断できるか(防御力そのもの)を測ったものではありません。
本番の遮断性能は、本番用のサイトキーで各サイトの環境に合わせてご確認ください。
つまずきやすいポイント:応答テストが終わるまで挿入されない
検証中に最もはまったのが、Turnstile 連携プラグイン側の挙動です。
サイトキー・シークレットキーを保存しただけでは、Turnstile がフォームに挿入されません。
設定画面での「応答テスト」を完了させるまで、連携ファイル自体が読み込まれず、[cf7-simple-turnstile] のようなショートコードが 文字列のままフォーム上に残ってしまいます。
「ショートコードがそのまま表示される」「ウィジェットが出ない」という場合は、まずキー保存後に設定画面の応答テストを実行してください。
これでフォームへ正しく挿入されるようになります。
使う連携プラグインによって名称は異なりますが、キー登録後にテスト・有効化の一手間が必要な作りは共通して見られます。
Turnstile ウィジェットの置き場所
Turnstile のショートコードは、送信ボタン([submit])の直前に置く のが扱いやすい配置です。
マルチステップフォームの場合は、この位置に置くことで 最終の確認ステップ内に Turnstile が表示 されます。
ユーザーが入力内容を確認したうえで、送信の直前に検証を通す流れになり、画面構成として自然です。
確認画面の作り方そのものは Contact Form 7 に確認画面を追加する方法、複数ステップへの分割は Contact Form 7 でマルチステップフォームを作る方法 で解説しています。
スパム対策のレイヤーを整理する
併用時のスパム対策は、次の2つが別々の層で並行して動きます。
- Turnstile:CF7 の検証チェーンに加わり、送信時に人間かどうかを判定する層
- 確認画面プラグインのハニーポット:Frontierline Forms 無料版が備える、自動入力ボットを捕捉する層
この2つはどちらか一方が不正と判定すれば送信を止めるため、二重の防御 として機能します。
Frontierline Forms 無料版のスパム対策はハニーポット方式で、Turnstile とは処理の層が異なるため取り合いになりません。
今回の検証でも、両方を有効にした状態で正常な送信だけが保存され、不正送信はブロックされました。
なお、より強力なスパム対策(レート制限やキーワードフィルタなどのサーバー側対策)は上位版で提供していますが、本記事の検証は無料版のハニーポットと Turnstile の併用を対象にしたものです。
WordPress Plugin
確認画面もマルチステップも、無料で追加できます。
Contact Form 7 に「入力→確認→送信→完了」フローや複数ステップを、コードを書かず設定だけで追加する拡張プラグイン Frontierline Forms。確認画面・マルチステップ・送信ログのDB保存は 無料・無制限で、WordPress.org 公式リポジトリで配信中です。Turnstile などのスパム対策プラグインとも併用できます。Slack/Chatwork通知や自動返信が必要なら Pro 版(年額$39.99〜)を、決済画面でローンチ割引コード EARLYBIRD2026 を入力すると割引価格で導入できます。
まとめ
Contact Form 7 で Turnstile と確認画面・マルチステップは併用できます。
両者は担うレイヤーが異なり、Turnstile を送信ボタンの直前に置けば、確認ステップ内に自然に収まります。
導入時は、キーを保存しただけでは挿入されず、応答テストの完了で有効になる点に注意してください。
確認画面付きフローや完了画面のより詳しい設定手順は、ドキュメントの 確認画面と完了画面の設定 にまとめています。
add confirm から乗り換える場合の移行手順は Contact Form 7 add confirm が使えないときの代替方法 をご覧ください。
フォームの実装やスパム対策の設計ごとご相談されたい場合は お問い合わせフォーム までどうぞ。
よくある質問
Q. Turnstile と確認画面は本当に同時に使えますか?
使えます。
Turnstile は送信時の検証に加わる層、確認画面は画面遷移を担う機能で、役割が重なりません。
単一ステップの確認画面付きフォームでも、4段のマルチステップでも、Turnstile を組み込んだ状態で送信が正常に完了することを実機で確認しています。
Q. ショートコードが文字列のまま表示されてしまいます。
Turnstile 連携プラグインで、サイトキー・シークレットキーを保存した後の「応答テスト」が未完了だと、連携ファイルが読み込まれずショートコードが文字列のまま残ります。
設定画面で応答テストを実行すると、フォームに正しく挿入されます。
Q. Turnstile とプラグインのスパム対策は競合しませんか?
競合しません。
Frontierline Forms 無料版のスパム対策はハニーポット方式で、Turnstile とは処理の層が異なります。
どちらか一方が不正と判定すれば送信を止めるため、二重の防御として並行して働きます。
Q. 確認画面やマルチステップは無料で使えますか?
無料版で、確認画面・マルチステップ・送信ログのDB保存まで制限なく利用できます。
既存の Contact Form 7 フォームを作り直す必要はありません。