hform/forms

Booking form HTML template

An appointment request form for consultations, viewings, salons and services booked by conversation rather than by calendar software. The visitor proposes a date; you confirm by email — no double bookings, no plugin.

The form

Use this template — free → Copied ✓

Opens the builder with this exact form loaded — press Finish there and your form gets its own address and page, with messages emailed to you.

Prefer the raw HTML?

⚠ As-is, this code has a placeholder address — messages sent through it go nowhere. Use the button above to get a working address (free), or point the form's action at your own server.

<style>
  .hf-form { display: grid; gap: 0.75rem; max-width: 28rem; font-family: system-ui, sans-serif; }
  .hf-form label { font-weight: 600; font-size: 0.9rem; }
  .hf-form input, .hf-form textarea, .hf-form select {
    width: 100%; padding: 0.5rem 0.6rem; font: inherit;
    border: 1px solid #ccc; border-radius: 6px; box-sizing: border-box;
  }
  .hf-form button {
    justify-self: start; padding: 0.55rem 1.4rem; font: inherit; font-weight: 600;
    background: #0b6e4f; color: #fff; border: none; border-radius: 6px; cursor: pointer;
  }
  .hf-hp { position: absolute; left: -9999px; }
</style>

<form class="hf-form" action="https://example.com/your-endpoint" method="POST">
  <label for="name">Name</label>
  <input type="text" id="name" name="name" required>
  <label for="email">Email</label>
  <input type="email" id="email" name="email" required>
  <label for="phone">Phone</label>
  <input type="tel" id="phone" name="phone" required>
  <label for="preferred-date">Preferred date</label>
  <input type="date" id="preferred-date" name="preferred-date" required>
  <label for="preferred-time">Preferred time</label>
  <select id="preferred-time" name="preferred-time" required>
    <option>Morning</option>
    <option>Midday</option>
    <option>Afternoon</option>
    <option>Evening</option>
  </select>
  <label for="what-is-the-booking-for">What is the booking for?</label>
  <textarea id="what-is-the-booking-for" name="what-is-the-booking-for" rows="5"></textarea>
  <!-- honeypot: humans never see this; bots fill it in. Drop submissions where it has a value. -->
  <input class="hf-hp" type="text" name="website" tabindex="-1" autocomplete="off" aria-hidden="true">
  <button type="submit">Request booking</button>
</form>

Adding it to your site? Step-by-step guides: WordPress, Shopify, Wix, Squarespace, Webflow or a static site.

Fields in this template

Tips for a booking form that works

Questions

Can this form show my real availability?

No — a static form can’t read your calendar. That’s a feature at low volume (you stay in control by confirming each request), but if you need live availability, you need booking software rather than a form.

Why require a phone number here?

Same-day changes happen with appointments, and email is too slow for "running 15 minutes late". Drop the requirement if your bookings are all far in advance.

From the same maker

Need more than a form?

Tentmaker Stores gives you a complete online store — product pages, checkout and everything in between. Built for small makers and niche sellers.