Website Examples
Contact Page Examples: 18 Real Contact Pages and What They Include
Real contact page examples checked field by field: form length, phone and email links, address, hours, response time, plus a copyable HTML contact section.
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:
- One main way to reach you: a short form, or an email address if you would rather read email
- A phone number as a
tel:link, if you take calls, so it dials on a phone - Your address and opening hours, if customers visit, with a map link or an embedded map
- A response promise: when you reply, and what happens after someone writes
- 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 page | Type | Form fields (required) | Phone | Street address | Hours | Embedded map | Stated response time | Routing | |
|---|---|---|---|---|---|---|---|---|---|
| Silent Rivers Design+Build | Remodeler, Des Moines | 5 (4) | Text only | No | Yes | Yes | No | "will get back to you promptly" | No |
| Model Remodel | Remodeler, Seattle | 14 (13) | tel: link | mailto: link | Yes | No | Yes | Not stated | No |
| Hiller | Plumbing, heating, and electrical, Tennessee | 5 (4) | tel: link | No | No | No | No | "within 24 hours" | No |
| Franklin Barbecue | Restaurant, Austin | 6 (5) | Text only | No | Yes | Yes | No | Not stated | Reason dropdown |
| Schweiger Dermatology Group | Dermatology practice group | 5 (4) | tel: link | No | No | No | No | Not stated | Topic dropdown |
| April Dunford | Positioning consultant | 4 (4) | No | No | No | No | No | Not stated | No |
| MetaLab | Design agency | 6 (4 by asterisk) | No | No | No | No | No | Not stated | No |
| Clearleft | Design agency, Brighton | Script-rendered | Text only | mailto: link | Yes | No | No | Not stated | No |
| HKM Employment Attorneys | Law firm, several offices | Embedded iframe | tel: link | No | No | No | No | Not stated | Office finder |
| Bench | Bookkeeping service | None | tel: links | No | No | No | No | "within 24 business hours" (in-app) | Sales vs. service |
| Josh W. Comeau | Developer, course author | 3 (2) | No | No | No | No | No | Not stated | No |
| Sara Soueidan | Freelance front-end engineer | 6 (5) | No | No | No | No | No | Not stated | Inquiry type dropdown |
| Ethan Marcotte | Designer, author | 4 (4) | No | No | No | No | No | Not stated | No |
| Jessica Hische | Lettering artist | None | No | Protected links | Yes | Yes (shops) | No | Not stated | By inquiry type |
| Intelligentsia Coffee | Coffee roaster and online store | 6 (0) | No | mailto: links (4) | No | No | No | "get back to you shortly" | Topic dropdown, department emails |
| Field Notes | Notebook brand and store | 5 (2) | No | Protected link | Yes | Yes | No | Not stated | Subject dropdown |
| Postmark | Email delivery service | 6 (3) plus conditional | No | No | No | No | No | "between 3am and 7pm EST, Monday to Friday" | Topic dropdowns |
| Oh Dear | Uptime monitoring | None | No | mailto: links (5) | No | Support hours | No | Not stated | By 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/
| Field | Observation |
|---|---|
| Type | Design-build remodeler, Des Moines, Iowa |
| Form | First Name, Last Name, Email, Phone, and Message, with the first four required; a "Subscribe to Silent Rivers" newsletter checkbox below the message |
| Contact details | The 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." |
| Routing | None |
| What to copy | The one-line note above the form that says what the form is for ("Submit form below to schedule") |
Model Remodel: modelremodel.com/contact/
| Field | Observation |
|---|---|
| Type | Remodeler, Seattle |
| Form | The 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 details | A tel: link, a mailto: link, the street address, and the contractor license number |
| Map | An embedded Google Map, the only one in this list |
| Other | A "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 copy | The 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/
| Field | Observation |
|---|---|
| Type | Home services company, Tennessee |
| Form | First 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 details | A 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." |
| Routing | None |
| What to copy | The 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
| Field | Observation |
|---|---|
| Type | Restaurant, Austin, Texas |
| Form | Subject, 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)") |
| Routing | The Reason dropdown sends press, parties, and donation requests to the right place without separate addresses |
| What to copy | Hours 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/
| Field | Observation |
|---|---|
| Type | Dermatology practice group with many locations |
| Form | Name, 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 details | tel: links in the header and footer; no address on the contact page, since locations have their own pages |
| Other | A "Make an Appointment" heading above the form |
| What to copy | The Topic dropdown, which separates billing and prescription questions from new-patient requests |
Professional contact page examples
April Dunford: aprildunford.com/contact
| Field | Observation |
|---|---|
| Type | Independent positioning consultant |
| Form | First 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 details | None. 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 copy | Answering common questions on the contact page; add visible labels, which the form usability research below recommends |
MetaLab: metalab.com/contact
| Field | Observation |
|---|---|
| Type | Product design agency |
| Form | Name, 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 details | None. The heading is "Say hey." |
| Routing | None, though the company-stage field qualifies the lead |
| What to copy | One qualifying question instead of six; if you mark fields required, also mark them required in the code |
Clearleft: clearleft.com/contact
| Field | Observation |
|---|---|
| Type | Design agency, Brighton, UK |
| Form | Rendered by a HubSpot script, so the fields are not in the HTML |
| Contact details | A 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 copy | Written directions. A map shows where you are; a sentence tells a visitor how to get there |
HKM Employment Attorneys: hkm.com/contact/
| Field | Observation |
|---|---|
| Type | Employment law firm with offices in several cities |
| Form | Under 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 details | A 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." |
| Routing | By office, through the city links |
| What to copy | Offering the two routes in one sentence: find the office, or use the form |
Bench: bench.co/contact
| Field | Observation |
|---|---|
| Type | Online bookkeeping and tax service |
| Form | None |
| Contact details | Two 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 copy | Separating 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/
| Field | Observation |
|---|---|
| Type | Developer and course author |
| Form | Preferred 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 copy | Three fields, and the FAQ that absorbs the questions a form would otherwise collect |
Sara Soueidan: sarasoueidan.com/contact/
| Field | Observation |
|---|---|
| Type | Freelance front-end UI engineer |
| Form | Full 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 details | None besides the form |
| Routing | The inquiry type dropdown |
| What to copy | A budget range as an optional field: it qualifies project requests without blocking a hello |
Ethan Marcotte: ethanmarcotte.com/contact/
| Field | Observation |
|---|---|
| Type | Designer and author |
| Form | Your name, Your email address, Subject, and "Write your note here", all required, plus a required radio question, "Is this spam, or a real message?" |
| Other | The heading "Drop me a line." and a newsletter sign-up below the form |
| What to copy | Labels written as questions and a Subject field, which makes the email that lands in the inbox easy to sort |
Jessica Hische: jessicahische.is/contactable
| Field | Observation |
|---|---|
| Type | Lettering artist and illustrator |
| Form | None. 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 details | Email links protected by a script, a business address in an <address> element, and two shop addresses with hours ("Wed to Sun • 12-6pm") |
| Routing | Each 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 copy | Saying 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
| Field | Observation |
|---|---|
| Type | Coffee roaster with an online store and subscriptions |
| Form | Related 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 details | Four 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 copy | Topic first, then the form, then the departments that should not use the form |
Field Notes: fieldnotesbrand.com/contact
| Field | Observation |
|---|---|
| Type | Notebook brand with an online store and a Chicago shop |
| Form | Name, 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 details | A 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 |
| Other | Shipping and returns information on the same page, above the form |
| What to copy | An 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
| Field | Observation |
|---|---|
| Type | Transactional email service |
| Form | A 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 |
| Routing | The topic dropdowns, and a separate note for sales ("Looking for sales? We do things differently.") |
| What to copy | The 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
| Field | Observation |
|---|---|
| Type | Website monitoring service, Belgium |
| Form | None |
| Contact details | Separate 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 copy | A 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, amailto: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.
Contact form or email link?
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.
+--------------------------------------------------------------+
| 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:
- Header: the normal site menu, with the phone number if you take calls
- Heading and one line: say what the page is for ("Book a discovery call", "Start a build", "Contact") and when you reply
- Form: three or four fields with visible labels, phone marked optional, one button with a verb
- Details: phone, email, address, and hours beside the form, each as a real link where it can be one
- Routing: only if different kinds of mail go to different people
- Map or directions: an embedded map if visitors drive to you, or a sentence like Clearleft's if they walk
- 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.
<!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&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
- A heading that names the action (Contact, Book a call, Start a project) and one line on when you reply
- Form with three to five fields: name, email, message, plus phone (optional) or a topic dropdown if you need to route
- A visible <label> for every field; placeholders only as examples, never as the label
- Required fields marked in the code as well as with an asterisk, and the phone field left optional
- Phone number as a tel: link with the country code, if you take calls
- Email as a mailto: link or a form, and a note about which to use for what
- Street address in an <address> element and a map link or embedded map, if customers visit
- Opening hours next to the form, kept identical to the footer and your Google Business Profile
- A stated response time (within one business day, weekdays 9 to 5)
- Routing for sales, support, press, or jobs only if those go to different people
- No pre-ticked newsletter checkbox on the contact form
- Form backend or form service connected and a test message received before launch
- Spam protection that does not block real people (a honeypot field before a CAPTCHA)
- 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?
Should I use a contact form or an email link?
Should I list my phone number on my contact page?
Do I need to show my address if I work from home?
Do I need a contact page if every page has a contact box?
Will showing my email address get it spammed?
How many fields should a contact form have?
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.