Email routing
Email routing lets one form notify different people based on what the visitor
picked. You configure named aliases in the dashboard, such as sales,
support, or billing, and each alias gets its own To, CC, and BCC
recipients.
When a submission includes a matching hidden route value, Form Plume sends the notification to that alias's recipients. If there is no match, the form uses the default notification recipients instead.
When to use routing aliases
Use routing aliases when one public form feeds more than one team:
- A contact form with "Sales" and "Support" choices
- A demo request form that routes enterprise leads to a senior rep
- A department form that sends billing, legal, and partnership messages to different inboxes
- A campaign form where each landing page should notify a different owner
If you want a route to notify multiple people, add all of them to that alias's To, CC, or BCC list. There is no extra code for that part.
1. Create aliases in the dashboard
Open the form, go to Settings -> Email -> Routing aliases, then turn it on.
For each alias:
| Field | What it does |
|---|---|
| Alias | The route name your form sends, for example sales |
| To | Primary notification recipients for this route |
| CC | Recipients copied on this route |
| BCC | Recipients blind-copied on this route |
Keep aliases simple: lowercase letters, numbers, underscores, and hyphens.
Examples: sales, support, enterprise_sales, billing-team.
2. Send the route from your form
Add a hidden field named _route or _formplume_route (see Special
fields). Its value must match one of the aliases
configured in the dashboard.
<form action="https://api.formplume.com/f/{public_slug}" method="POST">
<input type="hidden" name="_route" value="sales">
<label>
Email
<input type="email" name="email" required>
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<button type="submit">Send</button>
</form>_formplume_route works the same way:
<input type="hidden" name="_formplume_route" value="support">Routing from a select field
If the visitor chooses a department, keep the public select field separate from the hidden route field. Then set the hidden value before submit.
<form id="contact-form" action="https://api.formplume.com/f/{public_slug}" method="POST">
<input type="hidden" name="_route" id="form-route" value="sales">
<label>
Department
<select id="department" name="department">
<option value="sales">Sales</option>
<option value="support">Support</option>
<option value="billing">Billing</option>
</select>
</label>
<label>
Email
<input type="email" name="email" required>
</label>
<button type="submit">Send</button>
</form>
<script>
const department = document.querySelector("#department");
const route = document.querySelector("#form-route");
department.addEventListener("change", () => {
route.value = department.value;
});
</script>Route values only select aliases you already configured. A visitor cannot submit an arbitrary email address and make Form Plume notify that address.
Fallback behavior
Routing is intentionally forgiving:
- If
_routeis missing, the form uses the default notification recipients. - If
_formplume_routeis missing, the form uses the default notification recipients. - If the value does not match a configured alias, the form uses the default notification recipients.
- The route control field is not stored as a normal submission field.
This means you can roll routing out one landing page at a time without breaking the rest of the form.