ホームページの問い合わせフォーム迷惑メール対策|営業連絡の止め方

ホームページの問い合わせフォーム迷惑メール対策|営業連絡の止め方

この記事の要点

  • フォームの迷惑メールは機械の自動送信と人が送る営業、公開アドレス宛の広告の3タイプ。効く対策が違う
  • 入口はハニーポットと文字数の下限。コピペで使えるPHPを掲載
  • 届いた後は削除せずラベルで隔離。本物を消す事故を防ぐ

ホームページの問い合わせフォームに届く迷惑メールを減らすには、「機械が自動で送っているもの」と「人が手で送る営業連絡」を分けて手を打つのが近道です。この2つは止まる仕組みがまったく違うため、片方の対策だけを強くしても、もう片方は素通りします。

さらに、フォームを通らずに公開アドレス宛へ直接届く広告宣伝メールも別枠です。こちらを合わせると、全部で3タイプになります。

この記事は、自社サイトの問い合わせフォームを自分たちで運用していて、届く連絡の半分以上が売り込みになっている中小企業の担当者に向けて書いています。読み終わる頃には、今週どの設定から手をつけるかを決められる状態を目指します。

扱うのは、フォーム側の設定と、届いた後の仕分けルールです。ボットの自動送信そのものを止める仕組みは問い合わせフォームのスパム対策とreCAPTCHA v3の設置手順で詳しく解説しているので、まだ入れていない方は先にそちらを読んでください。この記事は、reCAPTCHAを入れてもなお届いてしまう営業連絡が対象です。

Contents / 目次
  1. 問い合わせフォームの迷惑メールは3タイプ。止め方が違う
  2. フォーム側ですり抜けを減らす5ステップ
  3. 届いた後に仕分ける。メールのルールとAIの使い方
  4. どれだけ減るか。工数に置き換えて見る
  5. 問い合わせフォームの迷惑メール対策でよくある失敗
  6. ゼロにはならない。どこで手を止めるかの判断
  7. よくある質問
  8. まず今日の1つから始めてください

問い合わせフォームの迷惑メールは3タイプ。止め方が違う

まず結論からお伝えします。問い合わせフォームに届く迷惑メールは、送っている相手で3つに分かれます。それぞれ効く対策が違うので、自社に届いているものがどれかを見分けるところから始めます。

見分け方は難しくありません。受信箱を開いて、直近の迷惑な連絡を10件だけ読んでみてください。日本語が破綻していて深夜に連続で届いているなら機械、文章として成立していて相手の会社名も実在するなら人間です。

届いているもの見分け方効く対策効きにくい対策
機械が自動で送るスパム本文が意味不明、URLだらけ、同じ内容が短時間に連続ハニーポット、reCAPTCHA v3、同一IPからの連続送信制限「営業お断り」の注意文(機械は読まない)
人が手で送る営業・提案日本語が整っている、会社名も担当者名も実在する、平日の日中に届く用件の選択式、本文の文字数の下限、注意文と同意チェックreCAPTCHA(人が送っているので通過する)
公開アドレス宛の広告宣伝メールフォーム経由ではなく、サイトに載せた info@ などに直接届く送信を断る意思をサイト上に明記、メール側のフィルタフォームの改修(そもそもフォームを通っていない)

ここを取り違えると全部むだになります。reCAPTCHAを入れたのに営業連絡が減らない、という相談が一番多いのですが、これは当然です。reCAPTCHAは「人間かどうか」を判定する仕組みで、人間が手で送っている営業連絡は、判定上まったく正しい送信だからです。

公開しているメールアドレスには、法律が効く場合があります

3つ目の「公開アドレス宛の広告宣伝メール」だけは、法律を使って断ることができます。特定電子メールの送信の適正化等に関する法律(特定電子メール法)は、広告や宣伝を目的とするメールの送信を規制する法律です。総務省と消費者庁が所管しており、条文と解説は総務省「特定電子メールの送信の適正化等に関する法律」消費者庁「特定電子メールの送信の適正化等に関する法律」で公表されています。同意の要り方、法人が公表しているアドレスの扱い、送信を断る意思を示している場合の扱いは、いずれもこの一次情報で確認してください。自社の対応を決める前に、必ず原文にあたることをおすすめします。

