Business owners

Bookings

Business ownersBookings

The Bookings tab is at /dashboard/bookings. It's your full calendar — list view, day view, week view, month view. Every booking, every status, every action.

Statuses

A booking moves through these states:

  • pending: just created, awaiting confirmation. (In practice, the system auto-confirms deposits and most bookings go straight to confirmed.)
  • confirmed: customer has booked, you have acknowledged (or auto-acknowledged).
  • completed: appointment happened. You can mark this from the dashboard or the customer's card.
  • cancelled: cancelled by customer, business, or system (e.g. payment failed).
  • no_show: customer didn't show up. Triggers the no-show fee if you have one.

List view

Default view. Columns:

  • Date / time
  • Customer
  • Service
  • Staff
  • Price
  • Status (color-coded chip)
  • Actions (kebab menu)

Sortable by any column. Filterable by status, staff, service, date range.

Calendar view

Toggle in the top right. Day, week, or month. Each block is a booking, color-coded by status. Drag a block to reschedule (you'll be asked to confirm; the customer gets an email).

Booking detail

Click any row to see the full booking detail page. Contains:

  • Service, staff, date, time, duration, total price
  • Customer name, email, phone, customer notes
  • Booking-specific notes (the "notes" the customer typed at booking time)
  • Internal notes (your private notes)
  • Payment status: deposit paid (last 4 digits), refund status, balance due
  • Activity log: who did what when (created, rescheduled, marked complete, etc.)
  • Action buttons: Confirm, Mark complete, No-show, Cancel, Reschedule, Refund deposit, Draft a reply (AI)

Confirm a booking

For most bookings this happens automatically. If a booking is in pending, click "Confirm" to flip it to confirmed. The customer gets an email.

Reschedule a booking

Click "Reschedule". Pick a new date and time. The customer gets an email. The deposit transfers automatically (no double-charge).

Reschedule is rare
Customers usually reschedule themselves from their confirmation email. You'll only reschedule manually if a customer calls you to do it.

Complete a booking

After the appointment, click "Mark complete". This:

  • Marks the booking as done
  • Unlocks the review request (customer gets an email 2 hours later)
  • Adds the revenue to your "Lifetime" stat
  • Triggers the AI to draft a "thanks for coming" follow-up if enabled

No-show

Click "No-show" if the customer didn't arrive within 15 minutes of the appointment time. This:

  • Marks the booking as no-show
  • Charges the no-show fee (if you have one set) — you can refund from the same page if you decide to be lenient
  • Adds a "No-show" tag to the customer
  • Triggers the AI to draft a "we missed you" outreach (configurable)

Cancel a booking

Click "Cancel". You'll be asked to confirm and (optionally) refund the deposit. The customer gets an email immediately.

Add a note

Click "Add note" to write something private about this booking. The note is shown to your staff but not the customer. Useful for "the customer was 20 min late" or "they loved the new color".

API

GET/api/bookings

List bookings. Query: ?status=&staffId=&serviceId=&customerId=&startDate=&endDate=&limit=&offset=.

GET/api/bookings/stats

Aggregate stats: todayCount, upcomingCount, noShowCount, weekRevenue.

POST/api/bookings

Create a booking (admin only). Body: serviceId, staffProfileId, startDatetime, customerId | newCustomer, notes?, status?.

GET/api/bookings/:id

Get a single booking.

PATCH/api/bookings/:id

Update a booking. Body: notes, internalNotes, status.

POST/api/bookings/:id/confirm

Transition pending → confirmed.

POST/api/bookings/:id/cancel

Transition to cancelled. To refund a deposit, call /api/payments/:id/refund separately.

POST/api/bookings/:id/complete

Transition confirmed → completed.

POST/api/bookings/:id/no-show

Transition confirmed → no_show.

POST/api/bookings/:id/reschedule

Reschedule. Body: { newStartDatetime, staffProfileId? }.

POST/api/bookings/:id/notes

Append a timestamped internal note. Body: { note: '...' }.

Need a human?

Email hello@netwit.ca or call +1-604-206-8169. NetWit responds in 1 business day.