Skip to guide
form koi.Open workspace ↗

Recipient
routing.

One contact form can start a dozen different conversations. Routing uses the fields you already collect to notify the people best placed to reply.

1. Write a rule

  1. Add and verify your notification addresses under Recipients. A rule can only use verified people in your workspace.
  2. Open a form and choose Set up recipient routing.
  3. Add a rule, give it a helpful name, and enter the exact field name. For example: topic equals sales.
  4. Choose 1–5 recipients for that rule. They replace the form’s default recipients when it matches.
  5. Preview an example, turn on Use routing for new messages, and save.

Routing uses submitted text fields. Here is a dropdown you can add to your existing Form Koi form:

<label for="topic">What would you like to talk about?</label>
<select id="topic" name="topic" required>
  <option value="">Choose a topic</option>
  <option value="sales">Working together</option>
  <option value="support">Help with an existing order</option>
  <option value="other">Something else</option>
</select>

This snippet adds a field; keep your existing form action, submission handling and spam protection.

2. First match wins

Rules run from top to bottom. The first matching rule selects its recipients and stops evaluation. Move specific rules above broader ones. If nothing matches—or routing is paused—the form’s default recipients are used.

ConditionExample
Equalstopic equals sales also matches SALES .
Containsmessage contains invoice matches “Could you resend my invoice?”
Has a valuecompany matches any non-empty value. Missing fields and spaces alone do not match.

Field names are case-sensitive and must match the HTML name exactly. Values ignore letter case and surrounding spaces. Repeated fields match when any one of their values matches. JSON numbers and booleans are compared as text, just as they are stored with the submission.

You can save up to 10 rules with one condition each. File contents, regular expressions and custom code are not supported. Keep the honeypot and other reserved form controls separate from routing fields.

A routing rule is not an identity check.

Visitors can choose or change submitted field values. Use rules to direct notifications, never to grant access, approve a payment or assume a visitor belongs to a particular company.

3. Test a rule

In the editor, enter example fields as JSON and choose Preview routing. The result shows the first matching rule and its verified recipients, or explains why the default list applies.

{
  "topic": "sales",
  "message": "We'd like to work together."
}

Preview uses your current unsaved settings, including whether routing is enabled. It does not send email, store a submission or change the saved configuration. Try a matching value, an unrelated value and a missing field before saving.

Changes take effect after you save. If someone else saved rules while you were editing, Form Koi asks you to reload instead of silently overwriting their work. Discard changes and reload loads the latest saved configuration.

4. Limits and behaviour

Form Koi records the selected rule, recipients and notification subject with each new message. Open a message’s email notifications to see that decision and the delivery results. “Selected” does not mean the email was delivered; each notification has its own status and attempt history.

Spam stays held without sending email. Restoring it uses the recipients and subject selected when it arrived. Editing, reordering or pausing rules does not reroute earlier messages, and retrying a notification does not select new recipients. Bounce and complaint suppression still applies.

Messages received before routing history was introduced may not show a saved decision. Previously accepted messages keep their existing notifications. An older held message without notifications chooses its recipients once when first restored.

If a selected address is no longer eligible, Form Koi does not substitute a different rule’s recipients. Check your verified-recipient settings and delivery status. Keep default recipients current so unmatched messages have a useful destination.

Need to hand off to another application?

Read the webhook guide ↗