問い合わせフォームのスパム対策|reCAPTCHA v3の設置手順
この記事の要点
- reCAPTCHA v3はユーザーの動きを0〜1で採点する裏方型。フォームの見た目は変えない
- Contact Form 7ならキー2つを貼るだけ。手動実装のコード例も本文で解説
- バックエンド検証忘れ・閾値の上げすぎ・キー取り違え/ドメイン漏れ・プラグイン競合の失敗4パターンと回避法まで具体化
問い合わせフォームに、意味不明な英文や宣伝メールが毎日届いていませんか。人が送っているのではなく、多くはボット(自動送信プログラム)による仕業です。放っておくと本当に大事な問い合わせが埋もれてしまいます。
この記事は、WordPressで自社サイトを運用していて、フォームのスパムに困っている広報・総務・Web担当者に向けたものです。読み終わる頃には、reCAPTCHA v3(リキャプチャ ブイスリー)を自分の手で設置し、届くスパムを大きく減らせる状態を目指します。
reCAPTCHAのアカウント登録そのものが初めての方は、先にキー取得の全体像だけ押さえておくとスムーズです。Contact Form 7の基本設定がまだの方は、Contact Form 7の設定方法|確認画面と自動返信までを先に済ませてから戻ってくると迷いません。
Contents / 目次
結論。reCAPTCHA v3は「裏で採点する門番」を置く対策です
結論から言うと、問い合わせフォームのスパム対策は、reCAPTCHA v3を入れて「ボットっぽい送信だけを止める」のが今の主流です。reCAPTCHA v3とは、ユーザーがサイト上でどう動いたかを裏で分析し、人間らしさを0.0〜1.0のスコア(点数)で判定する仕組みのことです。

ひとことで言うと、お店の入り口に「怪しい人だけをそっと見分ける門番」を立てるイメージです。お客さんには何も見えません。以前のバージョン(v2)のように「私はロボットではありません」にチェックを入れたり、信号機の画像を選んだりする手間が一切ないのが最大の違いです。
だから、フォームの見た目も入力の流れも変えずに、スパムだけを減らせます。BtoBサイトでは「入力のひと手間で問い合わせを取りこぼす」のが一番もったいないので、ユーザーに操作をさせないv3はとても相性が良いんですね。
まず、v2・v3・多層防御の違いを一度整理しておきましょう。ここを分かっておくと、あとの手順で迷いません。
| 方式 | ユーザーの操作 | 向いているケース |
|---|---|---|
| reCAPTCHA v2(チェック型) | チェックや画像選択が必要 | 強く止めたいログイン画面など。ただし現在はv3への移行が進む |
| reCAPTCHA v3(スコア型) | 不要(裏で採点) | 問い合わせフォーム全般。取りこぼしを避けたいBtoB |
| ハニーポット | 不要(隠し欄) | v3と併用する軽い補強。単体では弱い |
| Cloudflare Turnstile 等の代替 | ほぼ不要 | プライバシー配慮を重視する場合の選択肢 |
押さえる順番。やることは大きく3つです。この3ステップで完了します。
- GoogleでreCAPTCHA v3のキーを取得する
- WordPress側(Contact Form 7など)にキーを貼る
- 1〜2週間ようすを見て、止めすぎ・すり抜けを微調整する
なお、reCAPTCHAはv2かv3かで導入の考え方が変わります。どのタイプを選ぶか迷ったら、Google公式のreCAPTCHA のタイプを選択する(Google for Developers)で、v3・v2チェックボックス・v2非表示の違いを確認できます。問い合わせフォームなら、基本はv3で問題ありません。
reCAPTCHA v3の設置手順。キー取得から検証まで
ここが記事の主役です。Contact Form 7を使う場合を軸に、ステップごとに「何を・どこで・どうするか」を具体的に説明します。プラグインを使わず自前のフォームに入れる場合のコード例も後半に載せます。

