お問い合わせフォームの確認画面で営業メールを断る|相互リンクの依頼を記事ネタにする了承も取れる
かつ
2026/09/17
カツプロのお問い合わせフォームに届くのは、ほとんどが相互リンクの依頼です。
2026年8月18日から9月16日までに届いたお問い合わせは9件。そのうち8件が相互リンクの依頼でした(カツプロ調べ)。本当にご相談したい方のお問い合わせが、依頼の山に埋もれてしまいます。
そこで2026年9月17日に、フォームを作り直しました。やったことは1つだけです。
送信ボタンを押す前の「確認画面」で、先にお断りを出す。
これで、何度も送ってくる相手に「送る前に」断りが届きます。さらに、送られてきた文面を記事のネタに使う了承まで、送信と同時にもらえます。
この記事では、実際の画面と仕組みをそのまま載せます。相互リンクだけでなく、「リソース足りていますか?」のような営業メールの対策にもそのまま使えます。
入力 → 確認 → 完了 の3画面にした
もとのフォームは、入力して送信ボタンを押したら終わり、の1画面でした。これを3画面に分けました。

入力画面の見た目は、ほとんど変わりません。変わったのは上の「1 入力 → 2 確認 → 3 完了」と、ボタンの文字が「入力内容を確認する」になったことだけです。
ふつうのお問い合わせなら、確認画面で内容を見直して送信するだけ。ここまでは、よくあるフォームと同じです。
相互リンクの依頼だけ、確認画面にお断りが出る
違うのは、本文や件名に「相互リンク」「リンク交換」などの言葉が入っていたときです。確認画面の送信ボタンの上に、黄色の枠でお断りが出ます。

※画面の名前・メールアドレス・本文は、説明用に入れた架空のものです。
枠の中に書いていることは4つです。
- 相互リンクのご依頼は、お断りしていること
- Google がこれを「リンクスパム」の例に挙げていること。だから、何度も送らないでほしいこと
- 送られてきた内容は保存し、SEOで逆効果になる手法を紹介する記事の材料として、個人や会社が特定できない形で使う場合があること
- この内容のまま送信された場合は、上記にご了承いただいたものとして扱うこと
そして送信ボタンの文字は「送信する」ではなく、「上記を了承して送信する」にしました。
スマホでは、こう見えます。

Google は、相互リンクをどう書いているか
お断りの根拠にしているのは、Google 検索セントラルの「Google ウェブ検索のスパムに関するポリシー」です。リンクスパムの説明は、こう始まります。
リンクスパムとは、検索ランキングを操作することを主な目的として、サイトへのリンクやサイトからのリンクを作成する行為です。
そして、その例の1つとして次の一文が挙がっています。
過剰な相互リンク(「リンクする代わりにリンクしてもらう」)や、相互リンクのみを目的としてパートナー ページを作成する
出典:Google ウェブ検索のスパムに関するポリシー(Google 検索セントラル)
ここは誤解のないように書いておきます。Google が挙げているのは「過剰な」相互リンクと、「相互リンクのみを目的として」ページを作ることです。相互リンクが1本残らずダメ、とは書かれていません。取引先のサイトどうしで自然にリンクし合うのは、また別の話です。
カツプロに届く依頼は、どれも「相互リンクをしてほしい」がそのまま目的でした。だから断っています。
送信のあとは「お返事しません」まで伝える
送信すると、完了画面が出ます。相互リンクの依頼のときは、お返事しないことまで書いておきます。

