Everything upstream of your contact form is expense. The ads, the content, the search rankings, the social posts, the referral you worked two years to earn — all of it exists to deliver a person to one object.
That object is usually the least-designed thing on the website.
It was added near the end of the build, it asks for whatever seemed reasonable that afternoon, nobody has submitted it since launch, and no one is quite certain where the messages go. We have found sites where the answer was nowhere — the form showed a success message and discarded the data, and had been doing so for months while the owner concluded that their marketing did not work.
Start here: go and submit your own form right now. Use a real email address. Confirm the message arrives, confirm it is not in spam, and note how long it took you to fill in. Most of what follows will be obvious to you after that one exercise.
Every field is a toll
A form is a negotiation. Each field is something you ask for before you have given anything, and each one is a place to stop.
You do not need a study to feel this. You have abandoned forms yourself, and you can probably remember which field did it — the phone number you did not want to give, the dropdown with forty options, the "company size" question on an enquiry about a $300 website.
The rule is simple and almost nobody follows it:
Ask only for what you need to write the reply.
Not what you would like to know. Not what your CRM has a column for. What you need in order to send a useful first response. Everything else is a question you can ask in that response, once you have started a conversation and earned the right.
The fields that earn their place
Name. One field, not two. "First name / Last name" is a database schema leaking into a conversation.
One contact channel. Email or phone. Make the other optional, and let the person choose — in our market a great many people would rather be reached on Telegram or WhatsApp than by email, and a form that refuses that preference is refusing the lead.
What you need built. A free-text box, with a placeholder that shows what a good answer looks like. Ours reads: "What does your business do, and what should the site do for it?" That single sentence does more work than six dropdowns, because it tells the person what kind of answer is useful.
Budget band — optional. This one is contested, so here is the honest case. A band is not a qualification filter, it is a calibration device: it lets you answer with a real recommendation instead of a range. Ours are Under $250 · $250–$500 · $500–$1,000 · $1,000+ · "Not sure — advise me". That last option is the reason it works. Without it, a budget question excludes exactly the person who most needs advice.
The fields that do not
Company size, industry dropdown, "how did you hear about us", job title, country, preferred contact time. Every one of these is a question you can ask in your reply. Each is costing you enquiries now to save you a sentence later.
A required phone number on a first contact, unless you genuinely only sell by phone. Many people will not give it to a stranger, and they are not being difficult.
"Message" with a minimum character count. You have just told someone their enquiry is not good enough.
What happens after submit is half the design
The form is not finished when the data is sent. Three things decide whether the lead survives the next five minutes.
Confirm on the page, not in an alert. A browser alert box says "this was bolted on". Replace it with a state on the page that says what happens next and when: "Got it. You get a fixed price and a delivery date back within 24 hours."
Send an acknowledgement. One short email or message, immediately, from a human-looking address. It confirms the channel works, gives the person something to reply to, and buys you the hours before your real answer.
Make failure honest. If the send fails, say so, and give an alternative in the same breath: an email address, a Telegram handle, a number. A form that fails silently is worse than no form, because the person believes they have contacted you.
And one thing that is not design at all: make sure the message reaches somewhere a human looks. An inbox two people monitor beats a CRM nobody opens. Deliverability is a real risk here — if your form emails are not authenticated with SPF, DKIM and DMARC on your domain, they will land in spam and you will blame the form.
The spam problem, and why the answer is not a CAPTCHA
The moment a form works, it starts collecting bots. The reflex is to add a CAPTCHA, and the reflex is wrong.
A CAPTCHA taxes every genuine person to stop an automated request that costs the sender nothing. It is worst for the people you least want to lose: anyone on a slow connection, anyone using a screen reader, anyone on a phone in a hurry. You are putting a puzzle in front of a paying customer to save yourself from deleting emails.
There are cheaper defenses, and they are invisible.
A honeypot field. A field hidden from people and visible to naive bots. Anything that fills it is discarded. Free, silent, and it catches the large majority of unsophisticated submissions.
A time check. A form completed in under two seconds was not completed by a person.
Rate limits on the server. A cap per IP per minute and per hour. This is the one that actually scales, because it targets the behavior — volume — rather than trying to guess intent.
We learned to trust rate limits over challenges building the Bronjoy MCP servers. The public server had to accept requests from AI assistants, which cannot solve a CAPTCHA and should not have to. So the website's Turnstile challenge was replaced with limits: 30 requests a minute per caller, 10 phone reveals a minute, 10 verification-code sends an hour. Phone numbers stay masked until explicitly revealed. The result is a surface that is open to legitimate automated callers and still bounded — and it works the same way for a human form.
If a CAPTCHA is genuinely unavoidable, put it on the second submission, not the first.
The verification trick worth stealing
There is a stronger pattern than filtering, and it comes from booking rather than lead capture.
When we shipped guest booking on Bronjoy, the original flow created the appointment first and sent a confirmation code afterwards. That ordering meant any phone number could put a real booking on a partner's calendar. We inverted it: the code is sent first, to the customer's own phone or email, and the appointment does not exist until the code comes back. Valid five minutes, one appointment.
For a high-value or capacity-consuming enquiry — a site visit, a consultation slot, a callback that occupies someone's afternoon — the same inversion applies. Do not reserve anything real until the contact detail has proved it belongs to the person. It kills fake bookings completely, and it costs a genuine customer one extra tap.
For an ordinary "tell us what you need" form, this is overkill. Know which one you have.
A form you can check in ten minutes
Run this on your own site now.
- Submit it with a real address. Did the message arrive? How long did the form take?
- Count the fields. Cross out every one you do not need to write the first reply.
- Is every remaining field really required, or just marked required?
- Submit from a phone. Does the keyboard switch to email and number types? Does anything overflow?
- Submit with a deliberately bad email. Is the error next to the field and in plain language?
- Turn off JavaScript or throttle the connection. Does the form still work or does it fail silently?
- Check where the message lands, and who reads that inbox on a Friday.
- Check SPF, DKIM and DMARC on the sending domain.
- Is there a link to your privacy policy next to the submit button? If you collect personal data, there should be.
- Does the page say what happens next, with a time?
Every item on that list is an hour of work at most. Together they are worth more than a redesign.
The uncomfortable part
Most businesses will not do any of this, because a contact form is not exciting and a homepage hero is. That is the opportunity.
The traffic you already have is more valuable than the traffic you do not, and the cheapest growth available to almost every business we meet is not more visitors — it is fewer people abandoning the one page where the money is decided.
We build conversion-first websites from $99, and the form is a named part of the work rather than something added at the end. We also make the wider argument for removing friction before the form in publish your prices — because the single biggest reason people do not fill in a contact form is that they are being asked to start a sales conversation to find out a number.
Tell us what you need. You get a fixed price and a delivery date back — free, and with no obligation to proceed.
Frequently asked questions
How many fields is too many?
There is no universal number, but there is a useful test: if you cannot justify a field by naming what you would do differently in your reply based on the answer, remove it. On a first-contact form, four or five fields is usually the honest ceiling.
Should the budget question be required?
No. Make it optional and include a "not sure — advise me" option. A required budget question converts a request for advice into an exam, and the people who most need your help are the ones least able to answer it.
Is a multi-step form better than one long one?
Sometimes, for genuinely long forms, because progress is visible and each screen is less intimidating. But multi-step is a way to make a long form bearable, not a substitute for making it short. Shorten first, then decide.
Should I use a form service or build it?
Either, as long as the data lands somewhere you control and you can export it. What matters more than the tool is that the submission is stored, not only emailed — email is a delivery mechanism with a failure rate, and a lead that exists only as a message can be lost by a spam filter.
What about chat widgets — are they better than forms?
They are different, not better. A chat widget catches people who will not fill in a form, and loses people who will not start a conversation. What is unforgivable is a widget that simulates a conversation and reaches nobody. If the person behind it is not real, do not pretend otherwise — a button that opens your actual Telegram is more honest and more useful than a bot that answers everything with "our team will get back to you".