ステップ1。reCAPTCHA管理画面でキーを2つ取得する
最初に、Googleの管理画面でサイト用の「キー」を発行します。キーとは、あなたのサイトとGoogleをつなぐための合言葉のようなものです。次の値を用意する流れになります。
- ラベル:自分が後で分かる名前(例「自社コーポレートサイト」)を付ける
- reCAPTCHAタイプ:「スコアベース(v3)」を選ぶ
- ドメイン:自社サイトのドメイン(例 example.co.jp)を登録する。www有無やサブドメインの扱いに注意
登録が終わると「サイトキー」と「シークレットキー」の2つが発行されます。サイトキーは画面に表示される公開用、シークレットキーは絶対に外に出さないサーバー用の秘密のカギ、と覚えてください。この2つを後で使うので、安全な場所に控えておきます。
reCAPTCHAのキーは、現在ではGoogle Cloud(グーグルクラウド)のプロジェクト上で管理される形に移行しています。無料枠には上限があり、それを超える場合は課金設定やクレジットカード登録を求められることがあります。登録画面の名称や手順、無料枠の条件は変わることがあるため、正確な仕様はGoogle Cloud公式のreCAPTCHA Classic から移行する(Google Cloud Documentation)で確認してください(2026年07月21日時点)。
ステップ2。Contact Form 7にキーを貼り付ける
Contact Form 7を使っているなら、v3の設置はとても簡単です。プラグインの管理メニューにある「インテグレーション(外部API連携)」の設定欄に、先ほどの2つのキーを入力するだけで有効になります。
ポイントは、v3では基本的に個別のフォームへタグを追加しなくても連携が働く点です。適用範囲や最新の挙動は、直後のヘルプで案内するContact Form 7公式ページで確認してください。v2のように「フォームのどこにチェックボックスを置くか」を悩む必要はありません。
メニュー名は変わることがあります。プラグインの更新で「インテグレーション」などのメニュー名やボタンの位置、連携時の動作が変わる場合があります。見つからないときや実際の設定手順を正確に確認したいときは、Contact Form 7公式のreCAPTCHA連携ヘルプ(Contact Form 7公式)で最新の手順を確認してください。ここでは「キー2つを連携欄に貼る」という流れだけ押さえておけば大丈夫です。
設定後は、実際にフォーム送信をテストします。正常に送れれば連携は成功です。画面の右下に、reCAPTCHAのバッジ(丸いマーク)が表示されるようになります。
ステップ3。プラグインを使わず自前で入れる場合のコード
Contact Form 7を使わず、自作フォームやVibe codingで作ったサイトに入れる場合は、フロント(ブラウザ側)とバックエンド(サーバー側)の2か所に手を入れます。まずブラウザ側で、送信のたびにGoogleから「トークン(採点結果を受け取る引換券)」を取得します。
<!-- 前提:head内などでスクリプトを読み込む。YOUR_SITE_KEY はステップ1のサイトキーに置き換える -->
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
// フォーム送信時にトークンを取得し、hidden欄に入れてから送る
document.addEventListener('submit', function (e) {
var form = e.target;
if (!form.matches('#contact-form')) return; // [自分のフォームのidに変更]
e.preventDefault();
grecaptcha.ready(function () {
grecaptcha.execute('YOUR_SITE_KEY', { action: 'contact' }).then(function (token) {
// 取得したトークンを送信データに追加
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'recaptcha_token';
input.value = token;
form.appendChild(input);
form.submit();
});
});
});
</script>
次に、サーバー側で必ずトークンを検証します。ここを省くと意味がありません。受け取ったトークンをGoogleの検証API(siteverify)に送り、返ってきたスコアで通すか止めるかを判断します。PHPの例が次のとおりです。
<?php
// 前提:フォームはPOST送信。YOUR_SECRET_KEY はステップ1のシークレットキー(外部に出さない)
$token = $_POST['recaptcha_token'] ?? '';
$secret = 'YOUR_SECRET_KEY'; // [サーバー内でのみ扱う。ソースを公開しない]
$response = file_get_contents(
'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secret)
. '&response=' . urlencode($token)
);
$result = json_decode($response, true);
// success=true かつ スコアが閾値以上のときだけ通す
$threshold = 0.5; // [まずは0.5。運用しながら調整する]
if (!empty($result['success']) && ($result['score'] ?? 0) >= $threshold) {
// 正常な送信としてメール送信などの処理を続ける
} else {
// スパムの可能性が高い。送信をブロック、または保留にする
http_response_code(400);
echo 'スパムの可能性があるため送信できませんでした。';
}
スコアは0.0(ボットの可能性が高い)から1.0(人間の可能性が高い)まで返ってきます。まずは閾値0.5から始め、あとで調整するのが定番です。この「送信ごとに採点し、閾値で振り分ける」考え方は、プラグインを使う場合でも中で同じことをやっている、と理解しておくと応用が効きます。
ステップ4。1〜2週間ようすを見て閾値を調整する
設置したら終わり、ではありません。導入直後は本番のアクセスがたまっていないため、スコアが安定しないことがあります。まず1〜2週間ほど実際のトラフィックを集め、どのくらいのスコアの送信が来ているかを見ながら閾値を決めます。
スパムがまだすり抜けるなら閾値を0.5より少し上げ、逆に普通のお客さんが弾かれているなら少し下げます。いきなり0.7などに上げると、正常な問い合わせまで止めてしまうので、0.1刻みで慎重に動かすのがコツです。
導入するとどう変わるか。成果のイメージ
reCAPTCHA v3を正しく入れると、フォーム経由のスパムは目に見えて減ります。とくに海外からの自動送信や、宣伝目的の定型文が届かなくなり、担当者が受信ボックスで「本物の問い合わせ」を探す手間がなくなります。

