フォームルール
対象プラン: ビジネスプラン
Formspree では、「トリガー」と呼ばれる特定の条件に基づいて、フォーム送信の配信を制御したり、特別なアクションを実行したりするカスタムルールを設定できます。ルールは以下の用途に使用できます:
- ドロップダウンやチェックボックスなどのフォームデータの値に基づいて異なる宛先にメールを送信する
- 複数の宛先にメールを送信する
- コンテンツや独自のハニーポットフィールドの存在に基づいて送信をスパムとしてマークする
- フォーム送信後に条件付きで別の「サンキュー」ページへリダイレクトする
以下に始め方を説明します:
最初のルールを追加する
デフォルトでは、送信内容はフォームのターゲットメールアドレスに送信されます。ただし:
ルールを作成すると、フォームのターゲットメールアドレスは無視され、代わりにルールが通知の配信を決定します。
まず、常にトリガーされるデフォルトのルールを追加することをお勧めします。デフォルトのルールは以下の手順で追加できます:
-
「ルール」タブをクリックし、「ルールを追加」をクリックします:

-
「Do」列を「Send Email」に設定し、確認済みアドレスから宛先メールアドレスを選択します。次に「保存」をクリックします。条件は「Always」のままにして、新しい送信が受信されたときに常にこのルールがトリガーされるようにします。

この時点で、新しい送信が受信されると、ターゲットメールアドレスに通知メールが送信されます。これは Formspree フォームのデフォルト機能と同様です。
フォームドロップダウンを使用したメールのルーティング
セレクト入力を持つフォームがあり、訪問者がいくつかの異なるオプションから選択できる場合を考えてみましょう。例えば、訪問者が「家庭用品」または「電子機器」部門にフィードバックを送信できるとします。このようなフォームは以下のようになります:

これを実現するフォームの HTML は以下のとおりです:
<h3>Please leave your feedback below:</h3>
<form action="https://formspree.io/f/{form_id}" method="POST">
<label>Department:</label>
<select name="department" required>
<option value="housewares">Housewares</option>
<option value="electronics">Electronics</option>
</select>
<label>Feedback:</label>
<textarea name="message"></textarea>
<label>Your Name:</label>
<input name="name" type="text" required/>
<label>Your Email: </label>
<input name="email" type="email" required/>
<button>submit</button>
</form>
上でハイライトされたセレクト文は、ユーザーが「Housewares」または「Electronics」を選択できるドロップダウンメニューを作成します。
ドロップダウンルーティングルールの追加
ドロップダウン入力フィールドからの訪問者の選択に基づいて、適切な部門に通知を送信したい場合は、以下の手順に従います:
-
まず、関連する入力フィールドを含めてフォームを一度送信します。この場合、「department」セレクト入力を含めてフォームを送信する必要があります。これにより Formspree が新しいフィールドを認識し、ルール作成時に使用できるようになります。
-
入力フィールドのオプションの一つに対する新しいルールを作成します。まず、ターゲットメールを適切な受信者(例:「housewares@example.com」)に設定します。次に、条件として「When a field contains a keyword」を選択します。次に、マッチをテストする入力フィールドを選択します。この場合は「department」フィールドです。次に、セレクト入力から適切な値を入力します。この場合は「housewares」を使用します。最後に「保存」をクリックします。

この時点で、「department」フィールドに「housewares」という単語が含まれている場合、2番目のルールが一致します。ルールが一致すると、ターゲットメール「housewares@example.com」に通知が送信されます。
-
上記のルールと同様に、2番目のオプションのルールを作成します。この場合、「department」フィールドに「electronics」が含まれているときに「electronics@example.com」に通知を送信します。
この時点で、新しい送信が届くと、「department」フィールドに「housewares」または「electronics」という単語が含まれているかどうかによって、最初または2番目のルールのいずれかに一致します。これにより、「housewares@example.com」または「electronics@example.com」のどちらかに通知メールが送信されます。
チェックボックスを使用したメールのルーティング
チェックボックスを含むフォームがあり、チェックボックスがオンになっている場合にのみメール通知を送信したい場合はどうでしょうか?例えば、フォームに次のようなチェックボックスがあるとします:

上記のチェックボックスのフォーム HTML は以下のとおりです:
<label>
<input type="checkbox" name="urgent" value="yes">
My problem is urgent!
</label>
チェックボックスルーティングルールの追加
チェックボックスがオンになっている場合にのみメール通知を送信するには、「When a field is not empty」条件を使用してルールを追加します。次に、チェックボックスに適切なフィールドを選択します。例:

複数の宛先への送信
複数の宛先にメールを送信したい場合は、「Always」条件を使用して複数のルールを追加することで実現できます。以下は「electronics@example.com」と「housewares@example.com」の両方に通知メールを送信するフォームの例です:

