A good contact page gives a visitor one obvious way to reach you and the facts they need before they do: a short form or an email address, a phone number that can be tapped, a street address if people visit, opening hours, and a line that says when you reply. This page collects 18 real contact page examples from small and mid-sized businesses, freelancers, stores, and software companies, and records what each one actually contains: how many form fields it has and how many are required, whether the phone and email are real links, and whether it states a response time. After the examples come the patterns they share, a text wireframe of a contact page, a copyable HTML contact section, a checklist, and answers to the questions people ask about contact pages in forums. It is part of the website examples library.

Jump to: the comparison table · business contact pages · personal contact pages · e-commerce · software · form or email link · wireframe · HTML · FAQ

What goes on a contact us page?

A contact page needs five things, in roughly this order:

  1. One main way to reach you: a short form, or an email address if you would rather read email
  2. A phone number as a tel: link, if you take calls, so it dials on a phone
  3. Your address and opening hours, if customers visit, with a map link or an embedded map
  4. A response promise: when you reply, and what happens after someone writes
  5. Routing, if you need it: separate addresses or a dropdown for sales, support, press, and jobs

Everything else is optional. A FAQ block saves support email (Josh W. Comeau and April Dunford put one on their contact pages). A newsletter checkbox on the form is common but adds a decision the visitor did not ask for. Social links belong in the footer, where they already are.

Contact page examples at a glance

Every page below is a real, live contact page. Each was fetched on 2026-11-12 and read as HTML, so the counts describe what the page sends to the browser, not what a screenshot suggests. "Fields" counts visible form controls (hidden and anti-spam fields are excluded) and "required" counts those marked required in the HTML. Where a form is injected by a script or an iframe, the fields could not be counted and the table says so.

Contact pageTypeForm fields (required)PhoneEmailStreet addressHoursEmbedded mapStated response timeRouting
Silent Rivers Design+BuildRemodeler, Des Moines5 (4)Text onlyNoYesYesNo"will get back to you promptly"No
Model RemodelRemodeler, Seattle14 (13)tel: linkmailto: linkYesNoYesNot statedNo
HillerPlumbing, heating, and electrical, Tennessee5 (4)tel: linkNoNoNoNo"within 24 hours"No
Franklin BarbecueRestaurant, Austin6 (5)Text onlyNoYesYesNoNot statedReason dropdown
Schweiger Dermatology GroupDermatology practice group5 (4)tel: linkNoNoNoNoNot statedTopic dropdown
April DunfordPositioning consultant4 (4)NoNoNoNoNoNot statedNo
MetaLabDesign agency6 (4 by asterisk)NoNoNoNoNoNot statedNo
ClearleftDesign agency, BrightonScript-renderedText onlymailto: linkYesNoNoNot statedNo
HKM Employment AttorneysLaw firm, several officesEmbedded iframetel: linkNoNoNoNoNot statedOffice finder
BenchBookkeeping serviceNonetel: linksNoNoNoNo"within 24 business hours" (in-app)Sales vs. service
Josh W. ComeauDeveloper, course author3 (2)NoNoNoNoNoNot statedNo
Sara SoueidanFreelance front-end engineer6 (5)NoNoNoNoNoNot statedInquiry type dropdown
Ethan MarcotteDesigner, author4 (4)NoNoNoNoNoNot statedNo
Jessica HischeLettering artistNoneNoProtected linksYesYes (shops)NoNot statedBy inquiry type
Intelligentsia CoffeeCoffee roaster and online store6 (0)Nomailto: links (4)NoNoNo"get back to you shortly"Topic dropdown, department emails
Field NotesNotebook brand and store5 (2)NoProtected linkYesYesNoNot statedSubject dropdown
PostmarkEmail delivery service6 (3) plus conditionalNoNoNoNoNo"between 3am and 7pm EST, Monday to Friday"Topic dropdowns
Oh DearUptime monitoringNoneNomailto: links (5)NoSupport hoursNoNot statedBy department

"Text only" means the number is printed but not wrapped in a tel: link. "Protected links" means the email is behind a script-based obfuscation, so it shows in a browser but not in the raw HTML. Sites change, so a form may have been edited since the check.

