A contact form is the easy part. The hard part is what happens after submit. In most companies, the answer is: it lands in someone's inbox, where it competes with everything else, and gets a reply between 30 minutes and three days later. The form is not the failure. The absence of a system behind it is.
The real cost of inbox triage
Drift's 2023 response time research is specific: a 3-hour reply kills 80% of conversion intent on inbound leads. A reply at 24 hours kills 90%. Most studios and agencies reply somewhere in the 2-to-48-hour window because the form submission lands in a shared inbox that nobody watches between Slack notifications.
The speed problem is real. The system problem precedes it. A faster human is not the solution. The inbox is still the bottleneck — it just fails at a different rate. The fix is to replace the inbox with a machine that acts before a human has to decide whether to act.
The four layers we wire, and why each one matters
01 — Classification
Every submission is scored on fit before any human sees it. The scoring criteria are explicit: industry, company size, geography, intent signal. A personal injury law firm does not want a freelancer on a tight budget; a filtration rule prevents the wasted call. Classification is not gatekeeping — it is respect for both sides of the conversation. A bad-fit lead gets a clean reply and a pointer somewhere useful. A good-fit lead clears the queue and triggers the next step.
02 — Enrichment
An Apollo lookup runs on submit. Job title, company, LinkedIn profile, last funding round, employee count — all appended before the CRM row is written. The sales rep does not call a name. They call a person, with context on their company, their role, and their likely budget band. Enrichment costs fractions of a cent per submission. The alternative is a 15-minute research task every time a rep picks up the phone.
03 — Qualification
The multi-step form does the work of the first call. Project type, budget band, timeline, decision-maker versus influencer — these questions belong on the form, not in a discovery meeting. By the time a rep picks up the phone, the homework is done. The first conversation starts at question five, not question one.
04 — Routing
Hot lead: CRM deal created, Slack ping sent, calendar booking link delivered to the prospect — in 45 seconds. Cold lead: dropped into a nurture sequence without human triage. Spam: nowhere. The router is deterministic. No ML, no probability, no false positives on good leads. The logic is a decision tree with explicit branches, and every branch is tested before go-live.
What a generic contact form actually costs
Run the math on a typical "name, email, message" form: 500 form views per month, 2.5% conversion to submission, 4-hour average reply time, 15% lead-to-meeting rate. That is 12 leads, and 1.8 meetings per month.
Now run the same traffic through a triage form: 500 views, 9% conversion (multi-step forms with a clear value proposition convert higher), 45-second automated reply, 35% lead-to-meeting rate on pre-qualified submissions. That is 45 leads and 15.75 meetings per month.
The system difference is 8.75x more meetings from identical traffic. The spend on ads, SEO, or content that drove those 500 views is unchanged. The only thing that changed is the infrastructure behind the form.
Why we built it for ourselves first, then productised it
The Atellius /contact form runs this exact system. Submit triggers a server action. The server action calls Apollo, enriches the contact, writes the CRM row, fires a Resend confirmation to the prospect, and posts a bullet-point summary to a private Slack channel. End-to-end latency: under 800ms.
You should not sell a system you do not run yourself.
The productised version is MeritsOnly — 16+ industry templates, white-label support, and the same routing logic for local service businesses who cannot afford a custom build. The underlying architecture is identical. The form fields and scoring thresholds are configurable. The speed guarantee is the same.
The custom order use case — triage beyond B2B
Multi-step intake is not only for service businesses chasing B2B leads. A custom furniture maker, a bespoke jeweller, a cake artist — these businesses take orders, not leads. The form collects a full specification before the maker responds: dimensions, materials, finish, timeline, budget range.
The maker receives a brief, not a message. The qualification logic is identical; the routing target is different. Instead of a CRM deal and a calendar link, the output is a structured brief in the maker's project management tool and a confirmation to the customer that their specification was received. The system replaces the back-and-forth emails that currently consume three to five exchanges before a price can even be quoted.
What the system handover looks like
We deploy with a feature flag. Synthetic test submissions run through every branch of the routing tree before go-live: hot lead, cold lead, spam, edge cases. The handover package includes a runbook in the repo, Plausible dashboards already wired to the funnel stages, and a 14-day monitoring window with daily funnel checks.
The client owns the code. If we part ways, the system keeps running. There is no vendor lock-in to a no-code platform, no subscription that expires, no black box to debug when a routing rule misfires.
The three mistakes that kill inbound systems
- Building the form before the routing logic — you get a well-designed form that routes to an inbox. Start with the decision tree, then build the form fields that feed it.
- Using Apollo enrichment without deduplication — the CRM fills with duplicate contacts on every re-inquiry. Deduplicate on email before writing, and merge on conflict.
- Deploying without synthetic test submissions — the first real broken branch you discover will be on a genuine $50k lead. Run synthetic submissions against every branch before flipping the flag.

