コーダー・デザイナーの外注営業メールは、お問い合わせフォームの確認画面で送る人に選ばせる
かつ
2026/09/17
「Webコーダーとして活動しております」「外部パートナーとしてお力添えできれば」。
制作会社のお問い合わせフォームには、こうした外注の売り込みが届きます。エールクエストのフォームにも、1通届きました。
前回、相互リンクの依頼をお問い合わせフォームの確認画面で断る仕組みを作りました。
お問い合わせフォームの確認画面で営業メールを断る|相互リンクの依頼を記事ネタにす...相互リンクの依頼や営業メールを、お問い合わせフォームの確認画面で先に断る方法。記事ネタにす...
今回は、その仕組みをコーダー・デザイナーの外注の売り込みにも広げました。カツプロのお問い合わせフォームと、公開準備中のエールクエストの新しいサイトのフォームに入れています。
ただ、相互リンクと同じやり方では困ることが1つありました。本物のお客さまのご依頼まで、営業扱いしてしまうおそれがあることです。この記事では、その対策も含めて、実際の画面と仕組みをそのまま載せます。
届いた1通を、分解してみる
まず、届いた売り込みメールがどういう形をしていたかを書きます。送った方が特定できる情報(名前・連絡先・ポートフォリオのURL・サイトの文章そのもの)は出しません。
形として目立ったのは、次の6つでした。
- 書き出しが「ご担当者様」「突然のご連絡失礼いたします」
- こちらのサイトのキャッチコピーを引用して、「深く共感いたしました」
- 見出しで区切られた章が7つ(連絡した理由/私のストーリー/スキル/意識していること/Web制作を始めた理由/制作実績/最後に)
- 「もし現在、〜などございましたら、少しでもお力添えできれば嬉しく思います」という段落が、同じ文面のまま2回出てくる
- ポートフォリオのURLと、見るためのIDとパスワードが、本文に3回書かれている
- 強みとして並ぶのは「修正依頼には2〜3時間以内に返信」「ガントチャートで進捗共有」「納期3日前に提出」
納期や進捗の速さを強みにする売り込みについては、以前こちらに詳しく書きました。
コーディングの営業メール7通を比較|納期の速さは、もう強みになりませんコーディング営業メール7通の納期を比較。16ページで1ヶ月半、6ページで3週間。実際はFigma支給...
ここで大事なのは中身の良し悪しではありません。売り込みのメールには、ふつうのご依頼にはまず出てこない言葉が、いくつも重なって入っているということです。「コーダーとして活動しております」「外部パートナー」「ポートフォリオ」。この重なりを、フォームで見分けに使います。
1語で決めず、「点数」で見分ける
相互リンクの依頼は、「相互リンク」という言葉が入っていれば、ほぼ間違いなく依頼です。だから1語で判定しています。
外注の売り込みは、そうはいきません。
- 「社内のリソースが足りないので、サイトの作り直しをお願いしたい」
- 「貴社の実績を拝見して、ぜひお願いしたい」
- 「イラストレーターのポートフォリオサイトを作ってほしい」
どれも本物のご依頼ですが、売り込みに出てくる言葉が混ざっています。1語で決めると、この方たちを営業扱いしてしまいます。
そこで、言葉ごとに点数を付けて、合計で判定することにしました。
| 種類 | 例 | 点数 |
|---|---|---|
| 売り込みにしか出にくい言葉 | 「コーダーとして活動しております」「外部パートナー」「外注先として」「ポートフォリオ」「実績は下記より」「営業ではありません」「Basic認証」 | 1つにつき2点 |
| 売り込みによく出るが、ふつうの問い合わせにも出る言葉 | 「ご担当者様」「突然のご連絡」「拝見させていただき」「お力添え」「進捗共有」「修正対応」「貴社」 | 1つにつき1点 |
合計が3点以上のときだけ、「外注の売り込みかもしれない」と扱います。2点の言葉が1つだけ、1点の言葉が2つだけでは反応しません。
作った判定を、例文で試しました(カツプロ調べ。例文は自分で作ったもので、届いたメールは伏せ字にして入れています)。
| 例文 | 点数 | 判定 |
|---|---|---|
| 届いた売り込みメール(伏せ字) | 17 | 売り込み |
| 「フリーランスのデザイナーとして活動…外注先として…ポートフォリオ」 | 8 | 売り込み |
| 「ご担当者様 リソースは足りていますか?コーディング代行…対応可能な枠」 | 7 | 売り込み |
| 「社内のリソースが足りないので、リニューアルをお願いしたい」 | 0 | ふつう |
| 「貴社の実績を拝見して、ぜひお願いしたい。修正対応は…」 | 2 | ふつう |
| 「ポートフォリオサイトを作ってほしい」 | 2 | ふつう |
| 「ログインできなくなりました」 | 0 | ふつう |
売り込み3通はすべて反応し、本物のご依頼4通はどれも反応しませんでした。
それでも、言葉で見分ける以上、間違いはゼロにできません。そこで次の工夫が要ります。
止めずに、送る人に選んでもらう
相互リンクの依頼のときは、確認画面にお断りを出し、「上記を了承して送信する」のボタン1つにしていました。
外注の売り込みのときは、ボタンを2つにしました。

