← Al Davies, 250 High Street

Salon appointments and stylist bookings in SharePoint

Build two SharePoint lists, "Stylists" and "Appointments", and add a calendar view to see each week. Add a unique Slot key column (stylist plus start time) so the same stylist cannot be booked at the exact same start time twice. SharePoint does not catch partly overlapping times, and this list is a simple record for a small shop, not booking software. Exact names may differ on your screen.

Why double bookings happen

A paper book or a shared spreadsheet shows one row at a time. Two people take calls on the same day. One writes "Dana, 2:00" for a stylist and the other writes "Priya, 2:00" for the same stylist. Neither can see the other's note until the client arrives.

Causes:

A shared list fixes the first one. A calendar view helps with the second. A status column handles the last two.

What you are building

You will build two SharePoint lists:

A lookup column in "Appointments" points to "Stylists". The person booking picks the stylist from a list instead of typing the name. That keeps the spelling the same on every row, which matters for filters.

If you are new to lists, see "Replace a spreadsheet tracker with a SharePoint list". This guide does not repeat those steps. For a front desk sign-in, see "A visitor sign-in log in SharePoint".

Plan what you store about clients

An appointment list holds names of people. Plan before you build.

  1. Collect the least you can. One way to start is a client's first name and the service. Do not put phone numbers, health notes, allergy details or card details in this list. Our advice, not a Microsoft rule.
  2. Decide who can open the site. Switching to another view shows every row, so only permissions limit who sees bookings. Ask your admin which groups fit.
  3. Decide when to delete old rows, and who does it.

Step 1. Create the "Stylists" list

Microsoft's help page on creating a list says: "Choose to start a list from scratch. Add a list Name, Description (optional), and select whether you want the list to appear in the left site navigation." Then: "When you're finished selecting options, select Create." Name the list "Stylists".

Use the Title column for the stylist's first name, such as "Dana". If two stylists share a first name, add a short number, such as "Dana 2". You do not need other columns to start. Add one row for each stylist.

Step 2. Create the "Appointments" list

Create a second blank list named "Appointments". Set up these columns:

  1. Title (Single line of text). Rename it to "Client first name" and type only the first name.
  2. Stylist (Lookup). Microsoft's help page on lookup columns lists these steps: "In the list where you want the Lookup column, select Add column > Lookup." Under "Select a list as a source," pick "Stylists." Under "Select a column from the list above," pick "Title." Microsoft says: "Lookup columns should be created and used within the same site." Make both lists on the same site.
  3. Start (Date and Time, with time). The date and time the visit begins.
  4. End (Date and Time, with time). The date and time the visit ends.
  5. Day (Date and Time, date only). The date of the visit. You will use this column for the daily views. It repeats the date in Start, so it is one extra thing to type. One way to start is to keep it, because the daily view in Step 6 is simpler with a date-only column. Our advice, not a Microsoft rule.
  6. Service (Single line of text). Short, such as "Cut".
  7. Status (Choice, single value). Use numbered values so they keep your order: 1 Booked, 2 Arrived, 3 Done, 4 No-show, 5 Canceled. Our advice, not a Microsoft rule: the number in front shows the order you want.
  8. Slot key (Single line of text). See Step 4.

Step 3. Add a calendar view

Microsoft's help page on calendar views lists these steps:

  1. "On the upper right-hand side of the command bar, select +Add view."
  2. "Under View name, enter a name."
  3. "Under Show as, select Calendar as the type of view you want to create."
  4. "Under Start date and End date, select which date-based column or columns should apply."
  5. "Select Create."

Pick Start and End from your columns. Name the view "Week". Microsoft says that for the label on each item: "By default, Title is used, but you can change that if you like." Under "More options" you can pick a different label column.

Microsoft's page says: "The items in the list are now displayed as calendar events." It also says that when you open a day with an event, "The details of the events from that day are shown in the panel on the right." Open yours and look at how two appointments on the same day show. You should see each appointment as an event on its day, and the day's details in the panel on the right.

If you want the calendar to open first, Microsoft says to select "Set current view as default."

@@KEEP@@

