Online bookings (Booking module)
The booking module lets customers book appointments online themselves, without needing to call or drop by the service. The customer opens a public booking page (you share the link on your website, Google, SMS…), fills in the form, picks an available slot, and submits.
The booking module is paired with the service module but works as a standalone unit – it also works without PDR, and without the service module if you use only generic services (e.g. hairdresser, beautician, personal trainer). This article covers both use cases.
Workflow – from a customer click to a finished service
- Customer opens the public link – e.g.
https://app.kigo.cloud/booking/ABC-123-DEF. The page shows your company info (name, address, logo, colors), service descriptions and the booking form. - Customer picks a service and date – for vehicle service: picks a service type and a date. For generic service: picks an employee and a service.
- System shows available slots – generated from the working-hours configuration minus existing bookings and calendar events.
- Customer fills in personal data – name, surname, email, phone, note, and for a vehicle: make, model, year, VIN, license plate, mileage.
- Customer submits the booking – saved to the database with status Pending. The customer receives a confirmation email.
- Admin gets a notification – email to the configured address + a notification in the admin UI.
- Admin confirms the booking – in Booking → Bookings. Status becomes Confirmed. The customer gets a second email about the confirmation.
- Automatic reminder – X hours before the appointment, the system automatically sends an email reminder.
- Arrival at the service – from the booking, one click creates a vehicle reception (or it is done automatically if configured).
- Service execution – continues along the classic service workflow, as described in the main service article.
- Closing – the booking is marked as Completed, or if the customer did not show up, No-show.
Booking module configuration
Open Booking → Settings. Settings are per business unit (and per service location, if you use multi-location).
Basic settings
| Setting | Description | Default |
|---|---|---|
| Active | Turns the public booking page on/off. If off, the link returns an unavailability message. | Off |
| Booking type | Vehicle service (uses the service module) or Generic service (uses generic services with employees). | Vehicle service |
| Page title | Title shown to the customer on the public page (e.g. "Book a service appointment"). | |
| Description | Text below the title – describe what the customer needs to know (hours, notes, instructions). | |
| Primary color | Hex color used for buttons and highlights. Match with your company branding. | #3498db |
| Custom CSS | Additional CSS for advanced look adjustments. |
Slots and capacity
| Setting | Description | Example |
|---|---|---|
| Slot duration (min) | How long a single slot is in the calendar. Smaller = more appointments. | 15, 30, 60 |
| Max bookings per slot | How many customers can book the same slot (for parallel work stations, multiple technicians simultaneously). | 1 (one slot = one customer) |
| Max days in advance | How far into the future the customer can book. Prevents bookings 2 years ahead. | 30, 60, 90 |
| Min hours in advance | Minimum time between booking and appointment. E.g. 24 – the customer cannot book less than 24h in advance. | 2, 12, 24 |
| Min hours to cancel | The customer cannot cancel if fewer than X hours are left until the appointment. | 2, 6, 24 |
Working hours (per day of the week)
For each day of the week, enter the working hours range in the format HH:MM-HH:MM. Leave empty if the day is not a working day.
| Day | Example |
|---|---|
| Monday | 08:00-16:00 |
| Tuesday | 08:00-16:00 |
| Wednesday | 08:00-16:00 |
| Thursday | 08:00-18:00 |
| Friday | 08:00-16:00 |
| Saturday | 09:00-13:00 |
| Sunday | (empty – closed) |
Lunch break – additional field in the format HH:MM-HH:MM (e.g. 12:00-13:00) that applies to all days. Slots within the break are not generated.
Reminders and notifications
| Setting | Description |
|---|---|
| Reminder enabled | The system automatically sends an email reminder to the customer before the appointment. |
| Hours before | How many hours before the appointment the reminder is sent (e.g. 24 = one day before). |
| Auto-confirm | Every booking is automatically confirmed without manual review. The customer immediately gets the confirmation. |
| Email confirmation | The customer gets a confirmation after submitting the booking. |
| Notification email | The address where notifications about new bookings are sent (admin). |
Location info (override)
If you want the public booking page to show different info from the general business unit settings (e.g. a different address, a different map), enter it here:
- Location name – optional override
- Location address – optional override
- Google Maps URL – optional override (if empty, auto-generated from name + address)
How free slots are generated
Slots are calculated in real time as follows:
- Day-of-week check – if no working hours are defined for that day, there are no slots.
- Blocked date check – there is a list of manually blocked dates (holidays, company-wide leave). Blocked day = no slots.
- Load working hours – e.g. 08:00-16:00 for Monday.
- Generate slots – in steps of Slot duration (e.g. 30 min): 08:00, 08:30, 09:00, 09:30, …
- Skip lunch break – slots that overlap with the break are not generated (e.g. 12:00, 12:30 are skipped if the break is 12:00-13:00).
- Check existing bookings – the system counts how many bookings already exist for each slot. If the count equals Max bookings per slot, the slot is full.
- Check service events – slots overlapping already created service receptions (from the service module) are marked busy. This prevents bookings from colliding with manually created services.
- Min-hours-in-advance check – slots closer than min_hours_in_advance from now are shown but marked unavailable (or not shown at all).
Slots per employee (generic services)
For the booking type Generic service, slots are calculated per employee. Each employee has their own "channel" of free slots. The customer first picks an employee and a service, then sees that employee's available slots. This is useful for beauty salons, hair salons, private doctors, and similar businesses.
Services in the booking module
Vehicle service
When the booking type is Vehicle service, the list of services the customer sees comes from Service types. Under Booking → Services you can choose which service types are visible on the public page and in what order. You can e.g. hide "Internal service" or "Factory recall", which are not for customers.
The appointment duration is pulled from the Duration (min) field of the service type (e.g. "Oil change" = 60 min, "Diagnosis" = 30 min). The system then blocks the appropriate number of 30-minute slots in the calendar.
Generic services (Bookable service)
When the booking type is Generic service, instead of service types you define your own services under Booking → Generic services. Fields:
| Field | Description |
|---|---|
| Name | Service name shown to the customer (e.g. "Men's haircut", "60 min massage", "Consultation"). |
| Description | Short service description. |
| Price | Price shown to the customer (optional, can be a "from" price). |
| Duration (min) | How many slots the service takes. |
| Employees | Which employees perform this service. The customer chooses among them. |
| Image | Optional service image for the public page. |
| Sort order | List ordering. |
| Active | If off, not shown to the customer. |
A customer can pick multiple generic services in the same booking (e.g. "haircut + shave"). The system sums the durations and blocks the corresponding slots.
Blocked dates
Under Booking → Blocked dates you define dates when customers cannot book an appointment, regardless of the working-hours settings:
- Public holidays (Christmas, New Year, national holidays…)
- Company-wide leave (e.g. 1-15 August)
- Individual non-working days (medical check-up, seminar, equipment failure)
Blocked dates are shown to the customer as gray/unavailable in the calendar.
Booking statuses
Every booking goes through one of these statuses:
| Status | Color | Meaning |
|---|---|---|
| Pending | Yellow | The customer has booked, waiting for admin confirmation (unless auto-confirm is on). |
| Confirmed | Green | Admin has confirmed. The customer has a confirmation email, the system will also send a reminder. |
| Rejected | Red | Admin has rejected (no capacity, unsuitable work type, client on a "blocklist"). The customer gets a notification. |
| Cancelled | Gray | The customer or admin has cancelled the booking. |
| Completed | Blue | The appointment has passed and the service was performed. The booking is archived. |
| No-show | Red | The customer did not turn up. Used for statistics and identifying unreliable customers. |
Email notifications
The booking module automatically sends the following emails:
| Event | Recipient | When |
|---|---|---|
| New booking | Customer | Immediately on submission (if email confirmation is enabled) |
| New booking | Admin | Immediately, to the address from settings |
| Confirmed | Customer | When admin clicks Confirm (or immediately with auto-confirm) |
| Rejected | Customer | When admin clicks Reject |
| Cancelled | Customer | When admin or customer cancels |
| Reminder | Customer | X hours before the appointment (automatic background task) |
{client_name}, {booking_date}, {service_name}, {cancel_link}.
Public URL and how to share it
Every business unit has a unique UUID (universal identifier) that forms the public booking URL:
https://app.kigo.cloud/booking/[BUSINESS-UNIT-UUID]
How to get the link:
- Open Booking → Settings.
- The Public link is shown at the top with a copy button.
- Copy and share:
- On your website as a "Book appointment" button.
- In your Google Business Profile (My Business → Bookings).
- In your Facebook and Instagram bio.
- In your email signature.
- Via a QR code on business cards, at the reception, on illuminated signs.
- As an SMS link after a phone call.
Security and spam protection
The public booking page is open to everyone, so protection against spam bookings is important. The system implements:
- IP rate limiting – one IP address cannot make dozens of bookings within a minute.
- Email validation – format is checked, and periodically (optionally) verification is sent.
- Min hours in advance – prevents last-minute troll bookings.
- Trace data – the system records IP address and user agent for each booking (for audit).
- Manual confirmation – if you don't use auto-confirm, the admin reviews each booking before it becomes active.
Access rights
The booking module requires the following rights for employees:
- Booking – settings – usually admins only, for editing the public page, working hours and templates.
- Booking – view bookings – who may see the list of incoming bookings.
- Booking – confirm / reject – who may change the status (confirm, reject, cancel).
- Booking – only own – an employee only sees bookings where they are the assigned employee (for generic services).
Frequently asked questions
| Question | Answer |
|---|---|
| Can I have two booking pages with different working hours? | Yes. Create two service locations, each with its own booking configuration. Each gets its own public link. |
| What if I want the customer to pay at booking time? | The booking module does not currently offer integrated payment – payment happens at arrival. A deposit can be charged manually through an advance invoice after confirmation. |
| Can I accept a booking for multiple vehicles from the same customer? | Each booking = one vehicle. The customer repeats the process for each vehicle, or you agree by phone and manually create the reception. |
| How do I prevent no-shows? | Enable the email reminder X hours before the appointment. You can also request a phone number and send an additional SMS reminder (in preparation). Repeat no-show customers can be added to a "blocklist" (manually rejecting each new booking). |
| What happens if a customer cancels? | Status becomes Cancelled, the slot is freed and becomes available to other customers. The admin receives a notification. |
| Can the customer change their booking? | Yes. The confirmation email contains a link to cancel or change. Changes are only possible if there are more than min hours to cancel hours until the appointment. |
| Do I manually convert a booking into a reception? | From a booking, one click creates a vehicle reception in the service module with pre-filled data (customer, vehicle, service type, appointment). After that, the classic service workflow applies. |
Related articles
- Service module – full guide – main article, context for the whole service module.
- PDR – damage assessment and pricebooks – for PDR bookings.
- Application settings – global configuration, including working hours.