# Which contact form fields do you actually need?

> Which contact form fields to include, how many fields is too many, and when to make a field required or optional, with ready HTML to copy.

Growth

Which contact form fields to include, how many fields is too many, and when to make a field required or optional, with ready HTML to copy.

By [Venkatesh](https://www.linkedin.com/in/ageven/) 9 November 2026 · 6 min read

![Cover image: Which contact form fields do you actually need?, a FormDoc guide](https://www.formdoc.dev/images/blog/contact-form-fields.png)

Most contact forms need only three contact form fields: name, email and message. Add anything else only when you’ll use the answer to reply faster or route the message, and make every extra field optional unless you truly can’t answer without it. Fewer fields means fewer reasons for a visitor to give up halfway.

That’s the short version. The rest of this post explains how to decide, field by field, and gives you a form you can paste into any site.

## Start with the three fields every form needs

A contact form exists so someone can ask you something and you can answer. To do that you need to know:

1.  **Who they are** (name), so your reply doesn’t start with “Hi there”.
2.  **How to reach them** (email), so you can reply at all.
3.  **What they want** (message), so you know what to say.

Everything else is a nice-to-have. That doesn’t mean extra fields are bad. It means each one has to earn its place.

Here’s the minimal version:

```html
<form action="https://api.formdoc.dev/v1/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">

  <label for="name">Your name</label>
  <input id="name" type="text" name="name" autocomplete="name" required>

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

  <label for="message">How can we help?</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">
  <button type="submit">Send message</button>
</form>
```

The `type="email"` and `autocomplete` attributes matter more than they look. They bring up the right keyboard on phones and let browsers fill in details the visitor has typed before, which makes a short form feel even shorter.

## How many fields is too many?

There’s no magic number, and you should be wary of anyone who quotes one. A better test is to ask, for each field: “What will I do differently because I know this?”

If the honest answer is “nothing”, remove it. If the answer is “I’d send it to a different person” or “I could quote a price in my first reply”, keep it, but think about making it optional.

Think about it from the visitor’s side. Each field is one more decision, one more thing to type, and one more place they might pause and wonder why you’re asking. A phone number field on a simple enquiry form, for example, can make people worry they’ll get a sales call. They might leave rather than risk it.

A useful rule: if your form needs scrolling on a phone before the visitor reaches the button, look hard at what you can cut.

## Extra contact form fields and when to use them

| Field | Add it when | Required? |
| --- | --- | --- |
| Phone | You genuinely call people back, or your customers prefer calls | Usually optional |
| Company | You sell to businesses and the company changes your reply | Optional |
| Topic or department (select) | Different people answer different kinds of message | Optional, with a sensible default |
| Budget | You quote prices and want to avoid mismatched leads | Optional |
| Preferred date | You take bookings or appointments | Required only if you can’t reply without it |
| How did you hear about us? | You actively track marketing channels | Optional, and consider skipping it |
| Website URL | You do work on people’s websites | Optional |

If your form starts to look like a long questionnaire, it may not be a contact form any more. A quote request or appointment request deserves its own form. Our [quote request template](https://www.formdoc.dev/templates/quote-request/) is a good starting point for that.

## Required vs optional: how to decide

Mark a field required only when you can’t reply without it. For most contact forms, that’s just email and message. Name is a judgement call: you can always reply without it, but most people expect to give one and don’t mind.

A few practical tips:

-   **Say which fields are optional**, rather than putting an asterisk on the required ones. When most fields are required, labelling the exceptions is clearer.
-   **Use the browser’s `required` attribute** so people get an instant message if they miss something, before the form is even sent.
-   **Don’t force a phone number format.** People write numbers in many ways. Accept what they type.
-   **Keep the message box generous.** A tiny textarea suggests you want a tiny message. Five rows is a friendly default.

Making a field optional costs you nothing. If the visitor fills it in, great. If not, you still get the message.

## Field names make your notification emails readable

With a form backend, the `name` attribute of each field becomes the label in your email. So `name="phone"` shows up as “phone” next to the number. Pick clear, short names and you’ll be able to read each notification at a glance.

FormDoc also treats a few names specially. A field called `email` (or `replyto`) sets the Reply-To of the notification, so you can hit reply and answer the visitor directly. A hidden `subject` field sets the email’s subject line, which helps you filter messages from different forms:

```html
<input type="hidden" name="subject" value="New enquiry from the website">
```

For the full list of reserved fields, see the [API reference](https://www.formdoc.dev/docs/api-reference/). If you’re new to the `name` attribute itself, the post on [HTML form action and method](https://www.formdoc.dev/blog/html-form-attributes-explained/) covers it in more depth.

## Don’t forget the invisible field

The one field visitors never see is the honeypot, `botcheck`. It sits hidden in the form and catches simple bots that fill in every input. It adds zero effort for real people, so every contact form should have it. The post on how to [stop form spam](https://www.formdoc.dev/blog/stop-form-spam/) explains how it works with FormDoc’s other spam layers.

There are also practical limits to keep in mind for very long forms: FormDoc accepts up to 50 fields and 10,000 characters per field in one submission. A contact form will never come close, but it’s a good reminder that if you’re anywhere near 50 fields, the form probably needs splitting up.

## Common questions

### Should I ask for a phone number on my contact form?

Only if you’ll actually call. If you mostly reply by email, a phone field adds effort and may make some visitors wary. If you do want it, make it optional and accept any format.

### Is a single “message” box enough, or should I add a subject field?

For most sites, one message box is enough. A visible subject field asks the visitor to summarise before they’ve written anything, which is extra work. If you want sorted emails, a hidden `subject` field or a short topic dropdown does that job better.

### Should every field be required?

No. Make a field required only when you couldn’t reply without it, which for most contact forms means email and message. Everything else can be optional. You’ll still get the answer from people who are happy to give it.

## Build yours in a few minutes

If you want a starting point with sensible fields, labels and the honeypot already in place, grab the [contact form template](https://www.formdoc.dev/templates/contact/), add your key from [app.formdoc.dev/new](https://app.formdoc.dev/new), and you’re ready to receive messages.

Written by**[Venkatesh](https://www.linkedin.com/in/ageven/)**