Step 4. Block the same slot twice

SharePoint does not check whether two rows overlap in time. It can refuse a repeated value in one column, though. Microsoft's page on unique columns says: "A unique column must also have an index." It lists Single line of text as a supported type.

Here is one way to start. Our advice, not a Microsoft rule:

  1. Pick a format for the Slot key. For example: stylist name, then the date, then the start time, such as DANA-2026-11-03-1430.
  2. Write the format in the column description, so every person types it the same way.
  3. Open the list settings, select the Slot key column, find "Enforce unique values", and choose Yes. If SharePoint asks to create an index, agree.
  4. Test it. Add a row with a key. Then try a second row with the same key. The second one should not save.

For more on how this setting works and where it falls short, see "Stop duplicate entries in a SharePoint list".

What this catches: the same stylist booked at the exact same start time. What this does not catch:

If you cancel a visit and want that slot free again, change the key on the canceled row, for example by adding "-X" to the end. Otherwise the slot stays blocked.

Step 5. Mark no-shows and cancellations

Do not delete a missed visit. Change its Status.

  1. When the client does not come, open the row and set Status to "4 No-show".
  2. When the client cancels, set Status to "5 Canceled" and change the Slot key so the slot is free.
  3. When the visit happens, set Status to "3 Done".

Over time, a view filtered to "4 No-show" shows who misses visits. One way to start is to review it once a month and decide on your own policy. This guide does not set one.

Step 6. Build the daily views

View 1: "Today"

  1. Open "Appointments". Open the view menu, then choose "Edit current view" to open the classic view editor.
  2. Under "Filters", choose "Show items only when the following is true".
  3. Pick Day, then "is equal to", and type [Today].
  4. Show the columns Client first name, Stylist, Start, End, Service and Status. Sort by Start. Save the view with the name "Today".

Microsoft's help page on filtering a view says: "It is not possible to use the [Today] or [Me] filters when filtering using a column header." It also says: "You must use the classic view editor to filter columns using these keywords." Its example for a date column is "Due Date is equal to [Today]." That is why Day is a date-only column.

View 2: "No-shows"

  1. Create a view named "No-shows".
  2. Filter it to show rows where Status is equal to "4 No-show".
  3. Show Day, Client first name, Stylist and Service.

View 3: one view per stylist

Make one view for each stylist that filters the Stylist column. A stylist can open it to see only their rows. This is not a lock. Anyone with access to the list can open another view and see every row. For real limits on who sees what, use permissions.

Step 7. Daily habits

Two rules for everyone who takes a booking:

What to avoid

Honest limits

A SharePoint list is a record. It is not booking software. It does not send reminders to clients by itself, it does not let clients pick their own time, and it does not take payment. If you need those, you need a tool built for booking, such as Microsoft Bookings, or a longer build on top of the list. A Power Automate flow can send emails from list data, but that is a separate project and not covered here.

The list also cannot see time. It cannot tell that a 2:00 to 3:00 visit blocks a 2:30 visit. The Slot key stops exact repeats only. The calendar view helps a person see a clash, but a person must look.

Staff type every row. If they skip it, the list is wrong. Start with one stylist for a week, fix what does not work, then add the rest.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

How do I manage salon appointments in SharePoint?

Keep a Stylists list and an Appointments list, add a Week calendar view, and set a Status on every visit. Use a Today view each morning.

Can clients book their own salon appointment online with a SharePoint list?

No. Staff type every booking. Microsoft says Bookings "includes a web-based booking page", so check whether your Microsoft 365 plan includes it.

How do I track no-shows in a salon appointment list?

Set Status to "4 No-show" instead of deleting the row, then use a view filtered to that Status.

Can SharePoint stop two bookings from overlapping?

Not by itself. A unique Slot key stops the exact same key from saving twice, which catches the same stylist at the same start time. It does not catch a 2:00 visit that runs into a 2:30 visit.

How do I show the day's appointments?

Use a Day column and filter it with is equal to [Today]. Microsoft says the [Today] and [Me] filters need the classic view editor, so use Edit current view, then Filters.

Sources