HyperFormは、フォームの送信を受け付けるたびにGoogle reCAPTCHAでスパムらしさを判定し、結果を「スパムスコア」として記録しています。スコアが低い(=スパムの可能性が高い)送信は、通知メールの送信を自動で止めることができます。このページでは、スコアの意味と、判定の基準となる閾値の決め方を説明します。
スパムスコアとは
スパムスコアは0〜1の数値で、スパムの可能性が高いほど0に近づき、低いほど1に近づきます。
各問い合わせのスコアは、問い合わせの詳細画面の「スパムスコア」欄で確認できます。
また、reCAPTCHAの判定以外に、以下の場合はHyperFormが決まった値のスコアを設定します。スコアの値から「なぜこの判定になったのか」を読み取ることができます。
0.8888— APIモードでの送信(APIモードではreCAPTCHAが動作しないため、固定値になります)0.1111— サーバーサイドの必須項目バリデーションで必須項目の不足を検出した0.1122— ハニーポットに入力があった(botの疑い)0.1133— ブロック対象(email)に一致した(後述)0.1144— ブロック対象(全文)に一致した(後述)0— reCAPTCHAトークンの検証に失敗した
これらは「確実に検出できたもの」なので、すべて 0.15 未満に収めています。閾値を 0.15 以上にしておけば、まとめて通知メールを止められます。
ただし、reCAPTCHAが返すスコアは 0.1 刻み(0.0〜1.0)なので、0.15 未満の帯にはreCAPTCHAが「リスクが高い」と評価した 0.0・0.1 も含まれます。閾値を 0.15 にすると、上記の検出に加えてこれらも止まります。

スパム判定閾値のしくみ
フォームの「セキュリティ」画面の「reCAPTCHAスパム判定閾値」で、通知メールを止める基準を設定できます。デフォルトは 0.65 です。
スパムスコアが閾値未満の場合、通知メール(自動返信・管理者向け)は送信されません。閾値とちょうど同じスコアの場合は送信されます。

外部連携の閾値は別に設定する
上記の閾値が適用されるのは通知メールだけです。外部連携に対しては、「外部連携」画面の「Webhookへの送信に必要なreCAPTCHAスコア」「Slackへの送信に必要なreCAPTCHAスコア」「スプレッドシートへの送信に必要なreCAPTCHAスコア」で連携ごとに基準を設定します。スコアがこの値未満の送信は、その連携への通知・書き込みがスキップされます。

閾値の決め方の目安
- まずはデフォルトの
0.65のままで運用を始めることをおすすめします。 - スパムメールがすり抜けてくる場合は、閾値を少し上げます(例:
0.7)。 - 正当な問い合わせの通知メールが止まってしまう場合は、閾値を少し下げます(例:
0.5)。 0にすると、スコアによる判定を行わず、すべての問い合わせで通知メールを送信します。
スパムと誤判定されたときは
正当な問い合わせが閾値未満と判定された場合でも、データは保存されています。問い合わせの詳細画面の「メールを再送」から、スコアにかかわらず通知メールを送信できます。
また、フォームの「基本設定」画面の「送信が不正と判断された場合のリダイレクト先URL」を設定すると、不正と判断された訪問者を専用のページへ誘導できます。必須項目の不足とハニーポットの検出はこの閾値と関係なく常にリダイレクトされ、reCAPTCHAのスコアによる判定だけが閾値に従います。詳しくはフォーム送信後のリダイレクト設定をご覧ください。
ブロック対象(email・全文)による判定
reCAPTCHAのスコアとは別に、特定の文字列を含む送信を強制的にスパム判定にできます。「セキュリティ」画面の以下の2つで設定します(Liteプラン以上でご利用いただけます)。
- ブロック対象(email) — 指定した文字列が送信者のメールアドレスに含まれる場合にスパム判定とします(スコアが
0.1133になります)。 - ブロック対象(全文) — 指定した文字列が送信内容のいずれかに含まれる場合にスパム判定とします(スコアが
0.1144になります)。
いずれも1行に1つ、改行区切りで複数指定でき、部分一致で判定されます。たとえば @spam.example.com と指定すると、そのドメインのアドレスからの送信をまとめてスパム判定にできます。