Contact us page examples for business

The business pages split into two groups. Local service businesses want a phone call or a booked visit, so phone numbers, addresses, and hours do the work. Professional services want a qualified conversation, so the form asks what the inquiry is about and the page says what happens next. The descriptions below are limited to what is in each page's HTML: headings, form fields, links, and stated text. Nothing here states prices, ratings, or results.

Local service businesses

Silent Rivers Design+Build: silentrivers.com/contact-us/

FieldObservation
TypeDesign-build remodeler, Des Moines, Iowa
FormFirst Name, Last Name, Email, Phone, and Message, with the first four required; a "Subscribe to Silent Rivers" newsletter checkbox below the message
Contact detailsThe phone number as plain text, the studio address linked to Google Maps, and "Open 8am-5pm"
Response time"We’d love to hear from you and will get back to you promptly."
RoutingNone
What to copyThe one-line note above the form that says what the form is for ("Submit form below to schedule")

Model Remodel: modelremodel.com/contact/

FieldObservation
TypeRemodeler, Seattle
FormThe longest form in this list: First Name, Last Name, Email, Phone Number, Preferred Contact Time, Project Type, how you found the company, Neighborhood, Address, Zip Code, Ideal Start Date, Construction Budget, a free-text question, and a file upload, with 13 of the 14 marked required; placeholders repeat each label with an asterisk
Contact detailsA tel: link, a mailto: link, the street address, and the contractor license number
MapAn embedded Google Map, the only one in this list
OtherA "Tell Us About Your Project" heading, an "Our Client Services Team" section with named staff photos, and a "Located In Queen Anne" section
What to copyThe embedded map and the license number; skip the 14 required fields unless you only want fully qualified leads

Hiller Plumbing, Heating, Cooling & Electrical: happyhiller.com/contact/

FieldObservation
TypeHome services company, Tennessee
FormFirst Name, Last Name, Email, Phone Number, and Comments, with phone the only optional field; a "Subscribe to Email" checkbox that is ticked by default
Contact detailsA tel: link repeated through the page and a "Locate the nearest Hiller" search in the footer; no address on the contact page itself
Response time"Please submit your information below and we will contact you back within 24 hours."
RoutingNone
What to copyThe response promise. Untick the newsletter box by default: a pre-ticked box turns a service request into a marketing consent

Franklin Barbecue: franklinbbq.com/contact

FieldObservation
TypeRestaurant, Austin, Texas
FormSubject, a required Reason dropdown (General Info, private parties at two venues, Goldbelly, Preorder, Merch, Press, Donation Request), Name, Email, Phone, and Message; five of the six are required and Name is the optional one
Contact details"Email us by completing the form below, or give us a call, (512) 653-1187" with the number as text, the street address, and hours ("Tuesday - Sunday", "Closed Monday", "11 am-Sold Out (2 or 3pm)")
RoutingThe Reason dropdown sends press, parties, and donation requests to the right place without separate addresses
What to copyHours written the way the business actually runs, including the sell-out note; compare the restaurant website examples for the rest of the site

Schweiger Dermatology Group: schweigerderm.com/contact-us/

FieldObservation
TypeDermatology practice group with many locations
FormName, Email Address, Phone, a Topic dropdown (Appointment, Patient Portal, Billing, Insurance Question, Shop, Request for Meds, General), and Message; four of the five required, phone optional. The field names are bold text above each box rather than <label> elements
Contact detailstel: links in the header and footer; no address on the contact page, since locations have their own pages
OtherA "Make an Appointment" heading above the form
What to copyThe Topic dropdown, which separates billing and prescription questions from new-patient requests

Professional contact page examples

April Dunford: aprildunford.com/contact

FieldObservation
TypeIndependent positioning consultant
FormFirst Name, Last Name, Email Address, and a message box, all four required. The form has no <label> elements; each field relies on placeholder text ("First Name", "Say Hello") that disappears when you type
Contact detailsNone. The form is the only route
Other"If you are interested in finding out more about how we might work together, you have come to the right place." followed by a Frequently Asked Questions block on the same page
What to copyAnswering common questions on the contact page; add visible labels, which the form usability research below recommends

