nisebookings docs

Admin guide (back office)

The back office lives at /app in the application. Everything in this guide is Dutch in the UI; the Dutch labels are quoted so you can find them. For how the engine behaves underneath, see 02-concepts.md.

Contents

Roles and what each one sees

Four roles exist: owner, admin, front_desk, staff. The nav shows only what the role may use; everything else redirects to the role's home (the dashboard, or the calendar for roles without one).

Menu item (Dutch) Route owner admin front_desk staff
Overzicht /app ✓ ✓ – –
Agenda /app/calendar ✓ ✓ ✓ ✓ (own agenda)
Afspraken /app/appointments ✓ ✓ ✓ ✓ (own agenda)
Klanten /app/customers ✓ ✓ ✓ –
Pakketten /app/packages ✓ ✓ ✓ –
Evenementen /app/events ✓ ✓ view only –
Diensten /app/services ✓ ✓ – –
Medewerkers /app/staff ✓ ✓ – –
Betalingen /app/payments ✓ ✓ ✓ –
Kortingscodes /app/coupons ✓ ✓ – –
Meldingen /app/notifications ✓ ✓ – –
Instellingen /app/settings ✓ ✓ – –

Two extra gates:

There is no user-management screen yet: you cannot invite colleagues or change roles in the UI. Contact nisebookings to add a colleague (with one of the four roles) or to change a role.

First-time setup

After signing up (/signup) you land on /onboarding ("Je bedrijf"): fill in Bedrijfsnaam, Webadres (slug: lowercase letters, digits, hyphens) and Tijdzone, then "Verder". This creates your account, makes you owner, and installs the default Dutch e-mail templates. You start with no services or staff.

Recommended order:

  1. Instellingen → Algemeen — company name, time zone, time step, how far ahead customers may book.
  2. Instellingen → Openingstijden — the weekly template that new staff inherit.
  3. Instellingen → Vrije dagen — company-wide closing days.
  4. Medewerkers — add the people/resources. Each new staff member gets the opening hours as their weekly schedule.
  5. Diensten — add what can be booked, and tick which staff perform it (Medewerkers → Diensten).
  6. Instellingen → Bedrijf en e-mail — sender name, reply-to, phone/address/website (used in mails).
  7. Instellingen → Boekingsformulier — cart, chain, recurrence, occupancy display, waiting list.
  8. Instellingen → Betalingen — VAT inclusive/exclusive, deposit mode, local/Mollie, Mollie API key.
  9. Instellingen → Insluiten — copy the embed snippet to your website, restrict allowed websites.
  10. Test: book something yourself through the widget, then watch Meldingen → Verzendlog.

Daily work: the calendar

/app/calendar — the default landing page for front desk and staff.

Appointments

List — /app/appointments

Tabs Komend / Voorbij, status tabs (Alle statussen, In afwachting, Bevestigd, Geannuleerd, Afgewezen, Afgerond, Wachtlijst). Each row shows date/time, service, staff and note, then per customer: name, "N personen", a payment badge (Betaald / Aanbetaling / Open), an inline status select, the Klant mailen checkbox (on by default) and Opslaan. The appointment itself can be deleted ("Deze afspraak en de boekingen erin verwijderen?"). 50 rows per page.

Create — /app/appointments/new

Needs at least one simple service and one staff member. Fields: Dienst, Medewerker, Datum, Begintijd, Personen, Status (default = Instellingen → Afspraken), a customer block ("Bestaande klant" from the first 200 matches, or "Nieuwe klant" with Naam/E-mailadres/Telefoon — an existing e-mail address is matched and reused), Interne notitie, and two checkboxes: Toch inplannen bij een waarschuwing and Klant mailen.

With ?package=<id> (from a package page) the service, customer and persons are fixed to the package.

Edit — /app/appointments/[id]

Services

/app/services — grouped by category ("Zonder categorie" for uncategorised). Badges: Samengesteld, Samenwerkend, Pakket, "Verborgen", "tot N personen". Dienst toevoegen starts with a type, which cannot be changed later:

Type (UI) What it is Needs
Gewone dienst one appointment with one staff member, optional extras duration, price, capacity
Samengesteld parts one after another (wash → cut → dry), with spare-time rows ordered parts
Samenwerkend parts at the same time by different staff (skipper + boat) ordered parts, one per staff
Pakket prepaid bundle of N appointments of one simple service base service, size, validity

Common fields: Naam, Categorie, Omschrijving, Zichtbaarheid (Zichtbaar voor klanten / Verborgen, alleen intern te boeken), Aanbetaling ("100%", "30%" or a fixed amount per person), Btw-tarief (21 / 9 / 0 / Ander tarief).

Simple services add: Duur (minuten), Verhuur (dagen) (0 = an ordinary appointment with times; 1 or more = whole-day rentals — see below), Tijdstap (minuten) ("Leeg = standaard (N min)"), Prijs (EUR), Minimaal/Maximaal aantal personen, Tijd vooraf and Tijd achteraf (preparation/cleanup; blocks the calendar but is invisible to customers), Eén boeking per tijdslot, Herhalen (Dagelijks / Wekelijks / Om de week / Maandelijks; none ticked = no repeats), Wachtlijst (maximaal aantal personen) (empty = unlimited, 0 = off), and Als de klant geen medewerker kiest (Goedkoopste / Duurste / Volgorde van de medewerkerslijst).

Verhuur (dagen) ≥ 1 turns the service into a rental: the customer picks a start date, the appointment covers that whole day plus the following days, and the price is the daily price times the number of days. Business hours and the weekly schedule never apply to a rental — days off and existing appointments do. An appointment you make yourself for a rental always starts at 00:00 on the chosen date; extra's, chains and the waiting list do not apply, and the calendar shows the span as "N dagen" on every covered day.

