OptimoCMS Docs
Terug naar overzicht

Boekingssysteem

Online afspraken en boekingen: services, beschikbaarheid, medewerkers, vestigingen, wachtlijst, CRM, staff dashboard, herinneringen, iCal, magic links en analytics.

Wat is het boekingssysteem?

Het boekingssysteem is een widget die je activeert per website. Bezoekers kunnen online afspraken boeken: ze kiezen een service, een datum, een beschikbaar tijdslot en vullen hun gegevens in. Het systeem voorkomt automatisch dubbele boekingen en berekent beschikbare slots op basis van je openingstijden. Alle boekingslogica draait server-side (Cloud Functions). De client kan nooit rechtstreeks boekingen aanmaken in de database — dit voorkomt fraude en race conditions.

Boekingssysteem activeren

Zo schakel je het boekingssysteem in: 1. Ga naar Instellingen → Widgets 2. Activeer "Booking" 3. Na activatie verschijnen de booking admin pagina's in het zijmenu 4. Het BookingWidget-blok wordt beschikbaar in de Page Builder
Tips
  • Na activatie kun je meteen services aanmaken en beschikbaarheid instellen.

Data model (technisch)

Het boekingssysteem slaat per site vier soorten gegevens op: • Diensten (naam, duur, prijs, actief) • Medewerkers (naam, gekoppelde diensten, actief) • Weekrooster (dag, start, eind, optioneel per medewerker) • Boekingen (dienst, datum, tijdslot, klantgegevens, status) Diensten en beschikbaarheid zijn publiek zichtbaar op je website. Boekingen worden uitsluitend via de server aangemaakt.
Tips
  • Boekingen worden automatisch geoptimaliseerd voor snelle dag-overzichten.

Services beheren

Een service is wat je aanbiedt (bijv. "Knipbeurt", "Consult 30 min", "Massage 60 min"). Beheer via Booking → Services: • Naam — De naam die bezoekers zien • Duur — In minuten (bepaalt de slotgrootte) • Prijs — Optioneel, wordt getoond aan bezoekers • Aanbetaling — Optioneel bedrag via Stripe • Actief — Aan/uit schakelaar Slechts actieve services zijn zichtbaar in het BookingWidget.
Tips
  • De duur bepaalt hoe groot de tijdslots zijn. Een service van 30 minuten maakt slots van 30 minuten.

Beschikbaarheid instellen

Via Booking → Beschikbaarheid stel je een weekrooster in: • Per dag van de week: starttijd en eindtijd • Optioneel per medewerker (als je medewerkers hebt ingesteld) • Dagen zonder tijden = gesloten Het systeem berekent automatisch beschikbare slots op basis van dit rooster minus bestaande boekingen.
Let op
  • Wijzigingen in beschikbaarheid gelden meteen. Bestaande boekingen worden niet automatisch aangepast.

Hoe slots worden berekend

De Availability Engine berekent beschikbare tijdslots server-side: 1. Lees de beschikbaarheid voor de gekozen dag + eventueel medewerker 2. Genereer slots op basis van de serviceduur (bijv. elke 30 min) 3. Haal bestaande boekingen op voor die dag (status ≠ geannuleerd) 4. Filter de bezette slots eruit 5. Retourneer de vrije slots Geannuleerde boekingen blokkeren geen slots — die tijden worden weer vrijgegeven.
Tips
  • Slots worden realtime berekend. Als iemand net geboekt heeft, ziet de volgende bezoeker dat slot niet meer.

Double-booking preventie

Het systeem voorkomt automatisch dubbele boekingen: 1. Bij het aanmaken wordt de beschikbaarheid opnieuw gecontroleerd 2. Als het tijdslot inmiddels bezet is → foutmelding "Tijdslot niet meer beschikbaar" 3. Alleen als het slot nog vrij is wordt de boeking bevestigd Dit garandeert dat zelfs bij gelijktijdige verzoeken nooit twee boekingen op hetzelfde slot terechtkomen.
Tips
  • Rate limiting beschermt daarnaast tegen spam: max 30 slot-verzoeken/min en 5 boekingen/min per IP.

Medewerkers (optioneel)

Je kunt medewerkers toevoegen via Booking → Medewerkers: • Naam — Wordt getoond als je "Toon medewerkers" activeert in het widget • Gekoppelde services — Welke services deze medewerker uitvoert • Actief — Aan/uit schakelaar Bezoekers kunnen dan kiezen bij welke medewerker ze boeken. Beschikbaarheid wordt per medewerker berekend.
Tips
  • Medewerkers zijn optioneel. Zonder medewerkers boekt de bezoeker gewoon op de algemene beschikbaarheid.

BookingWidget op je website

