<p>As far as 'setting availablity' goes, one could choose to make a 'services' section with a Matrix field that contains a DateTimeField. That way, the client can create a new Matrix Block for each available time span. The {% cache %} tag will help you in speeding this up on the frontend.</p>

<p>For booking, you could:</p>

<ul>
<li>A: Make a 'bookings' section, with a related content field 'service'. Fill this section with a <a href="http://buildwithcraft.com/docs/templating/entry-form" rel="nofollow">frontend Entry form</a>, set post and expiry dates to the time span of the visitor's choice. You could now display a list of bookings on the frontend (behind a login), or have your client manage bookings through the CP's content tab.</li>
<li>B: Make a plugin to handle bookings. This would be my preferred approach.</li>
</ul>

<p>To handle payments, you could use an existing plugin (<a href="http://squarebit.co.uk/plugins/charge" rel="nofollow">Charge</a>, for example) or build your own.</p>

CC BY-SA 3.0
2014-09-03T07:59:37.010Z
2014-09-03T07:59:37.010Z
Paul
<p>I'm about to start building out a site that requires a booking system to be setup within it. The site owner should be able to set availability (days and times with time-frames) and allow the visitors to book/reserve available services within the available time-frames and make a payment.</p>

<p>Any suggestions on how one might go about this? I know the request is pretty vague, just looking for some broad strokes to help me kick off in the right direction.</p>

<entries>
Booking/Reservation system
# Booking/Reservation system

(Asked by: username_0 on 2014-09-03)

I'm about to start building out a site that requires a booking system to be setup within it. The site owner should be able to set availability (days and times with time-frames) and allow the visitors to book/reserve available services within the available time-frames and make a payment.

Any suggestions on how one might go about this? I know the request is pretty vague, just looking for some broad strokes to help me kick off in the right direction.

**Tags:** entries


---

## 1 answers

### Answer by username_1 on 2014-09-03. Score: 1 | Accepted answer

As far as 'setting availablity' goes, one could choose to make a 'services' section with a Matrix field that contains a DateTimeField. That way, the client can create a new Matrix Block for each available time span. The {% cache %} tag will help you in speeding this up on the frontend.

For booking, you could:

* A: Make a 'bookings' section, with a related content field 'service'. Fill this section with a [frontend Entry form](http://buildwithcraft.com/docs/templating/entry-form), set post and expiry dates to the time span of the visitor's choice. You could now display a list of bookings on the frontend (behind a login), or have your client manage bookings through the CP's content tab.
* B: Make a plugin to handle bookings. This would be my preferred approach.

To handle payments, you could use an existing plugin ([Charge](http://squarebit.co.uk/plugins/charge), for example) or build your own.


---