実務としてやれるのは、メールアドレスを載せているページに、広告宣伝メールを断る一文を添えることです。文面は次のようなもので構いません。

当社では、広告または宣伝を目的とする電子メールの送信をお断りしています。
特定電子メールの送信の適正化等に関する法律に基づき、当社が公表している
メールアドレス宛への広告宣伝メールの送信はご遠慮ください。

一方で、ウェブサイトの問い合わせフォームからの送信については、同じようには言えません。この法律が対象にしている「電子メール」の範囲は法令で定められており、フォームからの送信がそのまま同じ扱いになるとは限らないためです。フォームの注意文に「法的措置を取ります」と書いている会社を時々見かけますが、効き目は限定的だと考えておいた方がいいです。正確な条文の解釈は、上に挙げた総務省と消費者庁のページで確認してください。

この章の結論です。自社に届いているものが機械なのか人なのかを10件読んで判断し、機械ならフォームの技術的な設定、人なら用件の分岐と文面、公開アドレス宛なら断りの明記、と手をつける場所を決めてください。

フォーム側ですり抜けを減らす5ステップ

ここからは実際の作業です。順番に進めれば、人が手で送る営業連絡も、機械の自動送信も、両方を減らせます。全部で5ステップあります。

ステップ1 いま何がどれだけ届いているかを7日分だけ数える

最初にやるのは現状の把握です。感覚で「多い」と言っている状態では、対策を打っても効いたかどうか分かりません。

スプレッドシートを1枚用意して、直近7日分のフォーム受信を1件1行で書き出します。列は4つで足ります。

  • 受信日時:深夜に集中しているかを見る
  • 区分:本物の相談/人が送った営業/機械のスパム、の3つのどれか
  • 本文の文字数:おおよそで構わない。40字未満か、それ以上か
  • 本文中のURLの数:0本か、1〜2本か、3本以上か

7日分を数え終えたら、自社のパターンが見えます。本文の長さとURLの数を、本物の相談と営業連絡で並べて比べてください。どちらの側にどんな差が出るかは会社ごとに違います。その差が、次のステップ以降で使う判定の基準になります。

この7日分の記録は捨てないでください。あとでコードの数値を調整するときも、誤判定が出たときの原因さがしでも、この記録が唯一の手がかりになります。

ステップ2 用件を選択式にして、営業・提案の受け皿を分ける

次に、フォームに「用件」の選択項目を1つ追加します。営業連絡をゼロにはできないので、正直に申告してもらって、通知先を分けるという発想に切り替えます。

選択肢は3つか4つに絞ります。多くすると本物のお客さまが迷います。

  1. サービスについての相談・見積もり
  2. すでに取引がある件についての連絡
  3. 採用・取材・その他のお問い合わせ
  4. 貴社へのご提案・営業のご連絡

4つ目をあえて用意するのがコツです。売り込みをする側にも、無視されるより読まれる可能性がある窓口を選ぶ理由があります。どれくらいの人がこの選択肢を選ぶかは、ステップ1と同じ数え方で確認してください。

そのうえで、フォームの通知メールの件名にこの用件を差し込みます。件名が「【ご提案・営業のご連絡】ホームページからのお問い合わせ」のようになれば、開かなくても判断できます。この件名づくりが、次の章の仕分けの土台になります。Contact Form 7 での差し込み方はContact Form 7 公式ドキュメント「メールの設定」に書かれています。ほかのプラグインを使っている場合は、同じことができるかを各プラグインのドキュメントで確認してください。フォームとメールの設定手順はContact Form 7の設定方法と確認画面・自動返信の作り方にもまとめています。

項目を増やしすぎない。用件の選択を足すぶん、どこかの入力欄を1つ減らしてください。入力項目が増えると本物の問い合わせが減ります。何を残して何を消すかはBtoBの問い合わせフォームを5項目に絞る入力設計を参考にしてください。

ステップ3 ハニーポットを1つ足して機械の送信を落とす