成果を実感しやすいのは、次のような変化です。数字は業種や元のスパム量で大きく変わるため断定はできませんが、傾向としてこう変わる、という目安として見てください。
- 受信の質:スパムに埋もれていた本物の問い合わせが見つけやすくなる
- 作業時間:スパムの仕分け・削除にかけていた毎日の時間が減る
- 通知疲れの解消:フォーム通知が鳴るたびに身構える状態から解放される
- 離脱の防止:ユーザー操作を増やさないので、対策しても問い合わせ数は落ちにくい
ここで大事なのは、reCAPTCHAは「入力ハードルを上げずにスパムを減らせる」点です。フォームの入力項目を増やしてボットを止めようとすると、正規のお客さんまで面倒になって離脱します。v3ならその心配がありません。
うまくいっている企業の共通点は、reCAPTCHA単体に頼りきらず、後述する多層防御を軽く重ねていることです。逆に、キーを入れただけで放置し、閾値を一度も見直していないサイトは「効いているのか分からない」状態になりがちです。設置後に一度スコアの分布を確認するかどうかで、体感の効果が変わります。
フォームそのものの設計も成果に効きます。項目が多すぎて離脱している可能性があるなら、問い合わせフォームは5項目に絞る|BtoBの入力設計と問い直しもあわせて見直すと、スパム対策と入力率改善を同時に進められます。
よくある失敗と、その防ぎ方
reCAPTCHA v3は入れ方を少し間違えると「効かない」「正常な人まで止める」といった事故が起きます。現場でよく見かける失敗を4つ、状況と対策のセットで紹介します。

