問い合わせフォームのスパム対策|自動送信と営業の送信を分けて防ぐ方法
公開

問い合わせフォームから届いた送信を開くと、意味の通らない英文やリンクだけの文、「ご担当者様」で始まる売り込みが並び、見込み客からの相談がその間に埋もれていることがあります。迷惑な送信を見分けて消す作業は、届く数が増えるほど担当者の時間を削ります。
フォームのスパムには、プログラムが自動で書き込む自動送信と、人が手で送る営業の送信の2種類があり、止める仕組みはそれぞれ別です。この記事では、問い合わせフォームに届くスパムを種類で見分け、それぞれを止める仕組みの入れ方を解説します。株式会社メリルが作った9種類のフォームで、スパム対策の仕組みを数えた結果も載せました。
記事を読めば、届いている送信に合わせて、自社のフォームに足す仕組みを選べます。自動送信は見えない欄・時間・回数の確かめで、営業の送信は確認のチェックと本文の判定で、仕組みを重ねて防ぐのが基本です。
問い合わせフォームのスパム対策は届く送信を2種類に分けてから選ぶ

問い合わせフォームのスパム対策は、届いている送信が自動送信か営業の送信かで、選ぶ仕組みが変わります。対策を選ぶ前に確かめることは、以下の3つです。
- 自動送信の手がかりを確かめる
- 営業の送信の手がかりを確かめる
- 届いた送信を種類ごとに数えてから対策を選ぶ
自動送信の手がかりを確かめる
自動送信は、人ではなくプログラムがフォームに書き込んで送るスパムです。プログラムは、画面に見えない欄まで埋めることも、ページを開いてすぐに送ることも、同じ所から続けて何通も送ることもできます。
自動送信を見分ける手がかりは、以下のとおりです。
- 人には見えない欄にまで文字が入っている
- ページを開いてから送るまでの時間が、人の入力より短い
- 同じ IP アドレスから短い間に何通も届く
- 自社のサイトではない所から送られている
どの手がかりも本文には表れないため、送信を受けるプログラムの側で確かめます。届いた送信を後から見分けたいときは、通知のメールに送信日時と送り元の情報を付けておくと、同じ所から続けて届いた送信をまとめて見分けられます。このメディア(オウンドメディア相談室)の相談フォームも、問い合わせ管理に登録できずにメールで届けるときは、送信日時・IP アドレス・ブラウザの情報を本文の末尾に付ける作りです。
営業の送信の手がかりを確かめる
営業の送信は、人が手で入力して送る、商品やサービスの売り込みです。人が画面から送るため、見えない欄や送るまでの時間では見分けられず、本文の言い回しで見分けます。
メリルの問い合わせ管理が、本文から営業の疑いを判定するときに見ている言い回しは、以下の9つです。
- 「貴社・御社」の呼びかけ
- 「ご担当者様」宛て
- 「突然のご連絡」などの定型のあいさつ
- 送り手の会社のサービスの説明
- 提案・紹介の申し出
- 打ち合わせ・面談の打診
- 料金・実績の売り込み
- 売り込みに多い業種の名前
- 資料・リンクへの誘導
本文に入っている URL の数と、定型の案内文が長く続くかも、判定の材料です。言い回しが1つ当てはまるだけでは、営業の送信とは言い切れません。取材の依頼のように、本物の問い合わせにも「御社」と書かれることがあるからです。
届いた送信を種類ごとに数えてから対策を選ぶ
対策を選ぶ前に、これまでに届いた送信を、自動送信・営業の送信・本物の問い合わせの3つに分けて数えます。種類ごとの数がわかれば、先に止める送信と、足す仕組みが決まります。
届いた送信を数える手順は、以下のとおりです。
- 期間を決め、問い合わせの受信箱や管理画面から、その期間に届いた送信を書き出す
- 1通ずつ、自動送信・営業の送信・本物の問い合わせのどれかに分ける
- 種類ごとに数え、多い種類から対策を選ぶ
自動送信が多いフォームには、送る人の手間を増やさない自動送信よけから入れます。営業の送信が多いフォームには、送る前の確認と本文の判定を足すのが近道です。分けた結果を残しておけば、対策を入れたあとに、本物の問い合わせまで減っていないかを同じ分け方で比べられます。
送る人の手間を増やさずに自動送信を止める4つの仕組み