ハニーポットとは、人間には見えないけれど機械には見える入力欄をフォームに仕込んでおき、そこに文字が入っていたら自動送信だと判定する仕組みです。プログラムはページの構造だけを読んで全部の欄を埋めようとするので、見えない欄にも入力してしまいます。人間の目には映らないので、本物のお客さまには何の手間もかかりません。

フォーム側には、隠すためのクラスを付けた欄を1つ足します。Contact Form 7 のフォーム編集欄に次のように書きます。

<p class="cl-hp-field">
  この欄は入力しないでください
  [text check-hint]
</p>

そして、テーマの追加CSSに次の3行を入れます。

/* ハニーポット用の欄を人の目から隠す。テーマの追加CSSに書く */
.cl-hp-field { position: absolute; left: -9999px; height: 0; overflow: hidden; }

欄の名前は「fax」「address」「company」などの一般的な単語を避け、上の例のように check-hint という意味を持たない名前にしてください。導入後は、自分のPCとスマホの両方から本物と同じ内容で1件送信し、通知メールが届くことを必ず確かめてください。ブラウザやパスワード管理ツールの入力補助が働く環境もあるため、隠し欄が空のまま送信できているかどうかは、実際の送信テストで確認するのが確実です。

ステップ4 文字数とURLの数でふるいにかけるコードを入れる

ここが一番効きます。ステップ1で数えた自社のパターンをもとに、機械的な条件で落とします。次のコードをコピーして使ってください。ただし、使っているフィルタ名と引数の構成、送信内容の取り出し方は、必ず導入前に公式ドキュメントで確認してください。プラグインのバージョンによって変わることがあります。確認先はContact Form 7 公式ドキュメント一覧で、スパム判定のフィルタと送信オブジェクトの項目に、現在の仕様と使える関数が書かれています。仕様が違っていた場合は、下のコードの add_filter の行と、送信内容を取り出している行を、そのドキュメントの記述に合わせて直してください。そのうえで、必ずテスト送信で動作を確かめてから本番に入れてください。

<?php
/**
 * Contact Form 7 の送信内容をふるいにかける
 * 置き場所:使用中のテーマの functions.php(子テーマを推奨)
 * 前提:Contact Form 7 が有効になっていること
 *      ステップ3のハニーポット欄 [text check-hint] をフォームに追加済みであること
 * 注意:判定に引っかかった送信は通知メールが届かなくなります。
 *      後から見返せるよう、送信内容を保存するプラグインを併用してください。
 *    フィルタ名・引数の構成・送信内容の取り出し方はバージョンで変わることがあるため、
 *    公式ドキュメントで現在の仕様を確認し、合わない場合は書き換えてください。
 */

add_filter( 'wpcf7_spam', 'coletlab_cf7_spam_filter', 10, 2 );

function coletlab_cf7_spam_filter( $spam, $submission = null ) {

	if ( $spam ) {
		return $spam; // 他の判定ですでにスパム扱いなら、そのまま返す
	}

	if ( ! $submission && class_exists( 'WPCF7_Submission' ) ) {
		$submission = WPCF7_Submission::get_instance();
	}
	if ( ! $submission || ! method_exists( $submission, 'get_posted_data' ) ) {
		return $spam;
	}

	$posted = $submission->get_posted_data();
	if ( ! is_array( $posted ) ) {
		return $spam;
	}

	// [ここを自社のフォームの欄の名前に変更]
	$body_field     = 'your-message'; // 本文の欄
	$honeypot_field = 'check-hint';   // ステップ3で足した隠し欄

	$body = isset( $posted[ $body_field ] ) ? (string) $posted[ $body_field ] : '';
	$trap = isset( $posted[ $honeypot_field ] ) ? trim( (string) $posted[ $honeypot_field ] ) : '';

	// 判定1 隠し欄に何か入っていたら自動送信とみなす
	if ( '' !== $trap ) {
		return true;
	}

	// 判定2 本文が短すぎる
	if ( mb_strlen( $body ) < 40 ) { // [40字はステップ1の記録を見て調整]
		return true;
	}

	// 判定3 本文に貼られたURLが多すぎる
	preg_match_all( '#https?://#u', $body, $matches );
	if ( count( $matches[0] ) >= 3 ) { // [3本以上で落とす。実物を見て調整]
		return true;
	}

	// 判定4 売り込みに出やすい言い回しが2つ以上そろったとき
	// 1語だけでは落とさない。本物を巻き込む事故を防ぐため2語以上にしている
	$ng_words = array( '成果報酬', '初期費用0円', '上位表示', '被リンク', 'アポイント獲得', '無料でお試し' );
	$hit = 0;
	foreach ( $ng_words as $word ) {
		if ( false !== mb_strpos( $body, $word ) ) {
			$hit++;
		}
	}
	if ( $hit >= 2 ) {
		return true;
	}

	return $spam;
}

