Studio.Designで作成したウェブサイトに設置するフォームに、営業目的のコピペ送信が大量に届いて困っていませんか?本記事では、簡単なJavaScriptを1つ追加するだけで、フォーム営業のほとんどを自動的にシャットアウトする方法をご紹介します。
フォーム営業は”コピペ”が命
営業メールの多くは、事前に用意されたテンプレート文をそのままフォームに「貼り付ける」ことで送られています。つまり、フォームにテキストを”入力する”のではなく”貼り付けて”いるのです。これを逆手に取り、テキストエリアでの貼り付けを禁止すれば、大半の営業メッセージは送信できなくなります。
貼り付けを無効化するJavaScript

以下のコードを、Studioサイトのカスタムコード(フッター)に追加してください。
<script>
document.addEventListener("paste", function(event) {
const el = event.target;
if (el && el.matches && el.matches('textarea[name="Message"]')) {
event.preventDefault();
alert("貼り付けはご利用いただけません。直接ご入力ください。");
}
}, true);
</script>このスクリプトは、ページ全体で発生する「貼り付け」イベントを監視し、<textarea name="Message"> に対して貼り付けが行われたときだけ、それを無効化します。さらに alert() を使って、利用者に貼り付け制限を通知します。
実際の効果は?
このシンプルな対策を施しただけで、弊社では月に20件以上届いていた営業フォーム投稿がゼロになりました。
本気でコンタクトを取りたい方であれば、手入力でメッセージを書くはずです。コピー&ペーストができないというだけで離脱するような相手からの問い合わせは、そもそも不要です。
そう思っていたがAIエージェントが出てきて営業メールを止めることができなくなった。
くやしいので更なる対策を。
入力監視をして弾く
目には目をAIにはAIを言いたいところだけど、フロントエンドでしか対策できないStudioでは送信後の処理を変えることはできない。ということでフォームにhttp://またはhttps://を入力された時点で入力内容をリセットすることにした。
<script>
document.addEventListener("input", function(event) {
const el = event.target;
if (!el || !el.matches || !el.matches('textarea[name="Message"]')) {
return;
}
if (/https?:\/\//i.test(el.value)) {
el.value = el.value.replace(/https?:\/\/\S*/gi, "");
alert("URLを含む内容は送信できません。URLを削除して入力してください。");
}
}, true);
document.addEventListener("submit", function(event) {
const form = event.target;
const textarea = form.querySelector && form.querySelector('textarea[name="Message"]');
if (!textarea) return;
if (/https?:\/\//i.test(textarea.value)) {
event.preventDefault();
event.stopPropagation();
alert("URLを含む内容は送信できません。URLを削除してから送信してください。");
}
}, true);
</script>実際に入力してみるとhttp:またはhttps:まで入力するとリセットされるのを確認できる。
しかし、Claude in Chrome でフォーム入力をやらせてみたところ、1回目は弾けたがしばらくその場で待って2回目を入力されると通ってしまう。
そこで異常な速度で長文を入力して送信まで到達した時に偽のサンクスページに飛ばす処理を追加した。
<script>
(function() {
const TEXTAREA_SELECTOR = 'textarea[name="Message"]';
const THANKS_URL = "任意のURL";
const SPEED_LIMIT_MS = 3000;
const MIN_LENGTH = 80;
const state = new WeakMap();
const blockedForms = new WeakSet();
function fakeSuccess(form) {
blockedForms.add(form);
const buttons = form.querySelectorAll('button[type="submit"], input[type="submit"]');
buttons.forEach(function(button) {
button.disabled = true;
button.style.opacity = "0.5";
button.style.pointerEvents = "none";
});
window.location.href = THANKS_URL;
}
document.addEventListener("focusin", function(event) {
const textarea = event.target;
if (!textarea || !textarea.matches || !textarea.matches(TEXTAREA_SELECTOR)) {
return;
}
state.set(textarea, {
startedAt: Date.now(),
inputCount: 0
});
}, true);
document.addEventListener("input", function(event) {
const textarea = event.target;
if (!textarea || !textarea.matches || !textarea.matches(TEXTAREA_SELECTOR)) {
return;
}
const form = textarea.closest("form");
if (!form) return;
const data = state.get(textarea) || {
startedAt: Date.now(),
inputCount: 0
};
data.inputCount++;
state.set(textarea, data);
const elapsed = Date.now() - data.startedAt;
const length = textarea.value.length;
if (length >= MIN_LENGTH && elapsed < SPEED_LIMIT_MS) {
fakeSuccess(form);
}
}, true);
document.addEventListener("submit", function(event) {
const form = event.target;
if (!form || !form.querySelector || !form.querySelector(TEXTAREA_SELECTOR)) {
return;
}
if (blockedForms.has(form)) {
event.preventDefault();
event.stopPropagation();
window.location.href = THANKS_URL;
}
}, true);
})();
</script>あわよくばの願いでサンクスページをpaypal.meの決済URLにしてみたけどClaudeではアクセスできないようだ。笑
利便性とのトレードオフもあるけれど
もちろん、すべてが完璧というわけではありません。実際、初手から長文で丁寧なお問い合わせをくださる方も多くいらっしゃいます。そうした方にとって、コピペができないことは少し不便かもしれません。
ただ、それでも過去にはコピペせずに一生懸命長文を入力してくださったお客様もいたという事実があり、フォームの不便さを笑い話として共有できた場面もありました。
あるお客様からは「そんな対策してるの珍しいですね」と直接言われたこともあります。そういった小さなエピソードが、むしろ信頼や会話のきっかけになることもあると感じています。
「フォーム営業を減らしたいけど、reCAPTCHAを入れるのも面倒だし、ユーザー体験を悪くしたくない」そんな方にとって、ペースト無効化は極めて手軽で効果的な選択肢です。Studioでホームページを運用している方は、ぜひお試しください。