自動送信よけは、送る人に操作を増やさない仕組みから入れるのが基本です。送る人の手間を増やす仕組みは、本物の問い合わせを送る人の負担にもなります。手間を増やさずに自動送信を止める仕組みは、以下の4つです。
- 人に見えない入力欄を置く
- ページを開いてから送るまでの時間を確かめる
- 自社のページから送られた送信だけを受け付ける
- 送信の回数に上限を付ける
人に見えない入力欄を置く
フォームの中に人には見えない入力欄を1つ置き、欄に文字が入った送信を断ります。人は画面に出ていない欄を埋めないため、欄が埋まっていれば、人ではなくプログラムが送ったと判断できます。
見えない入力欄を置く手順は、以下のとおりです。
- フォームの中に、ほかの欄と同じ形の入力欄を1つ足す
- 入力欄を CSS で画面の外に出し、見えないようにする
- キーボードの Tab で止まらない設定と、ブラウザの自動入力を切る設定を付ける
- 送信を受けるプログラムで、欄が空でない送信を断る
メリルの9種類のフォームは、すべてに見えない入力欄を置いています。メディアのフォームでは、欄の見出しを「この欄は空のままにしてください」とし、tabindex="-1" と autocomplete="off" を付けました。読み上げソフトやキーボードで操作する人が欄にたどり着いても、空のまま送れるようにするためです。
ページを開いてから送るまでの時間を確かめる
ページを開いてから、人が入力を終えるには短すぎる時間で届いた送信は、自動送信として断ります。プログラムはページを読み込んですぐに送れる一方、人は名前や本文の入力に時間がかかるからです。
時間の確かめは、画面とサーバーの2か所で行います。画面のスクリプトがページを開いた時刻を覚えておき、送信のときに経過した時間を一緒に送ります。サーバーは、受け取った時間が決めた長さより短い送信を断る作りです。
断る時間の長さは、自社のフォームを実際に入力して送り、いちばん速く送れた時間よりも十分に短くします。長くしすぎると、入力の速い人や、ブラウザの自動入力を使う人まで断ってしまいます。
経過した時間は画面から送られる値なので、値を書き換えて送るプログラムには効きません。メリルのメディアの7つのフォームは、時間の確かめを、見えない入力欄や回数の上限と重ねて使っています。
自社のページから送られた送信だけを受け付ける
送信を受けるプログラムは、自社のサイトのページから送られた送信だけを受け付けます。ほかのサイトに置いたフォームから、自社の送信先へ送らせないためです。
ブラウザが POST の送信に付ける Origin ヘッダーは、送り元のスキーム・ホスト名・ポート番号を示す値です。送信を受けるプログラムで、Origin のホスト名とアクセスされたホスト名を比べ、一致しない送信と Origin の無い送信を断ります。
Origin の値は、ページの設定や送り方によって null になる場合があります。自社のフォームから実際に送り、Origin が付いて届くことを確かめてから、断る条件を入れましょう。
ブラウザを使わないプログラムは、Origin の値を自由に付けて送れます。送り元の確かめは、ほかのサイトからの送信を断る仕組みで、自動送信のすべてを止めるものではありません。メリルの9種類のフォームは、すべてで送り元のサイトを確かめています。
送信の回数に上限を付ける
送信の回数に上限を付けると、プログラムが続けて送る大量の送信を、受信箱に届く前に止められます。回数は、数える単位を変えて重ねて付けます。
回数の上限を付ける単位は、以下の3つです。
- IP アドレスごと
- メールアドレスごと
- フォーム全体
IP アドレスごとの上限は、同じ所から続けて送られる送信を止めます。会社や学校のネットワークでは、何人もが同じ IP アドレスから送ることがあるため、上限は人が続けて送る数より多めにします。
メールアドレスごとの上限は、同じアドレスを使った送信の繰り返しを止める仕組みです。フォーム全体の上限は、多くの IP アドレスから一度に送られたときに、受信箱があふれるのを防ぎます。
回数を数える記録には、IP アドレスやメールアドレスをそのまま残さず、変換した値で数えます。メリルのフォームも、IP アドレスとメールアドレスは変換した値にしてから回数を数える作りです。
» 問い合わせフォームの作り方|項目の決め方とスパム対策・届くかの確かめ方
自動送信が止まらないときは人の確認のサービスを足す