判定3でURLの本数を数えている count( $matches[0] ) は、$matches ではなく $matches[0] を数えるのが正しい書き方です。マッチした文字列そのものは $matches[0] に配列で入るためで、ここを $matches にすると本数が正しく取れません。

このコードでつまずきやすいのは、欄の名前の書き間違いです。Contact Form 7 のフォーム編集画面に並んでいるタグの名前([textarea your-message]your-message の部分)と、コードの $body_field を1字ずつ照らし合わせてください。ここがずれていると、本文の文字数がいつも0字と判定され、すべての送信がブロックされます。実際に一番起きるミスがこれです。

入れたら必ず、自分で本物と同じ内容の問い合わせを1件送って、通知メールが届くことを確認してください。動かないときはContact Form 7 公式ドキュメント一覧で現在の仕様を確認し、フィルタ名と送信内容の取り出し方を書き換えてください。

判定に引っかかった送信は、通知メールが飛びません。送信内容をデータベースに残すプラグインを併用しないと、誤って落とした本物の問い合わせが完全に消えます。フォームの送信データがどこに残るのかは問い合わせフォームの仕組みと送信データの保存先で解説しています。

ステップ5 注意文と同意チェックの文面を置く

最後に文面です。機械には効きませんが、人が手で送る営業には一定の抑止力があります。フォームの送信ボタンのすぐ上に置いてください。上の方に置くと読まずにスクロールされます。

【送信前にご確認ください】
・当社サービスへのご提案、広告・システム・人材などの営業のご連絡は、
 上の「用件」で[貴社へのご提案・営業のご連絡]をお選びください。
・営業目的の送信を、お客さまからのご相談として送信された場合、
 返信はいたしかねます。
・お預かりした内容は、お問い合わせへの回答のみに使用します。

同意チェックを付けるなら、文言は次の1行で十分です。長い誓約文にすると、本物のお客さまの手が止まります。

[acceptance agree-purpose] 上記の内容を確認し、正しい用件を選択しました。 [/acceptance]

公開前チェックリスト

5ステップを終えたら、フォームを公開する前に次を確認してください。上から順に、実際に手を動かして確かめます。

  • 本物と同じ送信テスト:200字以上の本文、URLなし、用件は「相談」を選んで送信。通知メールが届くか
  • ブロックの動作確認:本文20字だけで送信。通知が届かないこと、かつ保存プラグイン側には記録が残ること
  • 隠し欄の見え方:スマホとPCの両方でフォームを開き、「この欄は入力しないでください」が画面に出ていないか
  • 自動返信の到達:お客さまへの自動返信が迷惑メールに入っていないか。フリーメール宛にも1回テストする
  • 件名のタグ:通知メールの件名に用件が入っているか。文字化けしていないか
  • 7日分の記録:ステップ1のシートを残し、1週間後にもう一度数える準備ができているか

自動返信が迷惑メール扱いになると、対策のつもりが機会損失に変わります。心当たりがある方は会社メールが迷惑メール判定される原因とSPF・DKIMの設定を先に確認してください。

この章の結論です。5ステップのうち、効き目が大きい順は「ステップ4のコード」「ステップ2の用件分岐」「ステップ3のハニーポット」です。時間が取れないなら、ステップ1で数えてからステップ2だけ先に入れれば、判断の負担はかなり軽くなります。

届いた後に仕分ける。メールのルールとAIの使い方

フォーム側で全部は止まりません。残ったものは、受信箱で自動的に振り分けます。ここでの鉄則は1つだけで、自動で削除させないことです。

