Booking & Appointments: complete guide
Install, configure and run online appointments: services, staff, group sessions, exceptional hours, deposit, back-office calendar, emails and reminders.
Overview
The Booking & Appointments module (dfbooking) adds online appointment booking to PrestaShop 8 and 9. The customer picks a service, a staff member or “First available”, then a day and a time. Available times are calculated in real time from schedules, service duration, break time and existing bookings.
A deposit can be required: it is paid through a native PrestaShop order, so with the payment methods already active on your shop. Your team works from a back-office calendar, and customers manage their own appointment from a private link received by email.
This documentation covers version 1.2.0.
Key concepts
- Service: what the customer books (haircut, consultation, workshop). It has a duration, a break time, a price per person, a number of places per slot and, optionally, a deposit, a group and a photo.
- Staff member or resource: the person, room or machine performing the service. Each one has a weekly schedule and, optionally, a photo and an email address.
- Slot: a bookable time, generated from the schedule and the slot interval.
- Statuses: Awaiting payment, Awaiting confirmation, Confirmed, Cancelled, Completed, No-show.
Installation and upgrade
- Open Modules > Module Manager and click Upload a module.
- Drop the
dfbooking.ziparchive, then click Configure.
Installation creates the tables, the Bookings menu (Calendar, Bookings, Services, Staff and resources), a hidden technical product “Booking deposit” and the img/dfbooking/ folder for photos.
To upgrade from an earlier version, install the new ZIP over it: the upgrade scripts add the new columns and tables, generate private links for existing bookings and add the Calendar tab. Your bookings, services and schedules are kept.
Do not delete the “Booking deposit” product: it carries the deposit amount in the cart. It is hidden from the catalogue and removed automatically on uninstall.
Quick start
The configuration page shows a checklist until these three steps are done:
- Create a staff member in Bookings > Staff and resources. A Monday to Friday schedule, 9:00-12:00 and 14:00-18:00, is suggested by default.
- Create a service in Bookings > Services and tick the staff members who perform it.
- Add the booking page link (shown in the configuration) to your menu or a CMS page.
Add ?service=ID to the booking page URL to open a service directly, for example from a CMS page presenting it.
Configuration
Time slots
- Slot interval (30 min by default): gap between two proposed start times.
- Minimum notice (120 min by default): customers cannot book a slot starting sooner.
- Booking window (60 days by default): how far ahead the calendar goes.
- Confirm bookings automatically: when disabled, bookings without deposit arrive as “Awaiting confirmation”.
Customer form
- Require a customer account and phone number required.
- Consent checkbox: choose a CMS page (privacy policy, terms); a mandatory checkbox appears before confirmation.
- Booking conditions: short text per language shown before confirmation and on the appointment page (cancellation, deposit refund, lateness).
Deposit, cancellation and changes
- Hold an unpaid slot for (30 min by default): after this delay without an order, the slot is released.
- Online cancellation and online rescheduling by the customer, enabled separately.
- Online changes allowed until X hours before the appointment (24 by default).
Notifications and reminders
- Staff notification email: receives every new booking, cancellation and change (empty = shop email).
- Also notify the assigned staff member: copy sent to the email set on the staff member.
- Reminder email X hours before (24 by default, 0 to disable).
- Attach a calendar file (.ics) to confirmation, change and cancellation emails.
- Mark past appointments as completed automatically.
Booking page
- Accent colour: buttons, selected day and selected time. Pick a colour that stays readable on white.
- Page URL:
/reservationby default, can be changed (for example/book).
Services
In Bookings > Services, each service has:
- Name, group and description, per language. Services in the same group are shown together, with filters as soon as there are at least two groups.
- Photo (JPG, PNG or WebP, 5 MB max), shown as a thumbnail.
- Duration and break after each appointment (cleaning, preparation).
- Places per slot: 1 for an individual appointment, more for a group session.
- Price per person (0 hides the price) and deposit: none, percentage of the price or fixed amount per person.
- Colour used in the calendar, and the staff members who perform the service.
A service is only offered online when at least one active staff member is linked to it. The “Staff” column of the list flags services without staff.
Above six services, a search field appears above the list on the booking page.
Staff and schedules
In Bookings > Staff and resources, fill in the name, role, description, a photo (shown in a circle), a colour and, optionally, an email address for notifications.
Weekly schedule
For each day, enter up to three time ranges. Use two ranges for a lunch break. A day without any range is a day off. The Copy to weekdays button copies Monday’s ranges to Tuesday through Friday, and Clear empties a day.
Personal calendar on the phone
Once the staff member is saved, their profile shows a private calendar link. In Google Calendar (Other calendars > From URL) or on an iPhone (Settings > Calendar > Accounts > Add subscribed calendar), their appointments appear and update automatically. A link for the whole team is available in the configuration.
This link gives access to customer names and phone numbers. Share it only with the person concerned.
Group sessions
With more than one place per slot, the customer chooses the number of participants and sees the places left under each time. Several bookings can share the same start time until places run out; price and deposit are multiplied by the number of participants.
Closures and exceptional hours
The configuration page has two panels:
- Closures and days off: a period without any slot, for the whole shop or one staff member. If bookings already exist in the period, a warning says so: they are not cancelled automatically.
- Exceptional opening hours: special hours for one date (late opening, Sunday before Christmas, short day), with an optional second range. They replace the usual week on that day only.
Priority for a given date: a closure always wins; then exceptional hours set for the staff member, then those set for the whole shop; otherwise the usual week.
The deposit
- The booking is created as “Awaiting payment” and the slot is held.
- The module prepares a cart holding only the deposit and sends the customer to your checkout. The cart they had is set aside.
- Immediate payment (card, PayPal): the booking becomes Confirmed and emails are sent.
- Deferred payment (bank transfer, cheque): the slot stays held and the booking is confirmed when you move the order to a paid status.
- Order cancelled or in error: the appointment is cancelled and the customer notified.
- Abandoned payment: the slot is released after the configured delay.
After the order, the customer’s original cart is restored, and the order confirmation page shows the appointment with a link to manage it.
If a payment arrives after the delay while another customer took the slot in the meantime, the booking goes to “Awaiting confirmation” with an internal note, so that you contact the customer.
Customer booking flow
- Service: list grouped by group, with filters and search.
- Staff member: a specific person or “First available”. This step is skipped when only one staff member performs the service.
- Day and time: the calendar opens on the next available day; times are grouped into morning, afternoon and evening.
- Contact details, conditions and consent, then confirmation.
A summary shows the service, staff member, date, time, total, deposit and balance, updated live. Each completed step folds with a “Change” link.
Appointment management by the customer
After booking, the customer lands on their appointment page. It shows the summary, an “add to Google Calendar” button and an .ics file for Apple Calendar and Outlook. Depending on your settings, they can also move the appointment to another free time (keeping the same staff member or not) or cancel it.
This page is reachable from the link in every email, including for customers without an account. Logged-in customers also find their upcoming appointments and history in My account > My appointments.
Back-office calendar
Bookings > Calendar shows:
- the week view, with a staff filter;
- the day view, with one column per staff member.
An appointment’s colour bar shows the service, its border shows the status (dashed until confirmed). Closed days are hatched and a red line marks the current time.
- Click a free time to create a booking, with day, time and staff member already filled in.
- Drag and drop an appointment to move it, keeping its duration. In day view, dropping it in another column changes the staff member. A confirmation window offers to email the customer. If the slot is taken, the calendar asks before forcing.
- Click an appointment to open it.
Bookings in the back office
List
Bookings > Bookings lists appointments with filters (status, date, service, staff, customer) and CSV export.
Create a phone booking
Click New booking or a free time in the calendar. Choose the service, the staff member (or automatic assignment), the date and time; the end time is calculated from the service duration. If the email matches an existing customer, the booking is linked to them. A booking overlapping another one is refused unless you enable Save even if the time is taken.
Booking page
The booking page groups the appointment, the customer, the payment (with a link to the order), the customer message and an internal note. Quick actions are Confirm, Mark as completed, No-show, Cancel booking, Restore and Resend the email. A status change sends the matching email to the customer.
Order page
A deposit order shows a “Linked appointment” block with a link to the booking.
Emails
Six templates are provided in English, French, Spanish, German and Italian, in HTML and plain text:
- Confirmation: appointment confirmed, with .ics attached;
- Request received: booking awaiting confirmation or payment;
- Reminder: sent X hours before the appointment;
- Cancellation and Change;
- Team notification: new booking, cancellation or change by the customer. Replying to this email writes directly to the customer.
Every customer email contains the private appointment link. For a language without templates (Polish, Dutch, Portuguese), emails are sent in English.
Automatic tasks
Three tasks run in the background: sending reminders, releasing slots whose deposit was not paid in time, and marking past appointments as completed.
The configuration shows a token-protected cron URL. Call it every 15 minutes from your server cron for on-time reminders. Without a cron, tasks run during shop visits, at most every 10 minutes. The Run the tasks now button runs them immediately.
Statistics
The configuration overview shows upcoming appointments, those awaiting confirmation and, for the current month: number of appointments, booked revenue (confirmed and completed), share booked online, cancellation rate and no-show rate.
GDPR
With the official psgdpr module, a customer’s data export includes their bookings, and deleting their data anonymises their bookings (name, email, phone, message) without distorting your statistics.
Multistore and languages
Services and staff members have texts per language and per shop, and bookings belong to their shop. The module interface is provided in English, French, Spanish, German and Italian.
Uninstall
Uninstalling deletes the tables, bookings, configuration, menu, deposit product and photos. Existing orders are not modified.
Troubleshooting
No time is displayed
Check that the staff member has a schedule for that day, that the service is linked to them, that the day is not closed, and compare the minimum notice and service duration with the time ranges.
A service does not appear online
It must be active and linked to at least one active staff member.
Reminders are not sent
Check that the reminder is not set to 0 and that the booking is “Confirmed”. On a low-traffic shop, set up the cron URL.
The photo is not saved
The img/dfbooking/ folder must be writable. Also check the size (5 MB max) and format.
The booking URL returns a 404 error
Enable friendly URLs in Shop Parameters > Traffic & SEO, then clear the cache.
FAQ
Can customers book without an account?
Yes, unless you enable “Require a customer account”. They manage their appointment through the link received by email.
Can I offer “First available”?
Yes, automatically as soon as several staff members perform the service. The module assigns whoever is free at the chosen time.
How are double bookings prevented?
Availability is checked again at confirmation time, under a lock, and the back office refuses overlaps unless you force them.
Is the module compatible with PrestaShop 9?
Yes, from PrestaShop 8.0 to 9.x, single shop or multistore.