ふつうのお問い合わせのときは「内容を確認のうえ、ご記入の連絡先に折り返します。」と出ます。
相互リンクの依頼は、カツプロの管理画面にも保存します。ただし状態は最初から「無視」で、運営への通知メールも送りません。受け取る側の手間は、ゼロのままです。
なぜ「送信のあと」ではなく「確認画面」なのか
最初は、送信したあとの画面にお断りを出していました。でも、これには弱点があります。
送信した「あと」に出す文は、相手がそれを読む前に、もう送り終わっています。「記事の材料に使う場合があります」と書いても、送る時点では見ていないので、了承したことになりません。
確認画面なら順番が逆になります。
- お断りと、記事の材料に使うことを先に見せる
- それを読んだうえで「上記を了承して送信する」を押した人だけが、送信できる
送信したという事実そのものが、了承の意思表示になります。
ロボットも、確認画面を飛ばせない
ここが一番大事なところです。
相互リンクの依頼は、人が1通ずつ手で書いているとは限りません。入力欄を自動で埋めて、送信先へ直接データを送ってくる仕組みもあります。確認画面を作っても、そこを飛ばして送信できてしまったら意味がありません。
そこで、カツプロのフォームは次のようにしました。
- 確認画面を開いたときに、その場限りの「合図」を1つ発行して、サーバー側に覚えておく
- 送信のときに、その合図が一緒に届いたかを照らし合わせる
- 合図が無い・違う・確認画面から30分以上たっている、のどれかなら保存しない
- 一度使った合図は消す(同じ合図で2回は送れない)
保存する内容も、送信のときに届いたデータではなく、確認画面を出したときにサーバーが覚えておいた内容を使います。確認画面で見せた内容と、保存される内容が必ず一致します。
確認画面を通らない送信は、ロボットでも人でも受け付けません。だから、保存されている依頼は全部「お断りの枠を表示したうえで送られてきたもの」です。
実際に、確認画面を飛ばして送信だけを直接送る形も試しました。保存はされず、入力画面に「確認画面の有効期限が切れたか、送信の手順が正しくありません」と出て戻されます。
仕組みのコード(Laravel)
カツプロは Laravel で動いています。送信のところは、これだけです。
public function send(Request $request)
{
// 確認画面で発行した合図と照らし合わせる
$draft = $request->session()->get('contact_draft');
$token = (string) $request->input('token');
if (! is_array($draft) || $token === ''
|| ! hash_equals((string) ($draft['token'] ?? ''), $token)
|| time() - (int) ($draft['at'] ?? 0) > 1800) {
$request->session()->forget('contact_draft');
return redirect()->route('contact')->withErrors([
'message' => '確認画面の有効期限が切れたか、送信の手順が正しくありません。',
]);
}
$request->session()->forget('contact_draft'); // 二重送信させない
// 保存するのは、確認画面を出したときに覚えておいた内容
$data = $draft['data'];
// …保存と通知
}
合図は確認画面を出すときに Str::random(40) で作り、入力内容と一緒にセッションへ入れておきます。照らし合わせに == ではなく hash_equals を使うのは、比べる時間の差から合図を推測されないようにするためです。
相互リンクの依頼かどうかは、件名と本文を正規表現で見ています(実際に使っているものから一部を抜き出しました)。
private const PATTERNS = [
'/相互\s*リンク/u',
'/リンク\s*(の)?\s*(交換|相互)/u',
'/(link|links)\s*exchange/i',
'/reciprocal\s*link/i',
];
「被リンク」だけでは反応しないようにしています。ホームページ制作のご相談で、ふつうに出てくる言葉だからです。
「リソース足りていますか?」の営業メールにも使える
この仕組みは、相互リンク専用ではありません。
エールクエストのお問い合わせフォームには、「リソース足りていますか?」といった営業のご連絡も届きます。コーディングの外注の営業メールについては、以前こちらに書きました。
コーディングの営業メール7通を比較|納期の速さは、もう強みになりませんコーディング営業メール7通の納期を比較。16ページで1ヶ月半、6ページで3週間。実際はFigma支給...
こうした営業にも、同じ形がそのまま使えます。使い方は2通りあります。
やり方1:言葉で見分けて、確認画面に出す
相互リンクと同じように、営業でよく使われる言葉を見分けて、確認画面に注意書きを出します。
たとえば、こんな文です。
営業・ご提案を目的としたご連絡には、お返事しておりません。送信された内容は保存し、営業手法の傾向を紹介する記事の材料として、個人や会社が特定できない形で使わせていただく場合があります。この内容のまま送信された場合は、上記にご了承いただいたものとして扱います。
このやり方の良いところは、見分けを間違えても害が小さいことです。
言葉で見分けると、どうしても本物のご相談に反応してしまうことがあります。たとえば「社内のリソースが足りないので制作をお願いしたい」というご依頼にも、「リソース」という言葉は入ります。
もし送信を「止めて」しまう作りだと、このお客さまは送れずに帰ってしまいます。でも確認画面に注意書きを「出すだけ」なら、読んで「自分は営業ではない」と分かれば、そのまま送信できます。取りこぼしが起きません。
やり方2:全員の確認画面に、一文だけ出す
言葉で見分けずに、すべての確認画面に一文を入れておく方法もあります。
営業・ご提案を目的としたご連絡には、お返事しておりません。
こちらは見分けの漏れがありません。そのかわり、ふつうのお客さまにも毎回この文が見えます。記事の材料に使う、までは書かず、この一文だけにとどめるのがちょうどいいと思います。
相互リンクのように「来る依頼がほぼ全部同じ種類」ならやり方1、営業の文面がばらばらで見分けにくいならやり方2、と使い分けるのがおすすめです。
その後、やり方1をもう一歩進めた形を、エールクエストとカツプロのフォームに入れました。言葉を点数で見分けて、確認画面のボタンを「営業・ご提案として送る」「制作のご依頼・ご相談として送る」の2つにし、送る人に選んでもらう形です。詳しくはこちらに書きました。
コーダー・デザイナーの外注営業メールは、お問い合わせフォームの確認画面で送る人に...外注の売り込みメールを、お問い合わせフォームの確認画面で見分ける方法。点数での判定と、本物...
使うときに気をつけていること
最後に、この仕組みを入れるときに気をつけたことを書いておきます。
「了承したものとして扱う」は、何をしてもいい許可ではありません。 送信ボタンで了承を取る形が、法律の上でどこまで通用するかは、この記事では断定しません。だからこそ、記事に使うときは個人や会社が特定できない形にする、と最初から画面に書いています。社名やURL、担当者名は出しません。
お問い合わせで集めた情報の使い道は、プライバシーポリシーとも揃える。 確認画面に「記事の材料に使う場合がある」と書くなら、サイトのプライバシーポリシーにある利用目的とも食い違わないようにしておくと安心です。
本物のお客さまの手間を増やさない。 確認画面が1枚増えるぶん、送信までのクリックは1回増えます。そのかわり、入力内容を見直せて、「修正する」で入力画面に戻っても、書いた内容は残るようにしました。
まとめ
- お問い合わせフォームに確認画面を挟み、相互リンクの依頼のときだけ、送信ボタンの前にお断りを出す
- 記事の材料に使う場合があることを先に見せ、「上記を了承して送信する」で送ってもらう。送信そのものが了承になる
- 確認画面で発行した合図が無い送信は保存しない。ロボットも確認画面を飛ばせない
- 同じ形は「リソース足りていますか?」のような営業メールにも使える。止めずに「出すだけ」にすれば、本物のご相談を取りこぼさない
同じ仕組みを自分のサイトのお問い合わせフォームにも入れたい方は、カツプロのお問い合わせからご相談ください。
この記事の著者・監修
カツ
カツプロ運営者のカツです! AI・Web関連から、日常のことなど、私目線の回答も交えながらお伝えします!
この記事をシェア