件名にタグを付けて、ラベルで隔離する

ステップ2で件名に用件を入れたので、あとはメールソフト側でその文字列を条件にすればいいだけです。設定手順は公式ヘルプに載っています。GmailはGmailヘルプ「メールを自動的に振り分けるフィルタを作成する」、OutlookはMicrosoftサポート「受信トレイ ルールを使用する」を参照してください。

設定する内容は共通で、次の形にします。

  1. 条件は「件名に[貴社へのご提案・営業のご連絡]を含む」
  2. 動作は「営業連絡」というラベル(フォルダ)を付ける
  3. 受信トレイから消す動作(アーカイブ、既読にする、削除)は設定しない
  4. 週に1回、そのラベルだけをまとめて開いて確認する時間を決める

3番目が重要です。自動でアーカイブや削除にすると、判定を間違えたときに気づけません。ラベルを付けるだけにしておけば、受信トレイでは色分けされて目に入るので、5秒で判断して次に進めます。慣れてきて誤判定がゼロになってから、アーカイブに変えてください。

NGワードの決め方。業界語を入れない

件名タグをすり抜けたもの向けに、本文のキーワードでもルールを作ります。ここで「営業」「提案」「ご案内」のような一般的な言葉を条件にしてはいけません。「営業部の田中です」「先日ご提案いただいた件で」といった本物の連絡が全部引っかかります。

使うのは、売り込みでしか出てこない組み合わせです。ステップ1で数えた実物から拾うのが確実ですが、出発点としては次のような語が使えます。

  • 成果報酬型:本物の相談で使われることはほぼない
  • 初期費用0円:数字の全角・半角の両方を登録する
  • 上位表示を保証:検索対策の売り込みに頻出
  • アポイント獲得:営業代行の売り込みに頻出
  • 突然のご連絡失礼いたします:面識のない相手からの一斉送信で使われやすい

ただし最後の1つは、本物の新規のお客さまも使う言い回しです。単独では条件にせず、他の語と合わせて2つ以上そろったときだけ、という組み方にしてください。

AIに仕分けさせるときの渡し方と、出力の確認の仕方

キーワードのルールは、書き方を変えられると通り抜けます。文章の意味で判断させたいときは、生成AIに読ませる方法があります。ただし、AIに削除の権限は渡しません。やらせるのは分類と理由づけまでで、消すかどうかは人が決めます。

渡すものは3つです。

  • 判定してほしい問い合わせの本文:氏名と連絡先を削って本文だけにする
  • 自社にとっての「本物」の定義:業種と提供しているサービスを具体的に書く
  • 迷ったときの扱い方:判断がつかないものをどちらに寄せるかを決めておく

出発点となる指示文は次の程度で十分です。あとはAIと対話しながら、自社の実物に合わせて詰めてください。

あなたは当社の問い合わせ受付の担当者です。
当社は[業種・提供しているサービスを入力]です。

次の問い合わせ本文を読み、以下の3つに分類してください。
1. 依頼・相談(当社のサービスを検討している、または取引先からの連絡)
2. 営業・提案(当社に何かを売り込む内容)
3. 判断がつかない

判断に迷ったら、必ず「3. 判断がつかない」にしてください。
分類と、そう判断した理由を1行で出力してください。本文の要約は不要です。

---
[ここに問い合わせ本文を貼る]

出力を受け取ったら、人が確認するのは「2. 営業・提案」と判定されたものだけです。ここに本物が混ざっていないかを見ます。逆方向、つまり営業を相談と判定してしまう誤りは、実害が「1通よけいに読む」だけなので放っておいて構いません。この非対称を意識すると、確認にかける時間が半分以下になります。

まずは10件だけ手で貼って、判定が自社の感覚と合うかを見てください。合わないなら、指示文の「当社は」の部分を具体的に書き直します。ここが薄いと、AIは何が本物か分かりません。

問い合わせ本文には、送信者の氏名・会社名・メールアドレスといった個人情報が含まれます。外部のAIサービスに貼る前に、社内でその扱いを決めてください。氏名と連絡先を削って本文だけを貼る、というルールにしておけば、判定の精度はほとんど落ちません。