※画面の名前・メールアドレス・本文は、説明用に入れた架空のものです。
黄色の枠に書いていることは、次の4つです。
- コーダー・デザイナーなどの外注のご提案や、営業を目的としたご連絡には、お返事していないこと
- いただいたご提案の内容は保存し、営業メールの傾向を紹介する記事の材料として、個人や会社が特定できない形で使う場合があること
- 制作のご依頼・ご相談なら、「制作のご依頼・ご相談として送信する」を選んでほしいこと
- 営業・ご提案に当たる内容は、どちらのボタンで送信された場合も、上記にご了承いただいたものとして扱うこと
見分けを間違えて、本物のお客さまにこの枠が出ても困りません。読んで「自分は依頼する側だ」と分かれば、青いボタンでそのまま送れます。送信を止めないので、取りこぼしが起きません。
スマホでは、ボタンが縦に並びます。

カツプロのフォームでも、同じ形です。

どちらを押したかで、扱いを変える
| 押したボタン | 保存 | 状態 | 運営への通知 | 完了画面 |
|---|---|---|---|---|
| 営業・ご提案として了承して送信する | する | 最初から「迷惑」 | しない | お返事はいたしません |
| 制作のご依頼・ご相談として送信する | する | ふつうのお問い合わせ | する(「売り込みの可能性あり」と一言つけて) | 折り返します |
営業として送られたものは、管理画面に「営業(外注の売り込み)」として残ります。通知が来ないので、読む手間もかかりません。

「ご依頼・ご相談」のほうを選んで送ってくる営業も、いると思います。その場合もふつうに届くので、こちらで読んで判断します。それでも、お断りの枠が表示された確認画面から送っているので、記事の材料に使う了承は取れています。
ロボットが送ってきたら、どうなるか
ここは前回と同じ仕組みです。
- 確認画面を出すときに、サーバーがその場限りの「合図」を発行して覚えておく
- 送信のときに合図を照らし合わせ、合わなければ保存しない(確認画面から30分以上たった送信も、同じ合図での2回目も受け付けない)
- 保存するのは、確認画面を出したときにサーバーが預かった内容
外注の売り込みに合わせて、1つだけ足しました。どちらのボタンを押したかが届いていない送信は、「営業」として扱います。ボタンを押さずにデータだけ送ってくるのは、人ではなくプログラムだからです。
エールクエストのサイトは Astro で作った静的なサイトなので、ここだけ素のPHPで受けています。流れは次のとおりです。
- 「入力内容を確認する」を押すと、入力をサーバーへ送る(
stage: "confirm") - サーバーが入力を確かめ、相互リンク/外注の売り込みを見分け、合図を発行する。入力はサーバーのセッションに預かる
- 画面は、返ってきた結果に合わせて枠とボタンを出し分ける
- 送信ボタンは、合図と押したボタンの種類だけを送る(
stage: "send")。中身は送り直さない
送信のところは、これだけです(エラーの文言など一部を省略しています)。
$draft = $_SESSION['contact_draft'] ?? null;
$token = (string)($in['token'] ?? '');
if (!is_array($draft) || $token === ''
|| !hash_equals((string)($draft['token'] ?? ''), $token)
|| time() - (int)($draft['at'] ?? 0) > 1800) {
unset($_SESSION['contact_draft']);
reply(409, ['ok' => false, 'expired' => true]);
}
unset($_SESSION['contact_draft']); // 二重送信させない
$data = $draft['data'];
$looksSales = (bool)($draft['sales'] ?? false);
// 「ご依頼・ご相談」を選んだときだけ、ふつうの問い合わせにする。値が無ければ営業
$sales = $looksSales && (string)($in['as'] ?? '') !== 'consult';
セッションの Cookie は、フォームのフォルダの中だけで使い、JavaScript からは読めず、よそのサイトからの送信には付かない設定(httponly・samesite=Strict)にしています。
エールクエストの確認用サイトで、実際に試した結果です。
- 確認画面を飛ばして送信だけを送る → 保存されず「確認画面の有効期限が切れたか、送信の手順が正しくありません」
- 確認画面を通して、ボタンの種類を付けずに送る → 「営業(外注の売り込み)」「迷惑」で保存され、通知は出ない
- 同じ合図でもう一度送る → 保存されない
試した記録は、確かめたあとに消しています。
送る側の人へ、ひとつだけ
この記事は、売り込みを送る人を責めるためのものではありません。ただ、届いたメールを読んで、ひとつだけ気になったことがあります。
ポートフォリオを見るためのIDとパスワードが、メール本文にそのまま3回書かれていました。
お問い合わせフォームから送った文面は、受け取った会社の管理画面やメールに残り、誰が読むか分かりません。見られたくないものに鍵をかけているのなら、その鍵を不特定の相手に配るのは、鍵をかけていないのとあまり変わりません。
見せたい実績は、鍵をかけずに公開できる形にしておくほうが、読む側にも親切です。
まとめ
- 外注の売り込みは、1語ではなく点数で見分ける。売り込みにしか出にくい言葉は2点、ふつうの問い合わせにも出る言葉は1点、合計3点以上で反応する
- 見分けたら、確認画面にお断りと「記事の材料に使う場合がある」を出し、ボタンを「営業・ご提案として送る」「ご依頼・ご相談として送る」の2つにする
- 送信を止めないので、見分けを間違えても本物のご依頼は取りこぼさない。どちらで送っても、枠を表示したうえでの送信になる
- 確認画面を通らない送信は受け付けず、ボタンの種類が無い送信は営業として扱う
同じ仕組みを自分のサイトのお問い合わせフォームに入れたい方は、カツプロのお問い合わせからご相談ください。
この記事の著者・監修
カツ
カツプロ運営者のカツです! AI・Web関連から、日常のことなど、私目線の回答も交えながらお伝えします!
この記事をシェア