Skip to content
FormSubmit
Conversion

Contact Form Best Practices: Fields, Design and Follow-Up

Contact form best practices that get more real inquiries: which fields to ask for, labels and errors, mobile design, success states, routing and spam control.

FormSubmit Team

6 min read

Clean contact us form on desktop and mobile illustrating contact form best practices

The core contact form best practices are simple: ask for as few fields as possible, use visible labels and helpful inline errors, design for thumbs first, confirm clearly what happens next, and stop spam with invisible checks instead of puzzles. Then answer quickly, because response time matters as much as the form itself.

A contact us form is often the last step between a curious visitor and a real conversation. Small friction points (a confusing field, a lost message after an error, a captcha that will not load) quietly cost you inquiries. Below is a practical walkthrough, ending with a checklist you can apply to any site.

Choose the right contact form fields

Every field is a small ask. Start with the minimum and add only what changes your reply.

FieldInclude?Why
NameYesLets you reply personally
EmailYesRequired to reply
MessageYesThe actual inquiry
Topic or departmentOftenRoutes the message to the right person
PhoneOptionalOnly if you actually call people back
Company / websiteSometimesUseful for B2B qualification
BudgetRarelyCan deter early-stage inquiries; ask later
Address, date of birthNoNot needed to answer a question

A few related contact form best practices:

  • Use one name field. Splitting into first and last name adds effort and does not fit every naming convention.
  • Mark optional fields, not required ones, when most fields are required. "Phone (optional)" is clearer than a sea of asterisks.
  • Use a dropdown for topics with 3 to 6 options, plus "Something else."
  • Prefill hidden context such as the page URL or plan name in a hidden field, so the visitor does not have to type it.

Contact form design: labels, layout and copy

Good contact form design is mostly about clarity.

  • Visible labels above each field. Placeholder-only fields lose their label as soon as someone types, which hurts usability and accessibility.
  • One column. Multi-column layouts make people zigzag and miss fields.
  • Specific button text. "Send message" or "Request a quote" beats "Submit."
  • Set expectations. A line like "We reply within one business day" near the button reduces anxiety and repeat submissions.
  • Offer alternatives. Some people prefer email or phone. Listing them next to the form is a courtesy, not a failure.

Here is a solid baseline in plain HTML:

html
<form action="https://formsubmit.app/f/YOUR_FORM_ID" method="POST">
  <label for="name">Name</label>
  <input id="name" name="name" type="text" autocomplete="name" required>

  <label for="email">Email</label>
  <input id="email" name="email" type="email" autocomplete="email" required>

  <label for="topic">What is this about?</label>
  <select id="topic" name="topic">
    <option>General question</option>
    <option>Sales</option>
    <option>Support</option>
    <option>Something else</option>
  </select>

  <label for="message">Message</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="display:none">
  <input type="hidden" name="_subject" value="New contact form message">

  <button type="submit">Send message</button>
  <p>We reply within one business day.</p>
</form>

Errors that help instead of punish

Validation is where form UX often breaks down.

  • Validate on blur or on submit, not on every keystroke. Telling someone their email is invalid after one character is irritating.
  • Put the error next to the field and say how to fix it: "Enter an email like name@example.com."
  • Never clear the form on error. Losing a long message is one of the fastest ways to lose a lead.
  • Move focus to the first error after a failed submit, and announce errors to screen readers. Our accessible forms post covers the ARIA details.
  • Use the right input types (type="email", type="tel") so browsers validate basics and show the right keyboard.

Design for mobile first

A large share of contact form traffic comes from phones, so test there first.

  • Use input font sizes of at least 16px so iOS does not zoom in on focus.
  • Make tap targets large and give the submit button full width on small screens.
  • Add autocomplete attributes so browsers can fill name and email in one tap.
  • Keep the message box tall enough to see a few lines of text.
  • Avoid side-by-side fields below roughly 600px wide.

The success state and autoresponder

What happens after "Send" shapes how people feel about you. A good success state:

  • Confirms the message was received, in plain language.
  • Says what happens next and roughly when.
  • Offers a useful next step, such as docs, pricing or a booking link.

For JavaScript forms, replace the form with a confirmation message in place. For plain HTML forms, redirect to your own thank-you page with _redirect or a redirect set in your form backend.

An automatic confirmation email reassures people their message did not vanish and gives them a record. FormSubmit's autoresponder can send one per form with custom wording using field variables, and replies go back to you. Keep it short and personal, and avoid making it read like a ticket number from a faceless queue.

Routing and response time

The best form is wasted if messages sit unread.

  • Route by topic. Send sales questions to sales and support questions to support, using the topic field, email rules or a webhook.
  • Use Reply-To. Notification emails should let you hit Reply and answer the visitor directly. FormSubmit sets Reply-To to the submitter's email automatically, and email notifications can go to extra verified recipients.
  • Put inquiries where your team works. Posting to a Slack channel or a shared spreadsheet makes it obvious when something is unanswered. See integrations.
  • Set a response target and publish it. A same-day or next-business-day reply is a common standard for small teams.

Stop spam without adding friction

Spam floods inboxes, buries real leads and tempts people to add aggressive captchas that hurt conversions. Layer your defenses instead:

  1. A hidden honeypot field that bots fill and humans never see.
  2. A timing check that flags forms submitted faster than a person can type.
  3. Server-side content filters for link-stuffed or keyword-heavy messages.
  4. Rate limiting per IP address.
  5. A captcha, ideally an invisible or low-friction one, only if spam still gets through.

FormSubmit runs the first four automatically on every plan, with optional reCAPTCHA, hCaptcha or Turnstile if you need them. Read more in spam protection and our guide to stopping form spam.

Contact form best practices checklist

  • Name, email and message only, plus fields that change your reply
  • Visible labels above every field, one-column layout
  • Specific button text and a response-time promise
  • Correct input types and autocomplete attributes
  • Inline, specific errors that never clear the form
  • Tested on a real phone, 16px or larger inputs
  • Clear success state with a next step
  • Confirmation email to the sender
  • Reply-To set so you can answer from your inbox
  • Routing to the right person or channel
  • Honeypot, timing and content checks before any captcha
  • A published response time you can meet

Build yours

You can apply every item above to an existing form in an afternoon. If you are starting fresh, the free contact form template in our generator produces clean, labeled HTML or framework code, and FormSubmit handles delivery, spam filtering and autoresponders behind it. Plans are on the pricing page.

Last updated .

Frequently asked questions

How many fields should a contact form have?

As few as you need to reply well. For most sites that is name, email and message. Add other fields only if they change how you respond, such as a topic dropdown for routing.

Should I put placeholders instead of labels?

No. Placeholders disappear when people type and are often low contrast. Use a visible label above each field and keep placeholders for short examples, if you use them at all.

How do I stop contact form spam without hurting conversions?

Start with invisible checks such as a honeypot field, a timing check and server-side content filters. Add a captcha only if spam still gets through.

What should happen after someone submits a contact form?

Show a clear confirmation that says what happens next and when, and consider sending an automatic confirmation email so the person knows the message arrived.

Related resources

Keep reading

Your form backend is 60 seconds away

Sign up with Google or email, create a form, paste the endpoint. Free forever for small sites — no credit card.