MetaLab: metalab.com/contact

FieldObservation
TypeProduct design agency
FormName, Email, "How did you hear of us?", a company-stage dropdown (early, mid, late stage startup, or enterprise), Message, and a newsletter checkbox. Four fields carry an asterisk, but none has a required attribute in the HTML
Contact detailsNone. The heading is "Say hey."
RoutingNone, though the company-stage field qualifies the lead
What to copyOne qualifying question instead of six; if you mark fields required, also mark them required in the code

Clearleft: clearleft.com/contact

FieldObservation
TypeDesign agency, Brighton, UK
FormRendered by a HubSpot script, so the fields are not in the HTML
Contact detailsA mailto: link, a mobile number as text, the full studio address in an <address> element, a what3words link, and coordinates
Directions"It’s a pleasant 15-minute walk from Brighton train station to the Clearleft studio." plus notes on bikes and car parks
What to copyWritten directions. A map shows where you are; a sentence tells a visitor how to get there

HKM Employment Attorneys: hkm.com/contact/

FieldObservation
TypeEmployment law firm with offices in several cities
FormUnder a "Tell Us About Your Case" heading, embedded as a monday.com form inside an iframe, so the fields are not in the page HTML
Contact detailsA tel: link and the line "If you would like to reach out to HKM Employment Attorneys, you can click here to find an office near you, or fill out the form below."
RoutingBy office, through the city links
What to copyOffering the two routes in one sentence: find the office, or use the form

Bench: bench.co/contact

FieldObservation
TypeOnline bookkeeping and tax service
FormNone
Contact detailsTwo tel: links to the same number with different extensions: "Call 1 (888) 760 1940 ext.1" under "Talk to Sales" and "ext.2" under "Service related question?"
Response time"Message your bookkeeper in the Bench app and get a response within 24 business hours."
What to copySeparating sales from support on the page, and a response time stated in business hours

For the rest of a consulting or agency site, see consultant website examples.

Personal contact page examples

Personal and freelancer contact pages are the shortest in the list. None of the four shows a phone number, and only one shows an address. What they add instead is tone and triage: a sentence about who should write, and a way to sort work from everything else. The portfolio sites among them (Sara Soueidan, Jessica Hische) put the sorting in the form or the page itself; see portfolio website examples for the rest of those sites.

Josh W. Comeau: joshwcomeau.com/contact/

FieldObservation
TypeDeveloper and course author
FormPreferred name, Email address, and Message; the first two required. Each has a real label and an example placeholder
Other"I love hearing from readers! You can use this form to reach out to me with any questions, comments, or concerns." and a Frequently Asked Questions section under the form
What to copyThree fields, and the FAQ that absorbs the questions a form would otherwise collect

Sara Soueidan: sarasoueidan.com/contact/

FieldObservation
TypeFreelance front-end UI engineer
FormFull Name, Email Address, Company / Organization, an inquiry type dropdown (Front-end UI development, Speaking at an event, Running a workshop, Just saying hi!), a budget range dropdown, and Your message; all but the budget are required
Contact detailsNone besides the form
RoutingThe inquiry type dropdown
What to copyA budget range as an optional field: it qualifies project requests without blocking a hello

Ethan Marcotte: ethanmarcotte.com/contact/

FieldObservation
TypeDesigner and author
FormYour name, Your email address, Subject, and "Write your note here", all required, plus a required radio question, "Is this spam, or a real message?"
OtherThe heading "Drop me a line." and a newsletter sign-up below the form
What to copyLabels written as questions and a Subject field, which makes the email that lands in the inbox easy to sort

Jessica Hische: jessicahische.is/contactable

