To build a booking form in WordPress, install Giraforms Pro, add a Form Container block to any page, and insert the Booking field. In the block settings, configure available days, time slots, and per-slot capacity. Email confirmations are sent automatically to both the submitter and the admin after each booking. This is a Giraforms Pro feature.
If your business relies on appointments — consultations, personal training sessions, salon visits, guided tours, co-working reservations — an online booking form is one of the highest-value things you can add to your WordPress site. Letting customers self-schedule eliminates back-and-forth emails, reduces no-shows with automatic confirmations, and keeps your calendar full even when you're offline.
According to a 2023 Statista survey, 70% of consumers prefer to book services online rather than by phone or email — and that preference is growing year over year among all age groups.
What makes a good WordPress booking form?
A functional booking form needs more than just a date field. It needs a visual calendar picker so users can select an available date intuitively, time slot selection so they know exactly when they're booking, capacity limits so you don't get double-booked, and automatic email confirmations so both you and the customer have a record. Optional but high-value additions include payment at time of booking (for deposits or prepayment) and the ability to block out unavailable periods.
Requirements: Giraforms Pro
The Booking field is a Giraforms Pro feature. The free version of Giraforms covers standard form types (contact, feedback, lead gen), but booking functionality — with calendar, time slots, and capacity management — requires the Pro license starting at $39/year. See the Booking System feature page for a full overview.
Step 1 — Install Giraforms Pro
Download the Giraforms Pro ZIP from your customer dashboard at customers.freemius.com. In WP Admin, go to Plugins → Add New → Upload Plugin, select the ZIP, and install. Activate the plugin, then go to Giraforms → License to activate your Pro key. All Pro features, including the Booking field, become available immediately.
Step 2 — Create a new form and insert the Booking field
Go to Pages → Add New, give the page a title (e.g., "Book an Appointment"), and insert a Form Container block. Start with a blank form. Then, inside the Form Container, click the + inserter and search for "Booking". Select the Booking field to insert it. The field renders a calendar widget that your visitors will use to select a date and time.
Step 3 — Configure available days and time slots
Select the Booking field block. In the block settings panel on the right, you'll find the availability configuration. Set:
- Available days: toggle which days of the week are bookable (e.g., Monday through Friday only)
- Slot start time: when the first slot of the day begins (e.g., 9:00 AM)
- Slot end time: when the last slot can be booked (e.g., 5:00 PM)
- Slot duration: the length of each time slot (e.g., 30 minutes, 60 minutes)
Giraforms automatically calculates the available slots for each day based on these settings. If you set 9:00 AM to 5:00 PM with 60-minute slots, visitors will see 8 available time options per day.
Step 4 — Set booking capacity per slot
In the Booking field settings, find the Max bookings per slot option. Enter the maximum number of bookings you accept simultaneously for each time slot — typically 1 for individual consultations, higher for classes or events. Once a slot reaches capacity, Giraforms automatically removes it from the calendar. Future visitors won't see full slots as available options. No manual tracking or update required on your end.
Blocking dates: You can mark specific dates as unavailable (holidays, vacations, maintenance days) in the Booking field settings. Blocked dates appear greyed out in the calendar and cannot be selected.
Step 5 — Add supporting fields to your form
The Booking field handles date and time selection, but you'll want to collect contact details too. Add these fields using the block inserter inside the Form Container, positioned before or after the Booking field:
- Text field — First and last name
- Email field — Required for sending the confirmation email
- Phone field — Optional, useful for SMS reminders
- Dropdown — Service type (e.g., "Initial consultation", "Follow-up", "90-minute session")
- Textarea — Notes or special requests
Step 6 — Configure confirmation emails
Select the Form Container block and open the Email Notifications tab in the block settings. Set up two notifications:
- Admin notification: recipient = your email address, subject = "New booking: {name} on {booking_date} at {booking_time}"
- Customer confirmation: recipient =
{email}(the submitter's email field), subject = "Your booking is confirmed", body = include{booking_date},{booking_time}, service details, and your contact info for changes/cancellations
The customer confirmation is critical — it sets expectations, reduces no-shows, and gives the customer something to reference when they show up.
Step 7 — Optionally add Stripe payment for deposits
For paid bookings (consultation deposits, class pre-payment, service fees), add a Stripe Payment field to the same form. Configure the amount (fixed deposit or dynamic based on service selection) in the field settings. Payment is collected at the same time as the booking, before the time slot is confirmed. See our complete guide on adding a Stripe payment form to WordPress.
Step 8 — Publish and test
Publish the page. Visit it from a browser and test the full flow: select a date, pick a time slot, fill in your contact details, and submit. Check that both email notifications arrive. Check the Giraforms → Submissions panel to confirm the booking was recorded. If you've added Stripe payment, use Stripe test mode cards to verify the payment flow. Once everything looks good, the booking form is live.
Common booking form use cases
The Giraforms booking system is flexible enough for many service types: individual service appointments (hairdresser, physiotherapist, personal trainer — one slot per time, capacity = 1), group classes (yoga, cooking workshops — capacity = 10 or 15 per slot), consultation calls (lawyers, accountants, coaches — calendar sync with Calendly-like UX), equipment rental (studios, vehicles, instruments — availability by day), and co-working desks (daily or hourly bookings with defined capacity).