Het BookingWidget is een blok dat je op een pagina plaatst via de Page Builder: 1. Open een pagina in de Page Builder 2. Zoek "BookingWidget" in de blokkenlijst (categorie: Widgets) 3. Sleep het naar je pagina 4. Configureer: heading, accentkleur, layout (compact/full), toon medewerkers Op de live site doorloopt de bezoeker de stappen: service kiezen → datum kiezen (14 dagen vooruit) → tijdslot kiezen → gegevens invullen → bevestiging. In de editor zie je een mock-preview zonder echte API-calls. Op de gepubliceerde site draait het widget met echte data.
Tips
  • Het widget is responsive en werkt op mobiel (375px).
  • Bij geen beschikbare slots ziet de bezoeker een duidelijke melding.

Boekingen beheren

Via Booking → Boekingen zie je alle boekingen: • Filter op datum of status • Statussen: bevestigd, in afwachting, in afwachting van betaling, geannuleerd, voltooid • Acties: bevestigen of annuleren per boeking Bij annulering wordt het tijdslot weer vrijgegeven voor andere bezoekers.

Aanbetaling via Stripe (optioneel)

Je kunt per service een aanbetaling vereisen via Stripe: 1. Ga naar Booking → Services 2. Bewerk een service 3. Zet "Aanbetaling vereist (optioneel)" aan 4. Stel het aanbetalingsbedrag in Bij een boeking wordt de bezoeker naar Stripe Checkout gestuurd. De boeking krijgt status "in afwachting van betaling". Na betaling: automatisch bevestigd. Geen betaling binnen 30 minuten: automatisch geannuleerd (via een scheduled function die elke 10 minuten draait). Waar gaat het geld naartoe? • Per site kan een Stripe-account worden gekoppeld via Instellingen → Betalingen → Stripe koppelen • Met Stripe Connect: geld gaat direct naar het account van de eindklant, minus servicepercentage • Zonder Stripe Connect: geld gaat naar het platform-account
Let op
  • Stripe moet geconfigureerd zijn op de website (Instellingen → Betalingen) voordat aanbetalingen werken.
  • De agency koppelt het Stripe-account van de eindklant per site via Instellingen → Betalingen.

Booking Instellingen

Via Booking → Instellingen configureer je geavanceerde opties: • Boekingshorizon — Hoever vooruit klanten kunnen boeken (7, 14, 30, 60 of 90 dagen). Standaard: 14 dagen. • Buffer tussen afspraken — Extra tijd tussen opeenvolgende boekingen (0, 5, 10, 15 of 30 minuten) • Slot-interval — Interval tussen beschikbare starttijden (15, 30 of 60 minuten) Bij meer dan 14 dagen toont het BookingWidget automatisch een maandkalender in plaats van datumknoppen.
Tips
  • De buffer is handig als je schoonmaaktijd nodig hebt tussen afspraken.
  • Gesloten en volgeboekte dagen worden grijs weergegeven in de kalender.

Vestigingen (Branches)

Met vestigingen kun je meerdere locaties beheren binnen één website: • Naam, adres, stad, telefoon per vestiging • Elke vestiging heeft eigen medewerkers, beschikbaarheid en boekingen • Het BookingWidget toont een vestigingsstap wanneer er 2+ actieve vestigingen zijn • Bij 1 vestiging wordt deze automatisch geselecteerd Via Booking → Vestigingen beheer je je locaties.
Tips
  • Bij 0 vestigingen werkt het systeem zoals voorheen — geen vestigingsstap in de widget.
  • Medewerkers en beschikbaarheid worden per vestiging ingesteld.

No-show Management (Booking)

Het systeem detecteert automatisch no-shows voor boekingen: • Automatische no-show — Als een klant niet verschijnt binnen de ingestelde tijd na het boekingstijdstip • Staff overrule — Personeel kan een no-show terugzetten naar 'bevestigd' • Heropening — Een geannuleerde boeking kan heropend worden Per vestiging instelbaar: automatische no-show aan/uit en timer in minuten.
Tips
  • Bij een no-show wordt het vrijgekomen slot aangeboden aan de wachtlijst (indien actief).

Walk-in Management (Booking)

Via het staff dashboard kan personeel walk-ins registreren: • Kies een service en tijdstip • Walk-in wordt direct aangemaakt zonder online validatie • Walk-ins zijn zichtbaar in het boekingsoverzicht met bron 'walk-in' Walk-ins negeren de boekingshorizon — ze kunnen altijd voor vandaag worden aangemaakt.
Tips
  • Walk-ins verschijnen direct in het admin-overzicht en de staff kalender.

Wachtlijst (Booking)

