【ChatGPT API × WordPress】問い合わせフォームに届く営業メールをAIで自動判別する機能
この記事のAI要約
お問い合わせフォームに届く営業メールの増加に伴い、従来のドメインブロックやキーワードブロックだけでは対応が難しい現状があります。そこでOpenAIのChatGPT APIを活用し、営業メールを自動で判別する機能を開発しました。この機能は送信自体を阻害せず、営業と判断されたメールは管理者に通知せずに処理を軽減。また、問い合わせ内容の要約やトーン、緊急度の判定も行うため、担当者の負担が大幅に減ります。営業メールの対応に課題を感じている方におすすめのソリューションです。
gpt-4.1-miniによる自動要約
以前に問い合わせフォームに届く営業メールを、ドメイン一致でブロックする方法を紹介させていただきました。
しかし、正直この実装後も営業目的のお問い合わせは減るどころか、むしろ増え続ける一方です。
本来はお客様からのお問い合わせに対応するためのお問い合わせフォームなのですが、売り込み営業の窓口になってしまっては本末転倒です。
実際弊社のお客様からも、
- 営業目的の問い合わせメールに本当のお客様からの問い合わせが埋もれてしまう
- フォームの問い合わせチェックに多大な時間がかかり、業務に支障がでている
- 特定のキーワードでブロックをすると、本当の問い合わせまで妨げてしまう
など、様々なご相談をいただきます。
そこで今回はOpenAI API を使った「営業メール自動判定機能」を WordPress に実装し、営業目的のお問い合わせを100%遮断することに成功したので、同じ悩みを持つ担当者の方のためにご紹介させていただきます。
INDEX
営業メール自動判定機能
この機能の目的は、前回の機能のような遮断型ではなく、「自動判定によってお問い合わせ担当の負荷を減らすこと」です。機能設計もこの点を重視して下記のように定義しました。
コンセプトと目的
- お問い合わせ内容(文章)をAIが読み込んでスコアリング
- フォーム送信自体の阻害は行わない
- ただし、しきい値のスコアを超えたら管理者宛の通知をしない
- 同時に文章のトーンや緊急度の判定、お問い合わせ内容に対する判定理由も作成する
アーキテクチャ概要
ざっくりいうと 「フォーム用プラグインのメールの送信フローの途中に OpenAI をかませているだけ」 です。
外部サービスをゴリゴリつなぐというよりは、WordPress プラグインの拡張に近い構成になっています。
[ユーザー]
│ フォーム送信
▼
[フォーム用プラグイン]
│ 1. 送信データの保存
│ 2. カスタムメールタグ展開
▼
[AI判定用カスタムメールタグ]
│ - 保存された値を取得
│ - OpenAI Responses API を呼び出し
│ - 営業スコアや種別をJSONで受け取る
│ - 結果を各変数に差し込む
▼
[プラグインのメール送信フック]
│ - 営業スコアがしきい値を超えたら、
│ 管理者メール送信をスキップ
▼
[管理者]
│ - 通常のお問い合わせと判定されたものだけ受信
▼
[CRMやグループウェア](任意)
│ - Webhookのペイロードから同様の判定
│ - 営業目的のお問い合わせについては連携を行わない
設計のポイントとしては、
- 見た目上は通常のお問い合わせフォームと変わらない
- 自動返信メールも普通に送信される
- お問い合わせ内容はデータベースに保存される(誤判定対策)
- 受信可否のしきい値は変更できる
- 業種によって異なる部分はあるので、プロンプトは調整できる余地を残す
という点です。
実際の運用を考えると、誤判定によって本来のお問い合わせまで営業目的と判定されてしまうことが最も避けたい事態だと思いますので、その点には最大限の注意を払い、調整余地を残して機能化しました。
APIモデルと選定理由
今回の AI 判定で使用しているのは OpenAI「gpt-4.1-mini」です。
(※ OpenAI の Responses API を使用)
結論からいうと、精度とコストのバランスが最強だったので、このモデルを採用しました。
gpt-4.1-mini を選んだ理由
営業メール判定のタスクは AI にとって難易度が高くありません。
ですので、いろいろ試した中では高度な reasoning(判断力)より「そこそこの NLP」の方が向いている印象を受けました。
要するに、
- 営業っぽい単語が多いか
- 協業提案か
- トーンが前向きか中立か
- 緊急度を匂わせているか
など、文章分類(Text classification)なら十分対応できます。
コストが圧倒的に安い
営業目的のメール特有の長文を毎回高度な思考力で判定していると、それなりのコストがかかってしまいます。
今回、実際に弊社宛に届いた100通前後の営業メールでテストしましたが、
使用トークン総数:55,419
コスト:約 $0.23
という結果でした。
gpt-4.1-mini なら1 通あたり 1 円未満で処理できる計算になります。
Responses API と相性がよい
今回の仕組みでは、AI から返す形式を正確に揃える必要がありました。
| 営業スコア(score) | 0 〜 100でスコアリング。 数値が高いほど「営業目的度」が高い。 |
|---|---|
| 問い合わせ種別(inquiry_type) | normal / vendor / partner_candidate / complaint / other の5種類で判定。 |
| トーン(tone) | positive / neutral / negative の3種類で判定。 |
| 緊急度(urgency) | low / medium / high の3種類で判定。 |
| 理由(reason) | 判定理由(自然な日本語)。 |
この「形式が一定であること」がとても重要です。
Responses API(以前の Chat Completions API の後継)は、
- text.format = “json_schema”
- スキーマに一致しない出力はほぼ出ない
という仕組みで、間違った JSON を返さないのが強みです。
gpt-4.1-mini は Responses API の利用を前提として最適化されているため、営業判定 AI のように「フォーム → AI → 形式化した数値を返す」用途と非常に相性が良いという利点があります。
高速で軽い
小型モデルのメリットとして、
- レイテンシ(応答速度)が速い
- 送信者の UX(即時応答)を損なわない
が挙げられます。
特に今回の実装のように、送信ボタン押下 → AI 実行 → メール送信という流れでは、AI の応答が遅いと、送信者が 「送れてない?」と不安になる問題 が起きてしまいますよね。
gpt-4.1-mini は数百ms〜1秒以内で返してくるため、フォーム送信の体感速度をほぼ変えないという実運用面のメリットもあります。
プロンプト
これはお問い合わせを受け取る業種によって変わってくると思いますが、弊社(Web制作会社)では以下の内容に設定したら判定結果が安定しました。
あなたはWeb制作会社の問い合わせフォームに届いた内容を判定するアシスタントです。
次の観点で判定してください。
- score: 0〜100の営業度スコア(高いほど営業・売込みの可能性が高い)
- inquiry_type:
- normal: 通常の案件相談や質問
- vendor: 営業・売込み・サービス提案(Web制作、広告、集客、ツール導入など)
- partner_candidate: 協業・パートナーとして前向きに検討してよさそうな提案
- complaint: クレーム・不満・トラブル対応
- other: 上記に当てはまらないもの
- tone: positive / neutral / negative のいずれか(本文全体の印象)
- urgency: low / medium / high のいずれか(緊急度)
- reason: 50〜200文字程度の日本語の判定理由
そして WordPress 側では、
- スコア80以上の営業メール → 管理者通知メールを送らない
- vendor / partner_candidate → CRMやグループウェアへ連携しない
みたいな運用ルールを作ることができます。
実際に使ってみた
さすがにいきなり本番運用するわけにはいかないので、弊社宛に実際に届いた過去のお問い合わせ(フォーム送信値)から入念なテストを行ってみました。
ケース1:通常のお問い合わせ
| score | 20 |
|---|---|
| inquiry_type | normal |
| tone | positive |
| urgency | medium |
| reason | ウェブサイトリニューアルの案件相談であり、具体的な要件と予算提示があるため営業的要素はあるが、売込みやサービス提案の感触は薄い。要望が詳細で前向きな依頼内容であるためトーンはポジティブ。緊急度は中程度と判断した。 |
管理者宛メールのしきい値は80に仮設定していたので、こちらは問題なくメールが到達しました。
実際の見込みのお客様からのお問い合わせ内容でしたので、これが届かなければテスト失敗ですよね。
ケース2:営業目的のお問い合わせ
| score | 85 |
|---|---|
| inquiry_type | vendor |
| tone | positive |
| urgency | medium |
| reason | 自社サービスの提案と業務効率化に関する相談を目的とした営業メールであり、具体的なサービス内容と商談の提案が含まれているため営業度スコアは高めです。文面は礼儀正しく前向きで、緊急性は中程度と判断しました。 |
こちらはデータベースに保存されていたものの、メールは送信されず、きれいにテスト成功しました。
すべてのケースをここで紹介することはできませんが、こんな感じで100回近いテストを繰り返して、結果も安定していたので、本番に導入することができました。
開発後記
導入から2週間程度経ちますが、今までのところ誤検知はなく、正確に判定ができています。
お問い合わせ内容によっては営業目的であってもスコア75くらいで判定されるケースもありますので、導入にあたってはプロンプトとしきい値の調整が必須だと思いました。
今回は弊社で使用しているMW WP Form プラグインでの使用を想定して機能開発を行いましたが、クライアントワークでの使用を想定して、Contact Form 7 や Gravity Forms での検証も行っていきます。
どちらのプラグインも、
- フォーム送信直前の処理ができる
- AI 判定結果をメールに差し込める
- AI 判定の結果で「送信先を変更」できる
の各フックが用意されているので、問題なく同じ仕組みを作れるかと思います。
営業メールの対応にストレスを感じている担当者様、ぜひお気軽にご相談ください!