この章の結論です。受信後の仕分けは、件名タグでのラベル付けから始めて、削除は必ず人が行う形にします。AIを使うのは、キーワードでは追いつかなくなってからで十分です。

どれだけ減るか。工数に置き換えて見る

効果は「何件減ったか」より、「確認にかけていた時間がどれだけ戻ってくるか」で見た方が判断しやすくなります。1件あたりの確認にかかる時間は、内容の読み方や担当者によって大きく変わります。まずは自社で数件を実際に計ってみて、その秒数に1日の件数を掛けてください。

たとえば1日20件届いていて、1件の確認に平均30秒かかっていた場合、1日10分、月20営業日で200分、年間では約40時間になります。この40時間はあくまで計算式の例で、根拠のある目安ではありません。自社で計った秒数と件数を当てはめて、計算し直してください。どれだけ減らせるかも、届いている中身と設定の詰め方で大きく変わります。ステップ1の記録を1か月後にもう一度取って、自社の減り方を実測してください。

ただ、時間よりも大きいのは見落としのリスクです。1日20件の売り込みに埋もれた状態だと、担当者は件名をざっと見て「またか」と判断する癖がつきます。その中に本物の見積もり依頼が1件混ざっていたとき、開かずに消える確率が上がります。1件の商談を逃す損失は、確認にかけた数十秒とは桁が違います。

対策を続けやすくする2つの進め方

設定を足していくときは、次の2点を守ると、効かなかった設定を戻せるようになります。

  • 数えてから設定を変える:「減った気がする」ではなく、対策前と1か月後の件数を比べる。だから効かなかった設定を戻せる
  • ブロックの条件を1つずつ足す:文字数、URL数、キーワードを同時に入れず、1週間ずつずらして追加する。誤判定が出たとき、原因がどれか分かるようにしておく

逆に、市販の対策を一度に全部入れると、後から「本物が届いていないかもしれない」という不安を抱えることになります。どの設定が効いたのかも、どの設定が誤判定を出しているのかも分からなくなるからです。1週間に1つずつ、が結局は早いです。

この章の結論です。効果は件数ではなく年間の工数と見落としリスクで測り、設定は1週間に1つずつ足して、そのつど数え直してください。

問い合わせフォームの迷惑メール対策でよくある失敗

ここからは、実際に現場でよく見かける失敗です。どれも「対策したつもり」で起きるので、心当たりがあれば今日のうちに確認してください。

失敗1 フォームを検索エンジンから隠して、問い合わせごと消えた

「ボットに見つからないように」と、問い合わせフォームのページをnoindex(検索結果に出さない設定)にしてしまうケースです。ボットはサイト内のリンクをたどって来るので、検索結果から消えても送信は止まりません。

一方で、「会社名 問い合わせ」で検索して直接フォームに来ていた本物のお客さまは、たどり着けなくなります。結果として、迷惑メールは減らないのに問い合わせだけが減ります。防ぎ方は単純で、フォームのページをnoindexにしないことです。ボット対策は、ページを隠すのではなくハニーポットや送信内容の判定で行ってください。

失敗2 海外からのアクセスをまとめて遮断して、取引先が送れなくなった

スパムの送信元に海外のIPアドレスが多いため、サーバーの機能で国外からのアクセスを一括で遮断する方法があります。効果は確かに大きいのですが、副作用が読みにくい設定です。

実際に起きるのは、出張中や海外赴任中の取引先の担当者がフォームを開けない、社員がテザリングで接続したときに弾かれる、といった状況です。しかも、遮断された側にはエラー画面しか見えないので、こちらには何も届きません。気づけないタイプの失敗なので、たちが悪いです。

防ぎ方は、国外遮断を入れるなら電話番号を必ずフォームの近くに併記しておくことです。連絡手段が1つしかない状態で遮断をかけると、逃した機会を数えることすらできません。

失敗3 NGワードに一般的な言葉を入れて、本物を落とした

「営業」「ご提案」「サービス」といった言葉を除外条件に入れてしまうケースです。前の章でも触れましたが、これは高い確率で事故になります。

