Contact Form 7 から営業メールが止まらない本当の理由と、対処の優先順位
WordPress + Contact Form 7 のフォームに営業メールが届いて困っているサイト運営者向けに、よくある対処 (reCAPTCHA / Akismet / NG ワード) の限界と、AI 仕分けが効くケースを整理します。
WordPress + Contact Form 7 の構成で会社サイトを運営していると、ある時期から 問い合わせフォームに届くメールの半分以上が「営業」になる 現象に必ず突き当たります。SEO 改善の提案、人材紹介、業務委託の打診、海外からの英文 DM など、内容はバラバラですが、共通しているのは「本物のお問い合わせを邪魔する」という一点です。
この記事では、よくある対処手段がなぜ効きづらいのか、そして AI による文面の仕分けが残る理由を整理します。
まず確認: 営業メールが「迷惑メール」と違う 2 つの特徴
スパムフィルタや reCAPTCHA で防ぎたいのは、自動投稿された大量配信スパム (アダルト、無関係な URL の羅列、文字化けなど) です。一方、フォーム経由で届く営業メールには次の特徴があります。
- 人が手入力で送っている。営業担当が会社の問い合わせフォーム一覧を巡回し、テンプレ文面を貼って送信ボタンを押しています。
- 文面はそれっぽく整っている。「貴社の事業に貢献できる提案がございます」「先日サイトを拝見しました」などの定型句が並び、機械的には判別しづらい。
つまり、スパム対策の技術 (フィルタリング、ブラックリスト、CAPTCHA) は営業メールには効かない構造になっています。仕組みの守備範囲が違うのです。
よく試される対処と、その限界
reCAPTCHA / hCaptcha
最初に試される定番。Bot 対策としては有効ですが、上で書いた通り営業メールは人間が送ってくるので、reCAPTCHA は素通りで届きます。「v3 でも止まらない」と感じるのは、Bot を止めていないからではなく、止めるべき対象が違うからです。
Akismet
Akismet は WordPress 公式のコメントスパム対策プラグインで、Contact Form 7 とも連携できます。これは 大規模配信スパムの URL / 文体パターンを学習 しているので、海外の無差別 DM などには効くことがあります。
ただし、日本企業からの真面目な営業メール (= まともな会社名と署名付き、リンクは自社サイト 1 本) は Akismet の学習対象から外れているので、検知できません。Akismet の英語圏向け学習データに、日本の SaaS 営業や人材紹介の文面はそもそも入っていないのです。
NG ワード設定
「資料DL」「LP制作」「SEO対策」など、営業メールに出やすい単語を NG リストにする運用です。一見シンプルで効きそうに見えますが、3 つの問題があります。
- 本物の問い合わせも誤検知する。たとえば「弊社の LP 制作を御社に依頼したい」という真の問い合わせを弾いてしまう。
- 言い回しがすぐに変わる。営業側もテンプレを少しずつ変えるので、メンテナンスし続けないと数か月で意味が薄れる。
- 判定理由が見えない。なぜ弾かれたのか管理者に分からないので、誤判定の検証が不可能になる。
「会社名」必須化 / 法人ドメインしか受けない
「会社名」フィールドを必須にしても、営業はちゃんと自社名を書きます (むしろ得意)。Gmail / Yahoo メールを弾くのは効果が出ることもありますが、個人事業主や自営業者からの正規問い合わせも一緒に弾くので、B2C 寄りのサイトでは推奨できません。
なぜ「人間が読めば分かる」のに自動化が難しいのか
ここまでの限界を眺めると、共通しているのは「営業メールは表層では判別できない」という事実です。
実際の判別は、文面のキーワードではなく次のような 文脈 で行われています:
- 「『先日御社のサイトを拝見しました』とあるが、URL が無く、何を見たのか具体性ゼロ」 → 営業
- 「自社サービス紹介の URL が本文中に挿し込まれている」 → 営業
- 「『〇〇の件で問い合わせさせてください』と具体的な機能名が出ている」 → 問い合わせ
- 「採用フォームではないのに『貴社採用ご担当者様』」 → 採用営業
人間がメールを開いて 5 秒で判断するのは、こういう 意味の組み合わせ を見ているからです。これを「単語の AND/OR」だけで再現するのは、構造的に無理があります。
AI による仕分けが効く理由
ここで言う AI とは、ChatGPT / Claude / Gemini のような 大規模言語モデル のことです。これらは「人間が読んだときに何を読み取れるか」を再現する用途で設計されているので、上の判別を自然にやってくれます。
たとえば送信内容を渡して「これは営業の打診か、製品への問い合わせか、信頼度も付けて分類してください」と依頼すれば、
カテゴリ: sales_solicitation
信頼度: 0.92
理由: 自社の SEO 改善サービスへの誘導が目的。
具体的な依頼内容が無く、文末に自社 URL の挿入あり。
のような構造化結果が返ってきます。これを使えば:
- 信頼度 0.85 以上の「営業」 → 別フォルダ振り分け or Slack 通知の対象外
- 「問い合わせ」 → 通常通り通知
- 信頼度が低い (= AI も悩んだ) ものだけ目視
という運用が組めます。「全部目視」から「たまに目視」に下がるだけでも、運営者の時間と精神衛生は大きく変わります。
副次的なメリット: GA4 のコンバージョン計測がクリーンになる
意外と見落とされがちですが、Contact Form 7 の送信完了イベントを GA4 で「コンバージョン」として登録している場合、営業メールも一律でコンバージョンに数えられています。
- 月のコンバージョン 30 件のうち、本物の問い合わせは 8 件
- → 数字上は「広告経由のコンバージョン率が改善している」ように見えるが、実は営業メールが増えただけ
- → 広告予算の判断を誤る
「営業」判定のものを GA4 に送らない / 別イベント名で送る、という処理を入れるだけで、マーケティング判断の前提が一段クリアになります。これは AI 仕分けが入って初めて成立する打ち手です。
対処の優先順位 (整理)
実務的な順番として、
- reCAPTCHA / Akismet は入れておく — Bot とスパムは 0 にしておく。営業対策とは別問題として処理する。
- NG ワードは「最終手段の保険」だけ — 明らかに有害な単語 (アダルト、明示的なフィッシング) のみ。営業対策に使い始めると誤判定が増える。
- 営業判定は AI に任せる — 「人間が読めば分かる」レイヤーは AI が一番得意な領域。判定結果をログに残し、信頼度の低いケースだけ目視。
- GA4 連携を見直す — 「コンバージョン = 全送信」から「コンバージョン = 問い合わせ判定」に切り替えると、計測が正しく戻る。
YomuForm はこの 3 番と 4 番をプラグイン 1 つで提供します。1 番と 2 番は既存の方法と組み合わせて運用してください。
まとめ
- 営業メールは「人間が手入力で送る」ため、Bot 対策やキーワードフィルタでは止まらない。
- 判別は単語ではなく 文脈 で行われている。これを LLM に任せると、人間並みの仕分けが自動化できる。
- GA4 のコンバージョン計測も、AI 仕分けが入れば「本物の問い合わせ数」にリセットできる。
「うちのフォームも営業ばかりだ」と感じている運営者は、まず YomuForm の無料プランで自社サイトの判定ログを 1 週間眺めてみてください。実際に届いているメールの中身を見直すだけで、対処の方向性がはっきりします。