人の手間を増やさない4つの仕組みを入れても自動送信が届くときは、人の確認のサービスを足します。人の確認のサービスは、送信が人によるものかをサービスの側で判定し、フォームに返したトークンをサーバーが検証して結果を受け取る仕組みです。人の確認のサービスを足すときに押さえることは、以下の2つです。
- TurnstileとreCAPTCHAの違いを確かめる
- 人の確認のトークンはサーバーで検証する
TurnstileとreCAPTCHAの違いを確かめる
人の確認のサービスには、Cloudflare の Turnstile と、Google Cloud の reCAPTCHA があります。どちらも、送る人にチェックボックスを押させない形を選べます。
TurnstileとreCAPTCHAの違いは、以下の表のとおりです。
| 項目 | Turnstile | reCAPTCHA |
|---|---|---|
| 提供元 | Cloudflare | Google Cloud |
| 送る人への見せ方 | 危険度に応じてチェックボックスを出すかを自動で決める形がおすすめ。操作を求めない形と、完全に見えない形もある | スコアで判定するキーが Google Cloud コンソールの既定。チェックボックスのキーは、負担が増えて精度が大きく上がらないため、おすすめされていない |
| 判定の結果 | 検証の成否・判定を表示したホスト名・アクションの名前 | 0.0〜1.0のスコア(11段階)。1.0に近いほどリスクが低い |
| 使うときの条件 | Cloudflare を経由しないサイトにも埋め込める | ウェブサイトごとにキーを作る。テスト用と本番用のキーも分ける |
reCAPTCHA のスコアは、最初は送信を断らずに判定だけを動かし、届く送信のスコアを見てから、しきい値を決められます。スコアの低い送信も、断るより裏側で扱いを変える使い方がすすめられています。
料金と無料で使える範囲は、どちらも提供元のページで確かめてください。メリルの会社サイトの2種類のフォームは、Turnstile を使っています。
人の確認のトークンはサーバーで検証する
人の確認のサービスは、フォームのページに判定の部品を置くだけでは、送信を守れません。画面から送られるトークンは、判定を受けずに作った文字列でも送れるため、サーバーで検証しなければ断れないからです。
人の確認のサービスを入れる手順は、以下のとおりです。
- サービスの管理画面で、フォームを置くサイトのキーを作る
- フォームのページに、判定の部品を読み込むスクリプトを組み込む
- 送信と一緒に、判定の部品が返したトークンをサーバーへ送る
- サーバーからサービスにトークンを送って検証し、結果を確かめる
Turnstile のトークンは、作られてから300秒で期限が切れ、1回しか検証できません。検証の結果では、成否に加えて、判定を表示したホスト名とアクションの名前が、自社の設定と合っているかも確かめます。検証に使う秘密のキーはサーバーの中だけに置き、ページのスクリプトには書きません。
メリルの会社サイトのフォームは、Turnstile の検証で、成否・ホスト名・フォームの種類ごとのアクションの名前の3つを確かめています。トークンの無い送信と、検証に失敗した送信は受け付けません。
人が手で送る営業の送信を減らす3つの方法

