Overview
The Calendar is where your team plans and runs the day. Every booking — whether taken by a receptionist, self-served through the client portal, or created from the waitlist — lives on the same grid. It shows one member's day, the whole team at once, the week ahead, or a month at a glance.
You'll use it to: take bookings, reschedule and cancel them, move clients between statuses (scheduled → confirmed → in progress → completed), block off time for lunch or meetings, run the waitlist, and check clients in with a QR code.
What you can do here
- Book an appointment in a few clicks — click an empty cell in the grid and a pre-filled modal opens with the right member and time.
- See every team member's day side-by-side (Day view) or the whole team's week stacked together (Week view).
- Filter the grid to just one person, to one service, or to a subset of statuses.
- Block off time for lunch, meetings, training, or days off — including recurring blocks.
- Keep a waitlist and book from it when a slot opens up.
- Check clients in with a QR code — either from the URL in their confirmation message or with your camera.
Opening the calendar
- 1Sign in to Momentfy at your workspace URL.
- 2Click Calendar in the main sidebar (the first item under the workspace name).
- 3The calendar loads with today's date in your current location.
Direct link
The URL is /dashboard/calendar. You can bookmark it, or send team members a link that opens on a specific date — see Deep links below.
Required access
All active members of the workspace see the Calendar in their sidebar. What they can do inside it depends on role permissions:
- View only — can read the grid but not create or change anything.
- Book & edit — can create, reschedule, and change the status of appointments.
- Manage blocked time — needed to add, edit or delete blocked time entries.
- Manage waitlist — needed to add entries, notify clients, and book from the waitlist.
Views
The Calendar has five views. Switch between them from the view selector in the top-right of the header.
Day
The default. Each active team member gets their own column. Rows are time slots. Use this to run the reception desk or see who is free at a given moment.
3 Day
Today and the next two days, laid out as day columns. Each column is the whole team stacked together. Useful for planning short-term — who is busy tomorrow, what is open the day after?
Week
Seven columns, one per day. Starts on the day you set in Settings → First day of week (Monday or Sunday). Team is stacked within each column. Good for a weekly plan or filling a gap two days out.
Month
A classic month grid. Each day shows a few appointment dots — click a day to jump straight into the Day view for that date. Best for high-level scheduling and spotting empty days.
Agenda
A clean, list-based view of the upcoming days. Each day lists its appointments in chronological order. This is what the calendar auto-switches to on phones — time-grid views aren't usable on narrow screens.
On mobile
The first time you open the calendar on a screen narrower than 768 px, the view flips to Agenda automatically. You can still switch to Month from the view selector, but Day / 3 Day / Week are deliberately gated because they need a wider grid.
Scroll to now
The time grid is tall — it shows the whole 24-hour day. Two things make sure you never waste time scrolling to find the right spot:
- Auto-scroll to working hours — when you load the calendar or switch views, the grid is automatically scrolled to start near your team's earliest shift. You land on a useful part of the day instead of midnight.
- Scroll to now — the clock button in the header jumps to today and scrolls to the current time. A thin horizontal line on the grid marks the exact moment — hover the grid to also see a second line with the time under the cursor.
Filtering
When the grid gets busy, filters narrow it down. There are three filter categories, all shown as chips above the grid once active.
Member filter
- 1Click the Scheduled Team dropdown in the header.
- 2Tick one or more team members. Ticking nothing (or using Scheduled Team at the top of the list) brings everyone back.
- 3The grid now shows only those members' columns in Day view, and only their appointments in 3 Day / Week / Month / Agenda.
Status filter
- 1Click the Filter button in the header to open the Filters modal.
- 2Tap any of the six status chips: Scheduled, Confirmed, In Progress, Completed, Cancelled, No-show.
- 3Selecting more than one shows appointments in any of the chosen statuses.
Service filter
- 1In the same Filters modal, open the Services dropdown.
- 2Pick one or more services — only appointments that include any of those services will show.
Active filter chips
Whenever a filter is active, a row of chips appears just below the header. Each chip shows the category (Status, Services) and the currently selected values. Click the × on a chip to remove that category, or Reset Filters to clear everything at once.
Creating an appointment
There are three ways to start a new appointment. Pick whichever is closest to what you're looking at.
- Click New Appointment in the header — the generic entry point.
- Click an empty cell in the Day view grid — the form opens pre-filled with that member, date, and start time.
- Use the three-dot menu on a member's column header and choose New Appointment — the member is pre-selected.
Filling out the form
- 1Choose the client. Type a name to search your existing clients, or switch to Walk-in and enter the name and phone manually.
- 2Add services. Each service row has its own assigned member, duration, and price. The service dropdown auto-fills duration, price, and tax from your catalogue.
- 3Add more services with + Add Service if the booking covers more than one — for example a cut and a colour. Total duration and price update automatically.
- 4Check the date. It's pre-filled from where you clicked, but you can pick a different day.
- 5Set the start time (hour + minute dropdowns, 15-minute increments). The end time is calculated from the total service duration.
- 6Optionally type a note in the Notes field — anything the team doing the service should know.
- 7Hit Save. You'll see an Appointment created toast and the booking appears on the grid immediately.
Assigning members per service
For multi-service appointments you can assign a different member to each service — for example, hair with Sarah and nails with Maya at the same visit. Each service shows on the grid in that member's column.
Member availability
The member dropdown only shows team members who are configured in the catalogue to perform that service. If the person you want isn't there, add them to the service under Catalogue → Services.
Editing & rescheduling
- 1Click the appointment block on the grid (or the appointment row in Month / Agenda view). The Appointment Details panel opens.
- 2Click Edit at the top. The same form you used to create the booking reopens, pre-filled.
- 3Change whatever you need — time, date, member, services, client, notes.
- 4Save. You'll see an Appointment updated toast. The grid refreshes immediately, and if the change affects the client (new time or new service) the notifications set up for your workspace will fire.
Quick time move
To move an appointment to another slot with the same member on the same day, it's often faster to edit and change just the start time — the end time recalculates automatically.
Appointment statuses
Every appointment has exactly one status. You move it through the lifecycle as the client's visit progresses.
- Scheduled
- Just booked. The client hasn't been contacted or confirmed yet.
- Confirmed
- Client has confirmed they're coming.
- In Progress
- Client is in the chair right now.
- Completed
- Service finished. Next step is usually checkout.
- Cancelled
- Booking cancelled. Frees up the slot on the grid (greyed out by default).
- No-show
- Client didn't turn up. Tracked separately from cancellation so you can follow up.
How to change status
- From the Appointment Details panel — buttons at the bottom match whatever transitions are valid from the current status.
- From the appointment block on the grid — the right-click / long-press / status menu icon shows the same transitions in a compact menu.
Valid transitions
- Scheduled
- → Confirmed · Cancelled · No-show
- Confirmed
- → In Progress · Cancelled · No-show
- In Progress
- → Completed · Cancelled
- Completed / Cancelled / No-show
- Final — no further transitions.
Colour on the grid
By default, appointments are coloured by the service category (Haircuts = violet, Colour = pink, etc). You can change this in Settings → Calendar:
- Category (default) — colour comes from the service category.
- Status — appointments are coloured by their current status, using the palette under Appointment status colours.
- Member — each team member gets their own colour.
- Custom status colours — override each status's colour if you want, say, Confirmed to be green and Cancelled to be grey.
Checkout from an appointment
When the service is done, you can take payment without leaving the Calendar.
- 1Open the Appointment Details panel by clicking the appointment block.
- 2Click Checkout. A sales slideover opens with the appointment's services, client and price already loaded.
- 3Adjust quantities, add products if needed, pick the payment method, and complete the sale.
- 4The appointment is marked Completed automatically and the receipt prints (or is sent to the client by WhatsApp / SMS / email based on your notification settings).
Partial payments
If the client pays only part of the amount, the rest is tracked as an outstanding balance on their client profile — you can collect it later from Clients → Balances.
Blocked times
Blocked time is any part of the day where a team member is not available to take bookings: lunch, training, a dentist appointment, an entire day off. Blocked time shows up as a muted, striped block on the grid and prevents online clients from booking the slot.
Adding blocked time
- 1Click Add Blocked Time in the header — or pick it from the three-dot menu on a member's column.
- 2Choose the team member the block applies to.
- 3Optionally pick a Type — Lunch, Break, Day off, etc. The type has a colour and a default title.
- 4Fill in a short Title or Reason so the team knows what the block is for. "Dentist", "Staff meeting", "Maintenance" — whatever is helpful.
- 5Pick the date, start time, and end time.
- 6If it repeats, set Repeat to Daily, Weekly, or Monthly, then pick a Repeat until date.
- 7Save. The block appears on the grid for all the dates it covers.
Editing blocked time
Click a blocked-time block on the grid to open its details. From there you can Edit (same form as creation) or Delete.
Deleting a recurring block
Recurring blocks have three delete options:
- This occurrence
- Removes only the block on the date you clicked — the rest of the series stays.
- This and future
- Removes this date and every later occurrence — keeps the past ones on the record.
- All occurrences
- Deletes the entire series from first to last.
Managing block-time types
- 1Inside the New / Edit Blocked Time form, click Manage Types.
- 2Add a new type by typing a name and picking a colour, then click Add.
- 3Remove a type with the × button next to its name — existing blocks using that type are not deleted, they just lose the type link.
Hiding blocked time
If you prefer a cleaner calendar and only want to see appointments, turn off Settings → Calendar → Display blocked time. The blocks are still there in the data and still prevent online bookings — they're just hidden on the grid.
Waitlist
The waitlist is a queue of clients who couldn't get the time they wanted. When a slot opens — either because someone cancels, or because a new slot appears — you can notify them, and book them in one tap.
Opening the waitlist
Click Waitlist in the calendar header. A slideover opens with three tabs:
- Waiting
- Active entries — people currently hoping for a slot. Notified entries count here too.
- Expired
- Entries whose preferred time window has passed without being booked.
- Booked
- Entries you successfully turned into appointments.
Each tab shows a count next to its label. You can also change the Sort between Oldest (first added first) and Newest.
Adding an entry
- 1Click Add to Waitlist inside the slideover.
- 2Pick the service the client wants.
- 3Pick an existing client or switch to Walk-in and enter name, phone, and email manually.
- 4If they have a preferred time window, tick Preferred time and set a from-hour and to-hour (for example 10:00 to 14:00). Leave it unchecked if any time is fine.
- 5Add a note if the team needs extra context.
- 6Click Add. The entry appears under Waiting.
Notifying and booking
- Notify — sends a message to the client that a slot is available (uses the notification channel configured in your workspace). The entry moves to the Notified state, still under the Waiting tab.
- Book — opens the New Appointment form pre-filled with the waitlist entry's service, client, and preferred time. Save the appointment and the entry is marked Booked automatically.
- Cancel — removes the entry from the waitlist entirely.
QR scan check-in
Every appointment has a QR code embedded in its confirmation message. Clients can show it at reception on arrival, and your team can scan it to open the appointment in one tap — no searching.
Scanning
- 1Click the QR icon (Scan QR Code) in the calendar header.
- 2Grant camera access the first time — the browser asks once and remembers the choice for your device.
- 3Point the camera at the client's QR code. When it's in focus, the Appointment Details open automatically.
- 4From there you can update the status to In Progress, edit, or check out.
No camera? Use manual entry.
If the camera can't be used — browser permission denied, or the device has no camera — the scan modal has a manual entry field at the bottom. Type or paste the appointment ID from the confirmation link and press enter.
Older browsers
QR scanning uses the browser's BarcodeDetector API. On older browsers you'll see a QR scanning not supported message — use the manual entry field below, or update the device.
Deep links
The calendar reads three optional query parameters on load. These are useful for notifications, the client portal, the dashboard widgets, and any automation that needs to send a team member straight to the right place.
- ?date=YYYY-MM-DD
- Opens the calendar on that date. Parsed as a local date, so no timezone shift.
- ?time=<ISO>
- Opens the calendar on the date from the ISO timestamp. Example: ?time=2026-04-24T14:30:00
- ?scan=<id>
- Opens the calendar and immediately opens the Appointment Details for the appointment with that scan ID. This is the URL embedded in the QR codes.
Sending someone to a slot
A link like /dashboard/calendar?date=2026-05-01 lands a team member on May 1st in Day view. Perfect for pinning in your staff chat when discussing a specific day.
Settings that affect the calendar
A handful of tenant-wide settings change how the calendar behaves. You'll find them all under Settings → Calendar.
- First day of week
- Monday or Sunday. Controls the week grid and the month view layout.
- Appointment colour source
- Category (default), Status, or Member. Controls what colour an appointment block takes on the grid.
- Appointment status colours
- A custom colour per status, used when colour source is Status (or to override the default status palette).
- Display blocked time
- Toggle whether blocked-time entries appear on the grid. They still block online bookings either way.
Changes here apply to every team member in the workspace — the calendar refreshes automatically next time it's opened.
Tips & best practices
- Run the day from Day view. It's built for reception — every member is a column, every click is an action, and you always know who is free.
- Plan the week from Week view. It gives you pattern at a glance — gaps to fill, days that are overloaded.
- Turn Scheduled into Confirmed as soon as the client confirms — the status change is what drives reminder messages and reports.
- Mark No-show rather than Cancelled when the client simply didn't turn up. No-show rates are tracked separately in Reports and are the basis for any no-show fees you set up in Catalogue.
- Use blocked time for everything non-bookable. If a member is at a training course, block it — the online portal won't let clients book, and the team sees exactly why the slot is empty.
- Keep the waitlist visible. Encourage reception to add every "we're fully booked" caller — the more entries, the easier it is to fill last-minute cancellations.
- Customise status colours once. A one-minute setup in Settings → Calendar makes the grid instantly readable — green = confirmed, amber = scheduled, grey = cancelled.