Business owners

Customers

Business ownersCustomers

The Customers tab is at /dashboard/customers. Everyone who has ever booked with you (or whose info you've added) lives here.

What you'll see

  • Name and avatar (if they have one)
  • Email and phone
  • Total bookings (with you)
  • Lifetime spend (deposits + on-site payments)
  • Last visit date
  • Tags (e.g. "VIP", "No-show risk", "Allergies")
  • Blacklist status (if blocked)

Search

The search bar searches by name, email, phone, and tag. Useful for finding a customer who called and needs to be looked up.

Customer detail

Click a row to see the full customer detail page:

  • Profile: name, email, phone, notes, tags
  • Bookings: every booking with you, sorted newest-first. Each row links to the booking detail.
  • Notes: private notes only your team sees. Use for allergies, preferences, complaints. The customer never sees these.
  • Reviews: reviews they've left (if any)
  • Marketing: email opt-in status, last sent campaign, last opened, last clicked

Add a customer manually

For walk-ins who want to be in your system. Click "New customer" in the top right. Fill in their info. They can later "claim" the profile by signing up with the same email.

Notes

Notes are private to your business. They show on the booking detail page when the customer arrives, so your staff sees "Allergy: peanut" without having to dig. The customer never sees them.

Notes are not the same as booking notes. Booking notes are tied to a specific appointment; customer notes follow the customer everywhere.

Tags

Tags are short labels you can add to a customer to filter or segment. Examples:

  • "VIP" — for your top spenders
  • "Allergies" — flag for the staff to check notes
  • "No-show risk" — flag customers who no-showed twice
  • "Birthday this month" — manual or auto-applied

Tags are also used in the AI Marketing composer to pick audiences ("send to VIP customers only").

Blacklist

Click the three-dot menu → "Blacklist". The customer can no longer book with you. They see a generic "this business isn't accepting new bookings" page if they try.

Use for customers who were abusive, repeatedly no-showed, or otherwise caused problems. You can un-blacklist from the same menu.

Blacklist is per-tenant
A customer blacklisted at Salon A can still book at Salon B. BookFlow doesn't share blacklists across businesses.

Export

Click "Export" in the top right. You'll get a CSV of all customers with their email, phone, booking count, lifetime spend, and tags. Useful for mailing lists or migrating to another system.

API

GET/api/customers

List customers. Query: ?q=search&tag=&blacklisted=1&limit=&offset=. q matches first_name/last_name/email with LIKE.

POST/api/customers

Create a customer. Body: firstName (required), lastName?, email?, phone?, notes?, tags?[].

GET/api/customers/:id

Get a single customer (includes the 25 most recent bookings).

PATCH/api/customers/:id

Update a customer. Fields: firstName, lastName, email, phone, notes, tags, isBlacklisted, blacklistReason, birthday, referralSource.

DELETE/api/customers/:id

GDPR anonymize: blanks PII fields but keeps the row for audit. Returns { data: { ok: true, anonymized: true } }.

GET/api/customers/:id/bookings

Get all bookings for a customer (full set, not just 25).

POST/api/customers/:id/notes

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

GET/api/customers/export

CSV export. Returns text/csv with all customers. Headers: first_name, last_name, email, phone, total_bookings, total_spent, no_show_count, is_blacklisted.

Need a human?

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