営業の送信は人が画面から送るため、自動送信よけの仕組みでは止まりません。送る前に営業目的の人に立ち止まってもらう仕組みと、届いた後に扱いを分ける仕組みを組み合わせます。営業の送信を減らす方法は、以下の3つです。
- 送信の前に営業目的でないことを確かめるチェックを置く
- 相談の種類に営業の選択肢を作って送信を止める
- 営業の疑いがある送信は断らずに通知の扱いを変える
送信の前に営業目的でないことを確かめるチェックを置く
送信ボタンの前に、営業目的の送信ではないことを確かめるチェックの欄を置き、チェックの無い送信は受け付けません。営業の送信をすべて止める仕組みではなく、営業目的の人に、送る前にこのフォームでは受け付けていないと伝える仕組みです。
確かめるチェックの作り方は、以下のとおりです。
- 送信ボタンの前に、営業目的の送信を断る文とチェックの欄を置く
- チェックの欄を必須にする
- 送信を受けるプログラムでも、チェックの無い送信を断る
- チェックを入れた文を、届く問い合わせの本文にも付ける

オウンドメディア相談室の相談フォーム(https://blog-soudan.com/owned-media/contact/)の画面(2026年10月31日)。
画面でチェックを必須にするだけでは、画面を通さずに送られた送信を止められません。サーバーの側でもチェックを確かめることが大切です。
メリルの9種類のフォームのうち8種類は、送信の前に営業目的でないことの確認を求めています。メディアのフォームは営業・売り込みを目的とした問い合わせを禁止する文など2つの文に、会社サイトのフォームは「営業・勧誘目的の送信ではありません。」の1つの文に、チェックを入れてもらう作りです。残る1種類は入会希望の受付で、問い合わせではないため確認を求めていません。
相談の種類に営業の選択肢を作って送信を止める
相談の種類を選ぶ欄に「営業・ご提案のご連絡」の選択肢を作り、選ばれたら送れないようにします。営業の担当者が自分で選べる出口を作っておくと、本文を書き終える前に、受け付けていないことを伝えられます。
メリルの会社サイトのお問い合わせフォームでは、相談の種類の6つの選択肢の最後が「営業・ご提案のご連絡」です。選ぶとその場で「営業・ご提案目的のご連絡は受け付けておりません。ご了承ください。」と表示し、送信のボタンを押せなくします。
送信を受けるプログラムでも、営業の選択肢を選んだ送信を断ります。画面の制御は、画面を通さずに送られた送信には効かないためです。
営業の疑いがある送信は断らずに通知の扱いを変える
本文から営業の疑いを判定する仕組みは、疑いがある送信を断らずに受け付け、社内への知らせ方だけを変える使い方が向いています。言い回しで判定する以上、本物の問い合わせを営業と取り違えることがあり、断った問い合わせは取り戻せないからです。
メリルの問い合わせ管理は、9種類のフォームから届いた本文を、同じ判定にかけています。営業の疑いがある送信の扱いは、以下のとおりです。
- 受け付けて、送った人には受付確認のメールを送る
- 社内のチャット(Chatwork)への通知を省く
- 社内に届くメールの件名に【営業の疑い】と付け、判定の理由を本文に書く
誤って営業と判定しても、チャットへの通知が届かないだけで、問い合わせはメールと管理画面に残ります。営業の疑いの判定は、断る仕組みではなく、対応の順番を決める仕組みとして使いましょう。
メリルの9種類のフォームのスパム対策を仕組みごとに数えた結果

メリルは、会社サイトの2種類のフォーム(お問い合わせ・資料請求)と、メディアの7つのフォームの問い合わせを、同じ問い合わせ管理に集める作りにしています。9種類のフォームの送信を受けるプログラムと問い合わせ管理のソースから、スパム対策の10の仕組みがあるかを、2026年10月30日にスクリプトで数えました。営業の疑いの判定については、検査に入っている文例の数も数えています。数えた結果からわかったことは、以下の3つです。
- メリルの9種類のフォームすべてに5つの仕組みを入れている
- 自動送信への備えは時間と全体の上限か人の確認かで分かれる
- 営業の判定は本物の問い合わせの文でも試している
メリルの9種類のフォームすべてに5つの仕組みを入れている
メリルの9種類のフォームは、1つのフォームに7〜8個の仕組みを重ねています。仕組みごとに、使っているフォームの数を数えた結果は、以下の表のとおりです。
| 仕組み | 使っているフォームの数(9種類のうち) |
|---|---|
| 人に見えない入力欄 | 9 |
| 送り元のサイトの確かめ | 9 |
| IP アドレスごとの回数の上限 | 9 |
| メールアドレスごとの回数の上限 | 9 |
| 本文から営業の疑いを判定 | 9 |
| 営業目的でないことの確認のチェック | 8 |
| ページを開いてから送るまでの時間 | 7 |
| フォーム全体の回数の上限 | 7 |
| 人の確認のサービス(Turnstile) | 2 |
| 営業の選択肢を選ぶと送れない | 1 |
すべてのフォームにある5つは、どれも送る人に操作を求めない仕組みです。メールアドレスごとの上限は、問い合わせ管理の側で、9種類のフォームの送信を合わせて数えています。どのフォームから送っても、同じアドレスからの送信は同じ上限で止まります。
自動送信への備えは時間と全体の上限か人の確認かで分かれる
自動送信への備えは、メディアの7つのフォームと会社サイトの2種類のフォームとで、組み合わせ方が分かれました。メディアの7つのフォームは、時間の確かめとフォーム全体の上限を重ね、人の確認のサービスを使っていません。会社サイトの2種類のフォームは、時間の確かめと全体の上限の代わりに、Turnstile で判定する作りです。
人の確認のサービスを使わない組み合わせは、送る人の画面に何も足さずに済みます。人の確認のサービスを使う組み合わせは、判定をサービスに任せられる代わりに、サーバーから検証のための通信が加わります。自社のフォームでどちらを選ぶかは、届いている自動送信の数と、送る人に求めてよい手間で決めましょう。
営業の判定は本物の問い合わせの文でも試している
本文から営業の疑いを判定する仕組みは、営業の文を見つけられるかに加えて、本物の問い合わせを営業と判定しないかも試します。判定に使う言い回しを増やすほど、本物の問い合わせまで拾いやすくなるためです。
メリルの問い合わせ管理は、9つの言い回しの観点と、本文の URL の数・長い定型文の2つの観点で、営業の疑いを判定しています。判定の検査に入っている文例は、以下の表のとおりです。
| 文例の種類 | 文の数 | 期待する判定 |
|---|---|---|
| 典型的な営業の文 | 3 | 営業の疑いあり |
| 本物の問い合わせの文 | 6 | 疑いなし |
本物の問い合わせの6つには、「御社」を含む取材の依頼の文が1つ入っています。2026年10月30日に検査を動かし、2つの検査がどちらも合格することを確かめました。判定の言い回しを足すときは、本物の問い合わせの文例も一緒に足し、営業と取り違えないかを確かめることが大切です。
問い合わせフォームのスパム対策を入れたあとに確かめること

スパム対策は、本物の問い合わせまで断っていないか、フォームが別の迷惑行為に使われないかを確かめて仕上がります。対策を入れたあとに確かめることは、以下の3つです。
- 断った送信にも送れなかったことを画面で伝える
- 受付確認のメールに問い合わせの本文を入れない
- 断った送信を問い合わせの数に入れない
断った送信にも送れなかったことを画面で伝える
自動送信よけで断った送信にも、成功したように見せず、送れなかったことを画面で伝えます。見えない欄や時間の確かめに、本物の問い合わせを送った人が誤って当てはまる場合もあるためです。
メリルのメディアのフォームが、断ったときに画面で伝える内容は、以下のとおりです。
- 見えない欄が埋まっていた送信: 送信できなかったことと、時間をおいて送り直すこと
- 送るまでの時間が短すぎた送信: 少し時間をおいてから、もう一度送信のボタンを押すこと
- 回数の上限に達した送信: 続けて送られたため、受け付けを一時的に止めていること
送れなかったと伝われば、本物の問い合わせを送った人は、時間をおいて送り直せます。成功したように見せると、人が誤って当てはまったときに、送れていないことに気づけません。
受付確認のメールに問い合わせの本文を入れない
送った人に自動で送る受付確認のメールには、問い合わせの本文や、本文に書かれたリンクを入れません。フォームのメールアドレスの欄には、送った人とは別の人のアドレスも入れられます。受付確認のメールに本文を写すと、他人のアドレスを入れて送られたときに、送った人の文面を関係のない人へ届ける形になります。
メリルの問い合わせ管理が送る受付確認のメールは、問い合わせの本文と、本文に書かれたリンクを入れない作りです。メールの最後には、心当たりがない場合は削除してほしいことを書いています。受付確認のメールの数も、メールアドレスごとの回数の上限で抑えています。
断った送信を問い合わせの数に入れない
GA4 などで問い合わせの数を数えている場合は、サーバーが受け付けた送信だけを数えます。送信ボタンを押した数で数えると、自動送信よけで断った送信まで、問い合わせの数に入ってしまいます。
このメディアの相談フォームは、サーバーから受け付けたと返ってきたときだけ、GA4 に問い合わせのイベント(generate_lead)を送る作りです。入力の誤りや自動送信よけで断られた送信では、イベントを送りません。
» GA4のコンバージョン設定|キーイベントの設定手順と届いたかの確かめ方
問い合わせフォームのスパム対策は送信の種類に合わせて仕組みを重ねる
問い合わせフォームのスパムは、プログラムが送る自動送信と、人が送る営業の送信とで、止める仕組みが違います。届いた送信を種類ごとに数えてから、足す仕組みを選びましょう。
自動送信と営業の送信のそれぞれに効く仕組みは、以下のとおりです。
- 自動送信: 人に見えない入力欄・送るまでの時間・送り元のサイトの確かめ・回数の上限。止まらなければ人の確認のサービス
- 営業の送信: 営業目的でないことの確認のチェック・営業の選択肢・本文からの営業の疑いの判定
対策を入れたあとは、本物の問い合わせを断っていないか、受付確認のメールが迷惑行為に使われないかまで確かめます。仕組みを1つずつ重ね、届く送信の種類の変化を見ながら、自社のフォームに合う組み合わせを決めてください。
この記事の数字の出どころ
- メリルの9種類のフォームのスパム対策の仕組みメリルが作った9種類のフォーム(会社サイトのお問い合わせ・資料請求と、メディアの7つのフォーム)について、送信を受けるプログラムと問い合わせ管理のソースから(メディアのフォームは問い合わせ管理に登録する経路で)、スパム対策の10の仕組みがあるかをスクリプトで判定し、仕組みごと・フォームごとに数えた(2026年10月30日時点)。秒数や回数などの設定の値は数えていない
- 問い合わせ管理の営業の疑いの判定の観点と検査の文例メリルの問い合わせ管理が本文から営業の疑いを判定するときの観点の数と、判定の検査に入っている文例(典型的な営業の文・本物の問い合わせの文)の数をスクリプトで数え、検査を2026年10月30日に動かして結果を確かめた
- メリルのフォームの断ったときの表示と受付確認のメールの作りオウンドメディア相談室の相談フォームの画面と送信のプログラム、問い合わせ管理の受付確認のメールと社内への通知の作りを、2026年10月30日時点のソースで確かめた
参考にしたページ
- Validate the token(Cloudflare Turnstile ドキュメント)(2026年10月30日に確認)
- Cloudflare Turnstile(Cloudflare Turnstile ドキュメント)(2026年10月30日に確認)
- ウェブサイト用の reCAPTCHA キーを作成する(Google Cloud ドキュメント)(2026年10月30日に確認)
- ウェブサイトの評価を解釈する(Google Cloud ドキュメント)(2026年10月30日に確認)
- Origin(MDN Web Docs)(2026年10月30日に確認)
運営:株式会社メリル(このメディアについて)。相談の内容を記事にするときは、ご本人の許可を取り、社名と数字を伏せます。