Sections below the form:

Prices are per staff member (Medewerkers → Diensten); the service price is the fallback.

Staff

Staff is a generic "bookable resource": a person, a room, a boat, a device. /app/staff has Actief and Gearchiveerd tabs, with Verborgen for private staff.

On a staff page:

Customers

/app/customers — search on name, e-mail or phone. Detail page shows and edits Naam, E-mailadres, Telefoon, Notities, plus the appointment history and Klant verwijderen ("Deze klant en al zijn boekingen verwijderen? Dit kun je niet ongedaan maken.").

Customers are created automatically on booking (matched on e-mail within your account).

Packages

/app/packages lists bought packages: customer, package, staff, scheduled visits, validity ("Vanaf de eerste afspraak" until the first visit is planned).

Events

/app/events — Komend / Voorbij. An event has Titel, Status (Gepubliceerd, te koop / Verborgen), Omschrijving, Afbeelding (webadres), start/end, Verkoop stopt op (empty = until the start), a Ticketcode mask (each * becomes a random character, at least 4), and Medewerkers (Niet betrokken / Organisator / Ondersteuning (agenda geblokkeerd)) — organisers simply show in the calendar; only Ondersteuning has their time blocked for bookings while the event runs.

Tickettypes: Naam, Prijs, Btw %, Aantal, Gereserveerd ("Gereserveerde tickets worden niet online verkocht"), Volgorde. Deleting an event is refused once tickets are sold — hide it instead.

Deelnemers (/app/events/[id]/attendees): Code, Klant, Ticket, Status (Wacht op betaling / Geldig / Geannuleerd), Betaling. Annuleren frees the ticket for resale and sends no mail.

Payments

/app/payments — newest first, filter by status (Open / Voltooid / Mislukt / Terugbetaald) and type (Ter plaatse / Online (Mollie) / Gratis). Footer totals use the whole filtered set, not just the page.

Payment detail:

Coupons

/app/coupons — code (case-insensitive), Korting (%) and Aftrek (EUR) (both zero is rejected), Aantal keer te gebruiken (account-wide), Eén keer per klant, validity dates (the booking date counts, not the appointment date), min/max appointments per order, and restrictions to services and/or staff (none ticked = all). Genereer code expands a mask like WELKOM-****.

Notifications

/app/notifications groups templates by type (Nieuwe afspraak, Statuswijziging, Herinnering, Wachtlijst, Plek vrij (wachtlijst), Nieuw pakket, Tickets), with an Aan/Uit toggle. The editor covers recipients (Klant / Medewerker / Beheerders / Andere adressen), status filter, service filter, reminder timing, subject, body with {codes} and {#if …} blocks, an optional .ics attachment, a Test versturen button (to your own address) and the code reference. /app/notifications/log is the send log with statuses Verstuurd / In wachtrij / Bezig / Mislukt and retry count.

Full detail: 06-notifications.md.

Settings

/app/settings/<tab>:

Tab What you set
Algemeen Bedrijfsnaam, Tijdzone, Tijdstap (minutes between start times), Minimaal vooraf (minutes), Maximaal vooruit (days), Taal van het boekingsformulier (Nederlands / Engels — the language customers see in the widgets; an individual embed can override it with data-lang).
Bedrijf en e-mail Naam afzender (empty = company name), Antwoordadres, Telefoonnummer, Website, Adres, Verzendmarge herinneringen (uur), Annuleren tot (minutes before the appointment; 0 = until the start).
Afspraken Status van nieuwe boekingen (Direct bevestigd / Eerst door jou goedkeuren) and the automatic status change (Van → Naar, after the appointment has passed).
Agenda Alleen werkdagen tonen, Alleen de uren binnen de openingstijden tonen, Medewerkers zonder afspraken verbergen.
Boekingsformulier Cart, chain ("direct na elkaar boeken"), extras × persons, Herhalende afspraken + Betalen bij een reeks (Hele reeks / Alleen de eerste afspraak), Bezetting tonen (Niet tonen / Bezette plaatsen 3/8 / Vrije plaatsen "nog 5"), Wachtlijst + "Wachtlijst telt mee als bezet", Prijs van samengestelde/samenwerkende diensten (Eigen prijs / Optelsom van de onderdelen) and "Klanten kiezen geen medewerker bij samenwerkende diensten".
Betalingen Prijzen inclusief btw, Aanbetaling (alleen aanbetaling / klant kiest, aanbetaling voor / klant kiest, volledig voor), Ter plaatse betalen, Online betalen via Mollie + API-sleutel (write-only, shows a hint afterwards), Toeslag Mollie (%) en vast bedrag, Betaaltermijn (minuten), Status na betaling. Owner/admin only.
Openingstijden Weekly template for new staff schedules.
Vrije dagen Company-wide closing days.
Insluiten Publieke sleutel, HTML snippet (on WordPress, paste it into a Custom HTML block; the shortcode shown there is not needed), and Toegestane websites (one origin per line; empty = every site may embed).
Webhooks Owner/admin. Add an endpoint (URL + the events to send; the signing secret is shown once), Test versturen, Uitzetten / Aanzetten, Verwijderen, and the last 20 deliveries per endpoint with status, attempts and error. Rotating the secret and resending a delivery go through the API — see Webhooks.
API Create and revoke API keys for the management API: name, scopes (catalogue/settings), shown once, plus the most recent writes per key. Server-side use only — the key is not for browsers.

Public pages your customers see

No login, noindex, styled minimally in the same design language:

Known limitations