Calendar + scheduling

One calendar for one chair or four branches.

Drag, color, filter, fly. The calendar bends to your operation instead of asking you to bend around it.

Built for solo stylists, multi-staff teams, and multi-branch owners. The same calendar scales from one chair to a four-location group without a different UI.

DayWeekMonth
MMaya
JJin
NNoa
9am
10am
11am
12pm
1pm
2pm
3pm
4pm

Demo. Drag any appointment to a new time or staff column.

Live preview

01/

Day, week, month. Whichever way your brain works.

Three views, the same data. Drag any appointment to resize its duration; the reschedule action takes the new length without a second confirmation. Month view collapses high-density days into a +N more popover instead of stacking microscopic blocks. Day view splits into per-staff columns the moment a second staff member shows up so you stop hunting for who is who.

Live preview

9
10
11
12
1
2

Maya P.

Cut + style

Lila R.

Balayage

M

T

W

T

F

S

S

M

T

W

T

F

S

S

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

02/

Color appointments the way you read them.

A toolbar toggle flips the calendar between coloring by appointment status (booked, confirmed, arrived, completed) and coloring by the staff member assigned. Status mode is the default and tells you what to chase next. Staff mode tells you at a glance who is slammed and who has air.

Color by

Maya

Maya P.

completed

Lila R.

confirmed

Jin

Sienna K.

arrived

Tara W.

booked

Noa

Noor A.

confirmed

Eve B.

booked

Status mode tells you what to chase next: booked, confirmed, in chair, done.

03/

Multi-branch from one login.

Each branch has its own hours, services, staff, and inventory. The branch picker in the top bar switches without a reload. Owner reports roll up; managers and front desk see their branch only.

Branch

3 active

Click a branch. The whole admin reloads to that branch's hours, services, staff, and inventory.

  • Per-branch hours and closures.

    Set Sunday closed at one branch and open at the other. Public holidays and partial-day closures live on the same surface.

  • Per-branch inventory.

    A bottle of toner counts where it actually sits. Shared items (no branch assigned) are the fallback, and deduction prefers the branch-scoped item first.

  • Per-branch tax overrides.

    Different sales-tax rate at the second location? Override at the branch and the math reconciles per branch in Reports.

  • Per-staff branch assignments.

    Each staff member is assigned to one or more branches. They only appear on the public booking picker for branches they actually work.

04/

Working hours that match how you really work.

Split shifts, partial-day closures, public holidays, vacation time. The slot engine intersects branch hours with staff hours with time-off windows so a client cannot book into a hole that nobody is sitting in.

Working hours

8am11am2pm5pm8pm

Mon

Tue

Wed

Thu

Fri

Sat

Sun

Closed

Split shifts in one row. Wednesday is straight-through, Thursday breaks for a long lunch. Sunday closed unless you flip the toggle.

  • Split shifts in one row.

    A stylist who works 9 to 1 and 4 to 8 enters both ranges on the same day. No fake lunch appointment to fake unavailability.

  • Open-all-days toggle.

    For the regulars who work the same hours every day, set it once and apply across the week.

  • Time off without paperwork.

    Request a half-day off; the slot engine respects it the moment it lands. No follow-up admin step.

  • Partial-day closures.

    Annual staff training Wednesday 1 to 4? Close the branch for those hours without taking the whole day off the calendar.

05/

Processing time and resources.

A colour service that needs the chair for twenty minutes mid-service can release the stylist to start the next client. Facial beds, treatment rooms, and shared equipment book as a second axis so two clients cannot accidentally claim the same bed.

Processing time

Same hour, two clients

10:0010:2010:4011:0011:20

Stylist

Adele · apply

Lila · cut

Chair

Adele · colour processing

Processing gap

Stylist is freed during the 20-minute processing window, so Lila slots in. The chair stays held for Adele the whole time.

  • Mid-service processing.

    Set the minutes inside the service duration when the chair is held but the stylist is free. The slot engine still blocks the chair but opens the stylist for the gap.

  • Resources as a second axis.

    Create the resource (Treatment Room 1, Color Station B), assign it to services that need it, and the slot engine treats it like a second staff layer.

  • Buffers before and after.

    Per-service buffer minutes for cleanup or prep. The slot engine pads the appointment so the next booking does not eat into the buffer.

  • Per-variant duration.

    A massage that comes in 30, 60, and 90 minute variants picks the right duration when the client picks the variant.

06/

Side panel, status pills, add-on sales.

Click any appointment and the detail panel slides in from the right. The calendar stays visible behind it so you can scan, click, scan, click without losing context. The same panel handles new appointments and time blocks.

Status, one click

booked
confirmed
arrived
completed

Click the next state, the appointment advances. No menu, no dialog.

  • Click the status pill, the status changes.

    Booked, confirmed, arrived, completed. No menu, no dialog. Click the next state and it advances.

  • Add service or add product.

    An add-on sale from the appointment detail card rolls into per-visit revenue and into the staff commission for the visit.

  • Walk-in seat-now from the queue.

    A walk-in row on the waitlist turns into a seated appointment with one click. The calendar fills the slot and the queue clears.

  • Multi-select staff filter.

    Pick two or three staff to focus on; the calendar narrows. Stacked mini-avatars on the filter pill show who is in scope.

07/

Calendar sync, two ways.

For Solo, an iCal subscription feed any modern calendar (Apple, Google, Outlook) can pull. For Growth, a per-staff Google Calendar sync that writes confirmed appointments to each staff member's own calendar. Both stay read-only outside Flowesce so two-way drift cannot corrupt the truth.

Calendar sync

One way out

Source of truth

Flowesce

admin calendar

G

Google Calendar

per-staff · Growth

A

Apple Calendar

iCal feed · all tiers

O

Outlook

iCal feed · all tiers

One direction only. Flowesce is the source of truth so two-way drift can't corrupt your slot grid.

Common questions

Honest answers, including the ones we don't love.

Does the calendar handle recurring appointments?

Yes. Each occurrence is a real row sharing a series id so the slot engine and the double-booking exclusion constraint work on them the same as standalone bookings. Edit one or edit the series.

What stops a double booking when two staff are creating appointments at the same time?

A Postgres exclusion constraint on staff and time range. Availability checks run client-side for UX, but the database is the source of truth and the second submission fails with a clean error.

Can I block out non-appointment time?

Yes. The same side panel handles time blocks (training, lunch, errands). They sit on the calendar with the appointments and the slot engine treats them as unavailable.

Does it sync with Google two-way?

Today, no. Sync writes confirmed appointments out to Google one-way per staff. Two-way is on the roadmap but conflict detection is the hard part and we want it solid before we ship it.

Mobile?

The public booking page is mobile-first. The admin calendar is desktop-first today and a tablet pass is in flight. A native admin app is on the roadmap; we just want the web admin solid before we split focus.

Fourteen days. No card.

Try Flowesce on a real Saturday.

No card required, no auto-charge at the end. If Flowesce isn't for you, export everything in one click and walk.