「営業時間を教えてください」という問い合わせが消える、取引先の営業担当者からの連絡が届かない、といったことが実際に起きます。しかも通知が飛ばないので、こちらは届いていないことに気づきません。相手から電話で「メールしたのですが」と言われて初めて分かります。

防ぎ方は2つです。

  • 1語だけでブロックしない:2語以上そろったときだけ落とす
  • 落とした送信を保存する:必ずどこかに残して、週1回は目を通す

失敗4 テーマのfunctions.phpを直接編集して、更新で消えた

ステップ4のようなコードを、有料テーマや配布テーマの functions.php にそのまま書き足すケースです。テーマを更新するとファイルが差し替わり、書き加えたコードが残らないことがあります。WordPress公式も、テーマのファイルを直接編集せず子テーマを使う方法をWordPress「子テーマ」のドキュメントで案内しています。

厄介なのは、消えたことに気づかないまま「最近また迷惑メールが増えた」と感じる点です。原因はスパムの増加ではなく、対策が外れているだけです。

防ぎ方は、子テーマの functions.php に書くか、コードをまとめた小さなプラグインとして作ることです。どちらの方法も難しくはありませんが、自信がなければ制作会社に「更新で消えない場所に置いてほしい」と伝えてください。この一言だけで通じます。

この章の結論です。4つの失敗はどれも「気づけない」という共通点があります。ブロックした送信を必ず記録に残し、週1回は落としたものを見返す運用にしておけば、全部が早期に発見できます。

ゼロにはならない。どこで手を止めるかの判断

率直にお伝えすると、問い合わせフォームがある限り、迷惑な連絡はゼロになりません。人が手で送っている以上、本物のお客さまと同じ経路を通ってくるからです。ここを目指し始めると、対策のコストの方が高くなります。

件数で決める、手をかける範囲の目安

どこまでやるかは、届いている件数で決めるのが現実的です。条件を付けた判断軸として、次のように考えてください。

1日の迷惑な連絡やることやらなくていいこと
3件以下件名に用件を入れる、ラベルを付ける。ここまでで十分コードの追加、AIの導入
4〜15件ステップ2〜5を全部。ハニーポットと文字数の判定まで有料の判定サービス、WAFの追加契約
16件以上上に加えて、AIによる分類と、サーバー側の制限を検討フォームの廃止

1日3件以下でコードを書き始めるのは、正直なところ割に合いません。わずかな確認時間のために、テーマの更新で消えるリスクと誤判定のリスクを抱えることになります。件名タグとラベルだけで止めておく判断も、立派な選択です。

見落とされがちなコスト。誰がその設定を持ち続けるか

もう1つ、制作会社に依頼するときに見落とされやすい点があります。フォームの改修が、月額の保守契約に含まれているかどうかです。

保守契約の範囲は会社ごとに違います。WordPress本体とプラグインの更新、バックアップ、障害対応までを含む契約が多い一方で、フォームの条件を足す作業がどちらに入るかは契約書を見ないと分かりません。自社の契約書を開いて、含まれていなければ最初に確認しておいてください。「迷惑メールが増えたので条件を1つ足したい」というたびに見積もりを待つ形だと、対応が止まります。

あわせて決めておきたいのが、reCAPTCHAなどの外部サービスのアカウントを誰が持つかです。制作会社のアカウントだけで登録されていると、担当者が変わったときに管理画面に入れず、キーの確認や再発行を自社だけでは進められません。自社のGoogleアカウントで登録してもらうか、少なくとも自社のアカウントも管理画面に入れる状態にしておいてください。これは契約前に言えば、まず断られません。

なお、AIに任せる範囲と人が判断する範囲の線引きについては、この記事では「分類はAI、削除は人」とだけ決めておけば十分です。運用ルールの作り方そのものは、別のテーマとして更新体制の作り方と担当・頻度の決め方で解説しています。

この章の結論です。1日3件以下なら件名タグとラベルで止め、それ以上ならコードまで進む。そして依頼する場合は、保守契約の範囲と外部サービスのアカウント名義を先に確認してください。

よくある質問

営業メールに「今後は送らないでください」と返信すれば止まりますか

