How to route contact form submissions to the right person
An enquiry that sits unread in a shared inbox is worse than no form at all, because the sender thinks they've been heard. Routing fixes that: decide who owns replies, send each submission where that person already works, and keep a backstop for the ones that slip. Here's how to set that up for an Anticode site, from one person to a small team.
Start with ownership, not tools
Before choosing a destination, answer three questions in writing. Who replies to enquiries on a normal day? Who covers when they're away? How quickly should a reply go out? A sole trader's answer is "me, my partner covers, same working day". A small clinic's might be "reception, the practice manager covers, within two hours in opening times". The tools only carry out this decision; they can't make it.
Three routing patterns
| Pattern | How | Suits |
|---|---|---|
| Straight to one person | Email notices for the project, sent to the account owner | Sole traders and owners who answer everything |
| To a team channel | The Slack, Discord or Telegram connector | Small teams where whoever is free picks it up |
| Through your own rules | A webhook to Zapier, Make, n8n or your own endpoint, or a site function | Businesses that split enquiries by site, type or area |
Two details shape the choice. First, connectors are set per account or workspace, not per site: each enabled connector receives submissions from every site in it, each labelled with the site's name. If you run several sites, a single channel will mix them, so use a webhook and route by site name. Second, every submission is also saved in the dashboard, sealed at rest, so the dashboard is the complete record whatever else fails.
Setting up a team channel, step by step
- Create a dedicated channel such as #website-enquiries. Don't post enquiries into a busy general channel where they scroll away.
- Add the connector in Anticode with the channel's incoming-webhook address (Slack or Discord) or your bot details (Telegram). The credentials are sealed and write-only.
- Agree a claim signal. Whoever takes an enquiry reacts with an agreed emoji or replies in the thread, so two people don't answer the same person and nobody assumes someone else did.
- Set the cover rule. If an enquiry is unclaimed after your target time, the named cover person takes it.
- Send a test from the live form, on a phone, and watch it arrive.
Routing by type with your own rules
Design-engine contact forms ask for name, email and a message, with no extra fields, so you can't route by a "department" choice on that form. There are three ways around that. You can use a custom form tied to a site function instead: up to 30 plain-text fields, including one for the enquiry type, stored and sent to your connectors like any other submission. You can build the enquiry form as an app, where the form can include a type choice and still reaches you through the same form pipeline (the type arrives as a line in the message, and a site function attached to the built-in contact form runs for the app's enquiries too). Or you can route on what you already have: the site's name, the form (contact, booking or newsletter) and words in the message.
For the rules themselves, use the webhook connector to send each submission to an automation tool, and let it decide: bookings to the diary owner, newsletter sign-ups to the email tool, contact messages mentioning "invoice" to accounts. If you'd rather run your own code, a site function makes a signed HTTPS call to your endpoint on each form post; Anticode never runs your code itself, and the signature lets your endpoint check the call really came from your site.
What goes wrong
- No retries. Each submission is sent to each connector once. If Slack is misconfigured that hour, that copy is lost; the dashboard copy isn't. Check the dashboard weekly against what you answered.
- Leavers keep receiving enquiries. When someone leaves, remove their workspace access and check any personal channel or inbox the automation still sends to.
- Personal data spreads. Every destination is another place holding names and emails. Prefer one or two, and remember the dashboard keeps an access log of the last 200 reads, exports and deletes of form data.
- Spam drowns the channel. Watch for a pattern before you add more rules; see stopping contact form spam.
How you know it works
Pick ten recent enquiries from the dashboard and check each was answered, by whom and how quickly. If all ten were answered within your target, routing works. If any weren't, find which step failed: the destination, the claim signal or the cover rule.
Limits
Anticode stores enquiries, emails the owner if the project has notices on, and forwards submissions to connectors. It doesn't assign enquiries to people, track replies, send an acknowledgement to the visitor, or retry a failed delivery. Those belong to your channel, CRM or automation tool. For setup details see form connectors and sending submissions to Slack.
Questions people ask
Can different forms on one site go to different people?
Not by a setting in Anticode. Send submissions through a webhook to an automation tool and route by form type, site name or message text there.
What's the simplest way to route contact form submissions to the right person?
If one person answers everything, email notices to the account owner. If several people share the work, one Slack, Discord or Telegram channel with an agreed claim signal.
What if a connector stops working?
Submissions are still saved in the dashboard. Fix the connector and work through anything that arrived in the meantime from the dashboard list.