カスタムハニーポットフィールドによるスパムの捕捉
ハニーポットフィールドとは、スパマーだけが記入しそうな特別なフィールドです。スパマーはしばしばウェブページの HTML をスクレイピングして検出されたフォームを自動的に記入するボットを使用します。しかし、フォームがレンダリングされる際、JavaScript と CSS を使用して人間の訪問者にはフィールドを非表示にできますが、ボットには非表示にできません。そのようなフィールドが記入されたフォームが送信された場合、自信を持ってスパムとして分類できます。
Formspree では _gotcha フィールドを使用してハニーポットを実装できます。しかし、一部のスパマーはこの特別なフィールドを認識しており、ボットのロジックに組み込んでいます。
どのスパマーも予測できないハニーポットを作成するには、ルールを使用して独自のカスタムハニーポットフィールドを作成できます。まず、フォームにフィールドを追加し、人間の訪問者が記入しないように非表示にします。例えば、以下のフォーム入力を使用できます。
<input type="text" name="myhoneypot" class="myclass">
「myhoneypot」の代わりに独自のユニークな名前を選んでください。 すべてのフォームで異なるハニーポットフィールドを使用することで、スパマーがどのフィールドがハニーポットかを予測できなくなります。
独自のカスタム CSS を使用してフィールドを非表示にします。 繰り返しになりますが、ハニーポットフィールドを非表示にするための標準化されたアプローチを使用しないことが重要です。これにより、スパマーが検出して回避することが難しくなります。例として、上記のフィールドを非表示にする CSS を示します:
.myclass { opacity: 0; position: absolute; }
最後に、ハニーポットフィールドが記入されたときにフィールドをスパムとしてタグ付けするルールを追加できます。「Do」列で「Tag」を選択し、「Spam」を選択して送信をスパムとしてタグ付けします。次に、トリガーとして「When a field is not empty」を選択し、ハニーポットフィールド名を選択します。

カスタムスパムルールの追加
ほとんどのスパムは Formspree の自動フィルターによって検出されます。ただし、スパムを受信していてスパムコンテンツのパターンを検出できる場合は、独自のカスタムスパムルールを作成することもできます。これらのルールは、大量のスパムを一時的に受信していて即時対応が必要な場合に特に役立ちます。
カスタムスパムルールを作成するには、「Do」列の「Tag」アクションを使用して「Spam」を選択し、メッセージをスパムとしてフラグ立てを開始します。次に、トリガーとして「When a field contains a keyword」を選択し、スパム的なコンテンツを含むフィールドを選択します。最後に、スパムメッセージに頻繁に現れるキーワードを入力します。

大量のスパムを継続的に受信していて、自動フィルターが自動的に分類できない場合は、サポートリクエストでお問い合わせください。
フォームデータに基づく条件付きリダイレクト
訪問者がフォームを完了したとき、フォームデータによって異なる「サンキュー」メッセージを提供したい場合があります。例えば、訪問者がフォローアップミーティングをリクエストした場合、カレンダー予約ページにリダイレクトしたいかもしれません。
これを実現するには、「Do」列の「Redirect」オプションを選択し、顧客を誘導したいページの完全なURLを入力します。次に、上記のチェックボックスまたはドロップダウンセクションと同様に、チェックボックスまたはドロップダウン入力を使用してトリガーを作成します。これにより、ユーザーがフォームを記入すると、指定したページに条件付きでリダイレクトされます。

「Always」条件とともに「Redirect」アクションを使用して、Formspree のデフォルトのリダイレクト動作を上書きすることもできます。
その他の条件によるトリガー
ここまで、「Always」、「When a field contains a keyword」、「When a field is not empty」条件を使用したルーティングルールの追加について説明しました。
後者の2つの条件タイプには、否定条件「When a field is empty」と「When a field doesn’t contain a keyword」もあります。
以下にすべての条件と、それを使用したいシナリオの例を示します:
- Always:すべての送信に対してメール通知を送信したい場合。複数の受信者を追加するのに便利です。
- When a field is not empty:チェックボックスまたはテキスト入力がある場合。特定の訪問者にのみフォローアップしたい場合に便利です。
- When a field is empty:オプトアウトチェックボックスに便利です。例えば、「連絡しないでください」にチェックを入れない訪問者にのみ通知を送信したい場合があります。それ以外の場合は、フィードバックをアーカイブに直接送り、後でエクスポートします。
- When a field contains a keyword:ドロップダウンまたはテキスト入力がある場合。値に基づいて異なる受信者にルーティングするのに便利です。特定のキーワードが存在するときに通知を送信するためにも使用できます。例えば、メッセージフィールドに「refund」という単語が含まれている場合に請求部門に通知を送りたい場合があります。
- When a field doesn’t contain a keyword:特定のメッセージがスパムとしてフラグ立てされないようにするカスタムスパムルールに使用できます。