返信しないことをおすすめします。面識のない相手からの広告宣伝メールへの対応については、総務省の特定電子メール法のページで示されている考え方を確認してください。断りたい場合は、返信ではなく自社サイトに広告宣伝メールを断る旨を明記する方が確実です。

迷惑メールが急に増えたとき、問い合わせフォームを一時的に閉じてもいいですか

閉じるのはおすすめしません。本物の問い合わせも同時に止まりますし、閉じている間の機会損失は数えられないからです。急増したときは、フォームを閉じるのではなく本文の文字数の下限を一時的に上げる、通知メールの宛先をラベル付きの箱に変える、といった対処にしてください。

送ってきた会社のメールアドレスを1件ずつ受信拒否していけば減りますか

手間のわりに効きにくい方法です。同じ相手が別のアドレスやドメインから送ってくると、登録した条件は素通りします。1件ずつ登録する時間の方がもったいないので、アドレスではなく送信内容の条件(文字数やキーワードの組み合わせ)で判定してください。

営業・提案専用のフォームを別に作ると、確認する場所が2つに増えて面倒になりませんか

フォーム自体を2つ作る必要はありません。1つのフォームの中に「用件」の選択肢を足して、通知メールの件名に反映させれば同じ効果が得られます。フォームを分けると入口が増えて管理も表示も複雑になるので、まずは選択肢を足す方法から試してください。

採用の応募や取材の依頼まで、営業と間違えて弾いてしまわないですか

その危険はあります。採用の応募は本文が短くなりがちで、文字数の下限に引っかかりやすいためです。用件の選択肢に「採用・取材・その他」を必ず入れておき、それが選ばれた送信には文字数の判定をかけない、という形にすれば防げます。

まず今日の1つから始めてください

今日すぐできるのは、自社の問い合わせフォームに自分でテスト送信を1件送ってみることです。本文を20字だけにして送り、それが通知メールとして届いてしまうなら、いまのフォームは売り込みの定型文をそのまま通しています。まずはそこの確認から始めてください。そのうえで、そもそも問い合わせ自体が少ないと感じている方は、問い合わせが来ないホームページの原因と改善手順を先に読むと、優先順位が決めやすくなります。

ここまで読んで、コードを触るのは自社では難しそうだと感じた方や、保守契約にどこまで含まれているか分からないという方は、一度お話を聞かせてください。フォーム改修まで行うホームページ制作・運用では、いま届いている迷惑メールの中身を一緒に見ながら、どこから手をつけるかを決めるところからご相談いただけます。いまの状況をうかがうだけでも大丈夫です。

無料相談

現状をお聞きし、優先順位を一緒に整理します。

予約する →

Read Next / 次に読む

AI業務効率化を個人で始める手順|部署に広げる進め方
AX

AI業務効率化を個人で始める手順|部署に広げる進め方

2026.09.01 / 約 18 分

関連記事

ホームページ制作・運用

問い合わせフォームは5項目に絞る|BtoBの入力設計と問い直し

更新
ホームページ制作・運用

WordPressの操作マニュアルの作り方|社内手順書と動画の進め方

更新
ホームページ制作・運用

ホームページリニューアル中の表示|メンテナンス告知と503設定

更新
ホームページ制作・運用

Webデザインの基本|成果につながる設計5ステップと失敗回避

更新
ホームページ制作・運用

ホームページで集客できない原因3つと改善手順|福岡

更新
ホームページ制作・運用

パンくずリスト設置の4手順|表示崩れとJSON-LDエラー対処

更新
ホームページ制作・運用

AIで作ったサイトがSEOで評価される|人が足すE-E-A-T3要素

更新
ホームページ制作・運用

Googleサーチコンソール活用術|検索流入を増やす手順

更新
ホームページ制作・運用

LPと会社案内サイトの使い分け|B2B成約を増やす設計と判断軸

更新
ホームページ制作・運用

BtoBサイトの素材選び|既視感を脱し自社らしさを出す進め方

更新
ホームページ制作・運用

ホームページリニューアル費用の勘定科目|資産計上の判断基準

更新
ホームページ制作・運用

BtoBサイトのダークモード対応とパーソナライズ|手順と失敗例

更新