FieldObservation
TypeLettering artist and illustrator
FormNone. The page is a set of sections: Work Inquiries (identity and logos, commercial lettering, children's books, licensing, personal commissions), Speaking & Workshops, Press Inquiries, Students, and Just Reaching Out
Contact detailsEmail links protected by a script, a business address in an <address> element, and two shop addresses with hours ("Wed to Sun • 12-6pm")
RoutingEach section names who to email, including a literary agent for book projects, and says what is not accepted (personal commissions, internships, portfolio reviews)
What to copySaying no on the page. Listing what you do not take on saves both sides an email

E-commerce contact us page

Store contact pages mostly handle order problems, so the useful additions are an order number field, a topic dropdown, and separate addresses for press and wholesale.

Intelligentsia Coffee: intelligentsia.com/pages/contact-us

FieldObservation
TypeCoffee roaster with an online store and subscriptions
FormRelated Topic (Order Issue, Quality Concern, Question, Shipping Issue, Subscription Issue, Wholesale), Subject Line, Full Name, Email, Phone Number, and Message; the message placeholder asks for the order number. No field is marked required in the HTML
Contact detailsFour department emails as mailto: links: Press/Media, Event Inquiries, Gifts/Bulk Orders, and Coffee for your office, plus a wholesale support link
Response time"We'll review your message and get back to you shortly."
What to copyTopic first, then the form, then the departments that should not use the form

Field Notes: fieldnotesbrand.com/contact

FieldObservation
TypeNotebook brand with an online store and a Chicago shop
FormName, Email, a Subject dropdown (Customer Service, Wholesale, custom orders, Media Enquiries, Shop Tip, Just Saying "Hi"), Order Number, and Message; only Name and Email are required
Contact detailsA postal address in an <address> element with a protected email link, shop hours ("Open Thursdays and Fridays from 9:00am to 5:00pm for in-person shopping."), local pickup hours, and holiday hours
OtherShipping and returns information on the same page, above the form
What to copyAn optional Order Number field, and shop hours kept next to the form rather than on a separate page

Software and B2B contact pages

Software companies get support, sales, billing, and press requests through one page, so routing matters more than the form.

Postmark: postmarkapp.com/contact

FieldObservation
TypeTransactional email service
FormA support request form: a required topic dropdown, "What is your question about?" (Login Issues, Billing, Permissions, Monthly Plans, Something Else), name, username, a required email, and a required message, with further fields (sending method, example message link, error message, server and template names) that appear for specific topics
Response time"We’ll get back to you between 3am and 7pm EST, Monday to Friday." stated under the heading and again at the bottom
RoutingThe topic dropdowns, and a separate note for sales ("Looking for sales? We do things differently.")
What to copyThe hours window as a response promise, and a privacy note under the email field ("We'll never use this email for marketing purposes.")

Oh Dear: ohdear.app/contact

FieldObservation
TypeWebsite monitoring service, Belgium
FormNone
Contact detailsSeparate mailto: links for support, billing, and sales, and two named people for press
Hours"Our support department is available on weekdays between 9 AM and 5 PM CET."
What to copyA page title that lists the departments ("Contact: Support, Billing, Sales & Press"), so the right address is found from the search result

How our demo contact pages do it

Our fictional example sites use one contact pattern with small changes per industry. Each page has a heading that names the action, a form on the left, the business details on the right, and an embedded map below.

  • Consultant: "Book a discovery call." A five-field form (Full name, Email, Phone marked optional, a "Which area?" dropdown, and "The question"), firm details with a tel: link, a mailto: link, and hours, and the note "Most discovery calls happen within two weeks."
  • Construction company: "Start a build." The same five-field shape with a Project type dropdown, office hours including Saturday morning, and a note asking for drawings
  • Accountant: "Book a consultation." Five fields ending in "Tell us about your business", with weekday hours and a note that the consultation is free all year
  • Chiropractor: "Contact." The shortest form, Full name, Email, optional Phone, and Message, with "we reply within one business day", clinic hours including Saturday, and an emergency note telling people to call 911 for anything urgent
  • Graphic designer: "Start a project." A brief-style form with a "What do you need?" dropdown and the note "Most first replies happen within one business day, and the first call is free."

In every demo the phone field is optional and the label says so, every field has a visible <label>, and the business details sit beside the form rather than in a footer. The forms are mock-ups: they validate in the browser but do not send anywhere, which is also the first thing to fix on a real site (see the website launch checklist).

What the examples have in common, and where they differ

The counts below come from the table above, 18 pages checked on 2026-11-12.

  • Most forms are short. 13 of the 18 pages have a form in their HTML, and 11 of those 13 have between 4 and 6 fields. The outliers are Josh W. Comeau with 3 and Model Remodel with 14. The median is 5 fields.
  • Name, email, and message are the core. Every visible form asks for a name, an email address, and a message. 6 of the 13 ask for a phone number, and only 3 require it (Silent Rivers, Model Remodel, Franklin Barbecue).
  • Phone numbers are rarer than you would expect. 8 of 18 pages show a phone number, and only 5 make it a tel: link. None of the four personal pages shows one.
  • Email addresses are rarer still. 6 of 18 show an email address, 4 as plain mailto: links and 2 behind script protection. The rest rely on the form.
  • Addresses and hours follow foot traffic. 6 pages show a street address and 5 show hours. All six addresses belong to businesses or people with a physical studio, shop, or restaurant. Only Model Remodel embeds a map.
  • Response times are mostly missing. 3 pages state a concrete window (Hiller's 24 hours, Bench's 24 business hours, Postmark's weekday hours) and 2 say "promptly" or "shortly". The other 13 say nothing about when they reply.
  • Routing is common. 10 of 18 pages route inquiries somewhere, by dropdown (Franklin Barbecue, Schweiger, Sara Soueidan, Intelligentsia, Field Notes, Postmark), by department email (Intelligentsia, Oh Dear), by section (Jessica Hische), by phone extension (Bench), or by office (HKM).
  • Newsletter checkboxes creep in. 4 forms add one, and Hiller's is ticked by default.
  • Labels are not universal. April Dunford's form uses placeholders instead of labels, and Schweiger's uses bold paragraphs. Both go against the NN/g advice on placeholder text quoted below.

Use a form when you need to sort or qualify messages, and a plain mailto: link when you want the lowest barrier. The forum threads behind this question (a Warrior Forum thread asking whether to show an email link or a form, and a SitePoint thread on listing a phone number) end up in the same place: the answer depends on who writes and what you do with the message.

A form wins when:

  • You want a subject or topic chosen for you (Franklin Barbecue, Intelligentsia, Postmark)
  • You need a specific detail every time, such as an order number or a project type
  • You do not want to publish an address that spam harvesters can read

An email link wins when:

  • Your visitors are technical or already know you (Oh Dear, Bench, and the personal sites that show an address)
  • People want a record of what they sent, which a form rarely gives them
  • You have no form backend, or no one checks the inbox the form posts to

Whichever you choose, keep the form short. The Nielsen Norman Group's Website Forms Usability: Top 10 Recommendations puts "Keep it short" first, notes that it cut one of its own forms from six fields to two, recommends a single column, and says "Avoid placeholder text" because placeholder text used as a label disappears when the user starts typing. The 18 examples agree with the first point: the typical form here has 5 fields, and the one outlier with 14 fields is Model Remodel, a remodeler that asks about the project up front.

Showing both is fine. Model Remodel and Clearleft do: a form for new inquiries and a mailto: link for everyone else.

Simple contact us page design: the anatomy of a contact page

Most contact pages, including the 18 above and our demos, fit one skeleton. The diagram is an illustrative pattern, not a specific site; it follows the same conventions as the homepage layouts in the website wireframe example.

plaintext
+--------------------------------------------------------------+
| HEADER  Logo   Services  About  Contact         (555) 010-0000|
+--------------------------------------------------------------+
| H1  Contact [business name]                                   |
|     One line: who should write, and what happens next         |
+------------------------------+-------------------------------+
| FORM                         | DETAILS                       |
|   Name             [       ] |   Phone  -> tel: link         |
|   Email            [       ] |   Email  -> mailto: link      |
|   Phone (optional) [       ] |   Street address + map link   |
|   Message          [       ] |   Hours                       |
|                    [       ] |   "We reply within one        |
|   [ Send message ]           |    business day."             |
+------------------------------+-------------------------------+
| ROUTING (optional)                                            |
|   Sales · Support · Press · Jobs -> one email or link each    |
+--------------------------------------------------------------+
| MAP (optional)  embedded map, or a sentence of directions     |
+--------------------------------------------------------------+
| FOOTER  Address · Phone · Hours · Privacy                     |
+--------------------------------------------------------------+

The sections in order:

  1. Header: the normal site menu, with the phone number if you take calls
  2. Heading and one line: say what the page is for ("Book a discovery call", "Start a build", "Contact") and when you reply
  3. Form: three or four fields with visible labels, phone marked optional, one button with a verb
  4. Details: phone, email, address, and hours beside the form, each as a real link where it can be one
  5. Routing: only if different kinds of mail go to different people
  6. Map or directions: an embedded map if visitors drive to you, or a sentence like Clearleft's if they walk
  7. Footer: the same address and hours, which also appear on every other page

How to say "please contact me" on the page

The heading and button carry the request, so a single plain sentence is enough. Lines that appear on the pages above and in our demos:

  • "Send us a message." (Intelligentsia) and "Send a message." (our chiropractor demo)
  • "Book a discovery call." (our consultant demo)
  • "Tell Us About Your Project" (Model Remodel) and "Tell Us About Your Case" (HKM)
  • "Drop me a line." (Ethan Marcotte)

Pair it with the response promise: "Send us a message and we will reply within one business day." Avoid "Contact us today!" with an exclamation mark; none of the 18 pages uses it.

Contact us page examples HTML

The section below is a complete contact page in one file, written in the same plain style as our HTML website example: semantic elements, an <address> block with tel: and mailto: links, and a four-field form with real <label> elements and no placeholder-as-label. Save it as contact.html and open it in a browser.

html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Contact Larkspur Café</title>
  <meta name="description" content="Call, email, or send a message to Larkspur Café. We reply within one business day." />
  <style>
    :root {
      --ink: #1f2937;
      --muted: #6b7280;
      --accent: #b45309;
      --paper: #fdfaf5;
      --line: #e5e7eb;
    }
    * { box-sizing: border-box; }
    body {
      margin: 0;
      font-family: Georgia, "Times New Roman", serif;
      color: var(--ink);
      background: var(--paper);
      line-height: 1.6;
    }
    .container { max-width: 960px; margin: 0 auto; padding: 0 20px; }
    header { background: #292524; color: #f5f5f4; }
    .header-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 10px;
      padding: 14px 0;
    }
    .brand { font-size: 1.3rem; font-weight: bold; margin: 0; }
    nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 22px; }
    nav a { color: #e7e5e4; text-decoration: none; }
    nav a:hover, nav a:focus { color: #ffffff; text-decoration: underline; }
    main { padding: 40px 0 60px; }
    h1 { font-size: 2rem; margin: 0 0 6px; }
    .lede { color: var(--muted); margin: 0 0 28px; }
    .columns { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
    @media (max-width: 700px) { .columns { grid-template-columns: 1fr; } }
    form { display: grid; gap: 14px; }
    label { font-weight: bold; }
    .hint { font-weight: normal; color: var(--muted); }
    input, textarea {
      width: 100%;
      font: inherit;
      padding: 10px 12px;
      border: 1px solid #9ca3af;
      border-radius: 4px;
      background: #ffffff;
    }
    textarea { min-height: 140px; resize: vertical; }
    button {
      font: inherit;
      padding: 10px 18px;
      border: 0;
      border-radius: 4px;
      background: var(--accent);
      color: #ffffff;
      cursor: pointer;
    }
    button:hover, button:focus { background: #92400e; }
    .details h2 { font-size: 1.1rem; margin: 0 0 8px; color: var(--accent); }
    address { font-style: normal; margin: 0 0 20px; }
    .hours { margin: 0 0 20px; padding: 0; list-style: none; }
    .hours li { display: flex; justify-content: space-between; border-bottom: 1px solid var(--line); padding: 6px 0; }
    footer { background: #292524; color: #a8a29e; text-align: center; padding: 16px 0; font-size: 0.9rem; }
  </style>
</head>
<body>
  <header>
    <div class="container header-inner">
      <p class="brand">Larkspur Café</p>
      <nav aria-label="Main">
        <ul>
          <li><a href="index.html">Home</a></li>
          <li><a href="menu.html">Menu</a></li>
          <li><a href="contact.html" aria-current="page">Contact</a></li>
        </ul>
      </nav>
    </div>
  </header>

  <main class="container">
    <h1>Contact Larkspur Café</h1>
    <p class="lede">Send a message, call, or drop in. We reply to messages within one business day.</p>

    <div class="columns">
      <section aria-labelledby="form-heading">
        <h2 id="form-heading">Send us a message</h2>
        <form action="/contact" method="post">
          <div>
            <label for="name">Your name</label>
            <input id="name" name="name" type="text" autocomplete="name" required />
          </div>
          <div>
            <label for="email">Email address</label>
            <input id="email" name="email" type="email" autocomplete="email" required />
          </div>
          <div>
            <label for="phone">Phone <span class="hint">(optional)</span></label>
            <input id="phone" name="phone" type="tel" autocomplete="tel" />
          </div>
          <div>
            <label for="message">Message</label>
            <textarea id="message" name="message" required></textarea>
          </div>
          <div>
            <button type="submit">Send message</button>
          </div>
        </form>
      </section>

      <section class="details" aria-labelledby="details-heading">
        <h2 id="details-heading">Visit or call</h2>
        <address>
          Larkspur Café<br />
          12 Eastside Avenue<br />
          Springfield, OR 97477<br />
          <a href="tel:+15550100000">(555) 010-0000</a><br />
          <a href="mailto:hello@larkspur.example">hello@larkspur.example</a>
        </address>
        <h2>Hours</h2>
        <ul class="hours">
          <li><span>Monday to Friday</span><span>7:00 am to 5:00 pm</span></li>
          <li><span>Saturday</span><span>8:00 am to 3:00 pm</span></li>
          <li><span>Sunday</span><span>Closed</span></li>
        </ul>
        <p><a href="https://www.google.com/maps/search/?api=1&amp;query=12+Eastside+Avenue+Springfield+OR">Get directions</a></p>
      </section>
    </div>
  </main>

  <footer>
    <div class="container">© 2026 Larkspur Café · 12 Eastside Avenue, Springfield · (555) 010-0000</div>
  </footer>
</body>
</html>

The form needs somewhere to send its data. On its own, a browser will submit it to /contact and get an error, because no server is listening there. The usual fixes are a form service that gives you an endpoint to put in the action attribute and emails you each submission, the form handling built into your host or CMS, or a few lines of server code of your own. Whichever you use, send a test message and find it in the inbox before launch; the website launch checklist has that step. If the page is part of a larger site, the website structure examples show where Contact sits in the menu, which is almost always last.

Three details in the code worth keeping even if you change everything else: every <input> has a <label> tied to it with for and id; the phone number is a tel: link with the country code; and the <address> element holds the contact details so assistive technology and search engines can recognise them.

Contact page checklist

TemplateContact page checklist
  1. A heading that names the action (Contact, Book a call, Start a project) and one line on when you reply
  2. Form with three to five fields: name, email, message, plus phone (optional) or a topic dropdown if you need to route
  3. A visible <label> for every field; placeholders only as examples, never as the label
  4. Required fields marked in the code as well as with an asterisk, and the phone field left optional
  5. Phone number as a tel: link with the country code, if you take calls
  6. Email as a mailto: link or a form, and a note about which to use for what
  7. Street address in an <address> element and a map link or embedded map, if customers visit
  8. Opening hours next to the form, kept identical to the footer and your Google Business Profile
  9. A stated response time (within one business day, weekdays 9 to 5)
  10. Routing for sales, support, press, or jobs only if those go to different people
  11. No pre-ticked newsletter checkbox on the contact form
  12. Form backend or form service connected and a test message received before launch
  13. Spam protection that does not block real people (a honeypot field before a CAPTCHA)
  14. Tested on a phone: the tel: link dials, the map link opens, and the form can be submitted

For businesses with several locations, give each office its own card with address, phone, and hours, as the HKM office links and Jessica Hische's shop addresses do.

FAQ

Frequently asked questions

What goes on a contact us page?
A contact page needs one main way to reach you (a short form or an email address), a phone number as a tap-to-call link if you take calls, your street address and opening hours if people visit, a line that says when you reply, and separate routes for sales, support, or press only if those go to different people. Of the 18 real pages checked for this article, every visible form asks for a name, an email address, and a message, 8 show a phone number, 6 show an address, and only 5 state when they reply. Keep the rest of the page short: a FAQ block can absorb repeat questions, and social links belong in the footer.
Should I use a contact form or an email link?
Use a form when you want to route or qualify messages, for example with a topic dropdown or an order number field, and a plain mailto: link when you want the lowest possible barrier or have no form backend. Many sites do both: a form for new inquiries and an email address for everything else. Model Remodel and Clearleft show both; Oh Dear and Bench use only email and phone. If you choose a form, keep it to three to five fields with visible labels. The Nielsen Norman Group's form usability recommendations put keeping forms short first and advise against placeholder text as labels.
Should I list my phone number on my contact page?
List it if you can answer it. A phone number is the fastest route for local service businesses and the most trusted signal for people deciding whether a business is real, which is why Hiller, Model Remodel, Schweiger, HKM, and Bench all make it a tap-to-call link. Leave it off if calls would interrupt work you cannot pause, as the four personal sites in this article do. Whatever you decide, do not print a number you never answer; a stated email response time is better than an unanswered line. If you list it, wrap it in a tel: link so it dials on a phone.
Do I need to show my address if I work from home?
No. A street address belongs on the contact page when customers visit it; if you work from home and go to the customer, list the areas you serve and a city instead. Of the 18 pages checked here, the 6 that show an address all have a studio, shop, office, or restaurant that people walk into. Tradespeople in forum threads on this question usually settle on the same answer: a service area and a phone number, with a registered or postal address where the law or a directory listing requires one. If you need an address for invoices or a Google Business Profile, a mailbox or registered office address can serve that purpose without inviting visitors.
Do I need a contact page if every page has a contact box?
Yes, keep one. A contact form on every page helps visitors who are ready to write, but a dedicated page is what people look for in the menu, what search engines show for "[business] contact", and where your address, hours, phone, and routing can live in full. The page can be short. Bench and Oh Dear have no form at all, just phone numbers and department emails. Link the menu item to the page and keep the per-page box as a shortcut; the two are not in competition.
Will showing my email address get it spammed?
Some, yes. Any address printed in a page's HTML can be collected by harvesters, which is one reason 12 of the 18 pages here show no email address and rely on a form. The practical middle ground is what Jessica Hische and Field Notes do: show the address through a script-based protection so a person sees it and a crawler does not. Alternatives are a form with a honeypot field, a dedicated address such as hello@ that you can retire, or a spam filter you already trust. Do not hide the address so well that a human cannot find it; a visible address is still the easiest way for a customer to reply later.
How many fields should a contact form have?
Three to five. Name, email, and message are enough for most businesses; add a phone field marked optional if you call people back, and a topic dropdown if different kinds of mail go to different people. In the 18 real examples here, 11 of the 13 visible forms have between 4 and 6 fields and the median is 5. The Nielsen Norman Group's first form recommendation is to keep forms short, and it describes cutting one of its own forms from six fields to two. The exception is a business that wants only fully qualified leads, such as the remodeler in this list whose form has 14 fields; expect fewer, more serious submissions.

Where to go next

A contact page works when a visitor can reach you in one step and knows what happens next. Start from the five items at the top of this page, copy the HTML section, and borrow the specifics from the example closest to your business: a topic dropdown from Franklin Barbecue or Postmark, a response promise from Hiller, directions from Clearleft, or a page of "who to email for what" from Jessica Hische. For the rest of the site, see the business website examples and the construction website examples for how trades handle the quote form on the homepage, the website structure examples for where Contact sits in the menu, and the website launch checklist for testing the form, the phone link, and the map before you go live. The full website examples library has more.

Examples