Als alle tijdslots vol zijn, kan de klant op de wachtlijst: 1. Klant wil boeken → alles vol → "Op wachtlijst plaatsen?" 2. Klant vult gegevens in, kiest tijdvoorkeur 3. Bij vrijkomen slot → e-mail met accept/decline link 4. Klant accepteert → boeking aangemaakt 5. Geen reactie → aanbod verloopt, volgende in de rij Instellingen per vestiging: • Wachtlijst aan/uit • Modus: automatisch of handmatig • Vervaltijd aanbod (standaard: 2 uur)
Tips
  • Bij automatische modus worden plekken direct aangeboden bij annulering of no-show.
  • Wachtlijst-klanten krijgen 3 e-mails: bevestiging, plek aangeboden, eventueel verlopen.

E-mailbevestiging door Klant (Double Opt-in)

Optioneel kun je klanten vragen hun boeking te bevestigen via e-mail: 1. Activeer 'Bevestiging door klant vereist' in de vestigingsinstellingen 2. Stel de vervaltijd in (1, 2, 4, 12 of 24 uur) Na het plaatsen ontvangt de klant een e-mail met een bevestigingsknop. Zonder bevestiging binnen de ingestelde tijd wordt de boeking automatisch geannuleerd.
Let op
  • Niet-bevestigde boekingen worden automatisch geannuleerd. Informeer je klanten hierover.

PIN-beveiligd Staff Dashboard (Booking)

Het staff dashboard is een beveiligde pagina op je live website waar personeel boekingen kan beheren zonder in te loggen op het CMS. Functies: • Dag-agenda met alle boekingen en statussen • Walk-in aanmaken met 1 klik • Status wijzigen (bevestigen, voltooien, no-show, overrule) • Wachtlijst bekijken • Persoonlijk welkom: bij inloggen wordt de naam van de medewerker getoond Toegang via een 4-6 cijferige PIN-code per medewerker. Sessieduur is instelbaar. Via Booking → Staff Toegang configureer je: • Dashboard aan/uit en sessieduur • Individuele medewerkers toevoegen met naam en eigen PIN • Per medewerker activeren/deactiveren of verwijderen • QR-code en link delen om de Staff App te installeren
Tips
  • Na 5 foute PIN-pogingen per minuut wordt het IP tijdelijk geblokkeerd.
  • Elke medewerker heeft een eigen PIN — zo weet je wie er ingelogd is.
  • De staff pagina kan als losse PWA-app geïnstalleerd worden op een tablet. Scan de QR-code op de Staff Toegang pagina.

Boekingsformulier: Opmerkingen, Intake & Marketing Opt-in

Het boekingsformulier ondersteunt extra velden: • Opmerkingen — Vrij tekstveld voor speciale wensen • Intake-vragen — Optionele extra vragen die je per service kunt instellen • Marketing opt-in — Checkbox voor nieuwsbrief/marketing toestemming Alle extra velden worden opgeslagen bij de boeking en zijn zichtbaar in het admin-overzicht.
Tips
  • Intake-vragen zijn handig voor voorbereiding op een afspraak (bijv. 'Waar heb je last van?').

CRM Klantenbeheer (Booking)

Het boekingssysteem houdt automatisch klantprofielen bij: • Automatisch aangemaakt bij de eerste boeking (op basis van e-mailadres) • Bezoekgeschiedenis — Alle boekingen met status en datum • Loyalty tiers — Automatisch berekend op basis van aantal bezoeken • Tags en notities — Handmatig toevoegen voor extra context • Marketing consent — Toestemming voor marketing • No-show telling Via Booking → Klanten bekijk en beheer je de klantenlijst.
Tips
  • Klantprofielen worden automatisch bijgewerkt na elke boeking.
  • Loyalty tiers: 1 bezoek = nieuw, 2-4 = terugkerend, 5-9 = stamgast, 10+ = VIP.

iCal & Toevoegen aan Agenda (Booking)

Na een boeking ontvangt de klant agenda-opties: • .ics bijlage in de bevestigingsmail • Google Calendar knop • De .ics bijlage opent in de standaard agenda-app (Apple Calendar, Outlook, etc.) De afspraak bevat: servicenaam, datum, tijd, locatie en eventueel medewerker.
Tips
  • De .ics bijlage wordt automatisch gegenereerd — geen configuratie nodig.

Automatische Herinneringen & Statusmails (Booking)

Het systeem verstuurt automatisch e-mails: Herinneringen: • 24 uur van tevoren (configureerbaar per vestiging) • Optioneel 1 uur van tevoren Statusmails: • Bij annulering door admin/staff → klant wordt geïnformeerd • Bij bevestiging door admin → bevestigingsmail • Bij no-show markering → optionele mail naar klant Alle mails gebruiken de branded layout en bevatten een magic link voor self-service.
Tips
  • Herinneringen zijn per vestiging in/uit te schakelen.
  • De 1-uur herinnering is standaard uit.