失敗1。バックエンドの検証を忘れて素通りする
一番多いのがこれです。ブラウザ側でreCAPTCHAを動かしただけで満足してしまい、サーバー側でトークンを検証していないケースです。この状態だと、ボットはブラウザの仕組みを無視して直接データを送りつけるため、対策が実質ノーガードになります。
防ぎ方はシンプルで、必ずサーバー側でsiteverifyにトークンを送り、成功とスコアの両方を確認してから処理を進めることです。Contact Form 7などのプラグインを使う場合はこの検証が中で行われますが、自作フォームでは自分で書く必要があります。ステップ3のPHP例のように「success かつ 閾値以上」を条件にしてください。
失敗2。閾値を上げすぎて正規の問い合わせを弾く
スパムを完璧に止めたい気持ちから、閾値をいきなり0.7や0.8に設定してしまう失敗です。reCAPTCHA v3は行動を見て採点するため、少し変わった操作をした正規のお客さん(急いでいる人、特殊なブラウザ環境の人など)が低スコアになり、ブロックされてしまいます。
本当に困るのは、弾かれた本人も担当者も「送れなかった」ことに気づけない点です。防ぎ方は、まず0.5前後で運用し、スコアの分布を見ながら少しずつ調整すること。心配なら、低スコアでも即ブロックにせず、いったん保留にして目視確認する運用にすると、大事な問い合わせを取りこぼしません。
失敗3。キーの取り違えとドメイン登録漏れ
サイトキーとシークレットキーを逆に貼ってしまう、または本番と別のドメインでキーを作ってしまう失敗です。この場合、reCAPTCHAがそもそも動かず、エラーが出たりフォームが送信できなくなったりします。
防ぎ方は、キーを貼ったら必ず本番サイトで送信テストをすること。www有無やサブドメインを使っているサイトは、reCAPTCHA管理画面のドメイン欄に実際に使うドメインが登録されているかを見直します。設置後にフォームから届かなくなった場合は、メール送信そのものの不具合と切り分けが必要です。原因の当たりをつけるには、WordPressでメールが届かない原因と直し方|WP Mail SMTP Gmail設定もあわせて確認すると早いです。
失敗4。プラグインの競合や二重読み込み
WordPressで複数のセキュリティ系プラグインを併用していると、reCAPTCHAのスクリプトが二重に読み込まれたり、動作がぶつかったりすることがあります。1つのページで同じreCAPTCHAが複数回呼ばれるとエラーの原因になります。
防ぎ方は、reCAPTCHAを扱う機能を1つに絞ること。Contact Form 7の連携を使うなら、別のCAPTCHAプラグインは無効化し、役割が重ならないようにします。プラグインは最新版に保ち、更新後は必ず送信テストをしてください。
現場で見えた落とし穴。ここは正直に知っておいてほしい
教科書には載りにくい、実際に運用して初めて分かる注意点をお伝えします。ここを知っているかどうかで、導入後の満足度がかなり変わります。
まず、reCAPTCHA v3は万能ではありません。スコアで採点する仕組みは、賢いボットには突破されることがあります。だからこそ現場では、v3を土台にしつつ、軽い多層防御を重ねます。
おすすめは、ハニーポット(人には見えず、ボットだけが入力してしまう隠し欄)を1つ足すことです。仕組みが単純なわりに、機械的なボットをよく捕まえてくれます。
多層防御の考え方。1枚で完璧を狙うより、次の3枚を薄く重ねるのが、コストをかけずに効かせるコツです。
- reCAPTCHA v3:賢い門番。裏でスコアを付けて、怪しい送信を見分ける
- ハニーポット:うっかり者を捕まえる罠。人には見えない隠し欄で、ボットだけを引っかける
- 短時間の連続送信ブロック:同じ人が何十回も送れないように、送信の回数や間隔を制限する
1枚で完璧を狙うより、複数で取りこぼしを減らす発想が現場では有効です。
次に、プライバシーへの配慮です。reCAPTCHAはユーザーの行動データを収集するため、プライバシーポリシーにreCAPTCHAを使っている旨を明記しておくのが安全です。とくに、画面右下のバッジを消したい場合は要注意です。Googleは、バッジを非表示にするなら、代わりにユーザーの動線上にreCAPTCHAの利用(Googleのプライバシーポリシーと利用規約が適用される旨)を明記するよう求めています。詳しい条件はGoogle公式のreCAPTCHAのよくある質問(Google for Developers)で確認してください。
/* バッジを隠す場合は、必ずフォーム付近に下記のような注記文を別途表示すること */
.grecaptcha-badge { visibility: hidden; }
/* 注記例:このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。 */
プライバシーポリシー側の追記が不安な方は、プライバシーポリシーをAIで下書き|中小企業サイトの整え方を参考に、reCAPTCHAの記載を含めて整えておくと安心です。
最後に、内製と外注の切り分けです。Contact Form 7にキーを貼るだけなら、多くの場合ご自身でできます。一方で、次のような場面はつまずきやすいところです。
- 自作フォームでサーバー側の検証コードを書く
- 複数サイトでキーを使い分ける
- 代替サービス(Cloudflare Turnstileなど)と比較して選ぶ
ここは無理に自力でやるより、詳しい人に見てもらったほうが早くて確実なことが多いです。細かい仕様や料金体系、GDPR対応の詳細はGoogle公式のreCAPTCHAのよくある質問(Google for Developers)で最新情報を確認してください。
reCAPTCHA v3を入れると問い合わせは減りませんか
基本的には減りにくいです。v3はユーザーに操作を求めず裏で採点するため、入力の手間が増えません。ただし閾値を上げすぎると正規の人まで弾くので、0.5前後から始めて少しずつ調整するのが安全です。
お金はかかりますか
基本的な利用には無料枠が用意されていますが、無料枠には上限があり、それを超える場合は課金設定やクレジットカード登録が必要になることがあります。無料枠の条件は変わることがあるため、最新の料金や上限はGoogle公式で確認してください(2026年07月21日時点)。
reCAPTCHA以外の選択肢はありますか
あります。Cloudflare TurnstileやhCaptchaなど、プライバシーに配慮した代替サービスも増えています。Googleにデータを渡したくない、無料枠を広く使いたいといった要望があれば比較検討の価値があります。
設置したのにスパムが止まりません。どこを見ればいいですか
まずサーバー側でトークンを検証しているか確認してください。ここが抜けると素通りします。次に閾値が低すぎないか、キーやドメイン登録が正しいかを見直し、ハニーポットなどの併用も検討すると効果が上がります。
まずは今日、自社の問い合わせフォームを1回テスト送信して、reCAPTCHAのバッジが右下に出るかだけ確認してみてください。それだけで、対策が動いているかどうかの当たりがつきます。もう一歩進めたい方は、フォーム自体の使い勝手も見直すと成果が伸びます。あわせてフォーム最適化(EFO)で問い合わせ離脱を防ぐ5つの改善策もどうぞ。
ここまで読んで、サーバー側の検証や代替サービスの選定まで自社でやり切るのは大変そうだと感じた方へ。コレットラボのAI業務システム化支援では、フォームまわりのスパム対策から運用効率化まで、内製したい会社にも任せたい会社にも合わせて伴走します。まずは現状を整理するだけでも大丈夫です。AI業務システム化の詳細はこちらから、気軽にお話を聞かせてください。
30分の無料相談
現状をお聞きし、優先順位を一緒に整理します。
予約する →