Staff Kalenderweergave (Admin Agenda)

De staff kalender toont een visueel overzicht van alle boekingen: • Dagweergave — Tijdlijn met alle boekingen per medewerker • Weekweergave — Overzicht van de hele week • Pauzes — Geblokkeerde tijden zijn zichtbaar als grijze blokken • Beschikbaarheid — Zichtbaar welke slots nog vrij zijn Klik op een boeking voor details of statuswijziging. Filter op vestiging en medewerker.
Tips
  • De kalender is ook toegankelijk via het staff dashboard op de live site.

CRM Dashboard Analytics + Export (Booking)

Het Booking CRM Dashboard combineert CRM-metrieken met booking-specifieke analytics: CRM-kaarten (8): • Totaal klanten, nieuwe klanten, retentie-ratio, VIP klanten • No-show herhalers, marketing opt-ins, gem. bezoeken, inactieve klanten Booking-kaarten (6): • Omzet deze maand — Som van aanbetalingen/betalingen • Populairste service — Meest geboekte service • Drukste dag — Weekdag met meeste boekingen • Drukste tijdslot — Uur met meeste boekingen • Gem. boekingen/dag — Gemiddelde over 30 dagen • Bezettingsgraad — Geboekte slots / beschikbare slots × 100% CSV export met segment-presets: VIP, win-back, stamgasten, custom filters.
Tips
  • De analytics worden gecached voor 1 uur voor snelle laadtijden.
  • Gebruik de export voor gerichte marketingcampagnes naar specifieke klantsegmenten.

Algemene Voorwaarden (Terms & Conditions)

Laat klanten akkoord gaan met je voorwaarden bij het boeken: 1. Ga naar Booking → Instellingen → Terms & Conditions 2. Vink 'Terms verplicht' aan 3. Voer je voorwaardentekst in (of plak een URL) 4. Sla op Bij het boeken verschijnt een verplichte checkbox. Zonder akkoord kan de klant niet boeken. Het akkoord wordt opgeslagen bij de boeking.
Tips
  • Je kunt een link naar een aparte voorwaardenpagina gebruiken.
  • Het akkoord wordt met tijdstempel bewaard (AVG-compliant).

No-show Fees (Booking)

Reken een vergoeding bij no-shows om het aantal gemiste afspraken te verlagen: 1. Ga naar Booking → Instellingen 2. Activeer 'No-show fee' 3. Stel het bedrag in (vast bedrag of percentage van de serviceprijs) Bij een no-show wordt automatisch een Stripe charge aangemaakt als de klant eerder een betaalmethode heeft opgegeven. Zonder betaalmethode wordt de fee geregistreerd maar niet geïnd. Klanten worden vooraf geïnformeerd over het no-show beleid in de bevestigingsmail.
Let op
  • No-show fees vereisen een actieve Stripe-koppeling op de website.

Agenda Synchronisatie (Google/Outlook/Apple)

Synchroniseer boekingen met externe agenda's: 1. Ga naar Booking → Agenda Sync 2. Kies een provider: Google Calendar, Microsoft Outlook of Apple Calendar 3. Doorloop de OAuth-autorisatie 4. Selecteer welke agenda gebruikt wordt Na koppeling: • Nieuwe boekingen verschijnen automatisch in de externe agenda • Bezette tijden in de externe agenda blokkeren automatisch booking slots • Annuleringen worden bidirectioneel gesynchroniseerd
Tips
  • Je kunt per medewerker een eigen agenda koppelen.
  • De sync draait elke 5 minuten — kleine vertraging is normaal.

Abonnementen (Booking Subscriptions)

Bied terugkerende afspraken aan via abonnementen: 1. Ga naar Booking → Abonnementen 2. Maak een abonnement aan: naam, frequentie (wekelijks/maandelijks), prijs, gekoppelde service 3. Klanten kiezen bij het boeken voor een abonnement Via Stripe wordt automatisch periodiek gefactureerd. Klanten kunnen zelf opzeggen via hun account.
Tips
  • Ideaal voor kappers, coaches en therapeuten met vaste klanten.
  • Bij opzegging blijven bestaande afspraken geldig tot het einde van de periode.

POS Kassa (Booking)

Gebruik de ingebouwde kassa voor betalingen ter plekke: 1. Ga naar Booking → POS Instellingen 2. Activeer POS en koppel een Stripe Terminal (indien beschikbaar) 3. Bij een boeking: klik 'Afrekenen' om een betaling te starten De POS ondersteunt: • Kaartbetalingen via Stripe Terminal • Handmatige registratie van contante betalingen • Bon printen via Web Serial API (ESC/POS printers)
Tips
  • De POS werkt ook via het staff dashboard op een tablet.
  • Bonnetjes worden automatisch opgemaakt met je site-branding.

Bel ons