Skip to main content
Appointments is where you take bookings. It covers one-to-one appointments (a haircut, a consultation, a viewing) and classes, where several people share a seat pool in the same session. Clients book themselves on your public booking page, or you add a booking by hand from the calendar. Either way you end up with the same kind of booking record and the same reminders on WhatsApp. Payment is a booking-page thing only: a booking you add by hand takes no payment and sends no pay link, whatever the service’s payment mode.
Services are set up under Offerings, not under Appointments. This trips up almost everyone. The Appointments hub manages bookings, staff, availability and the booking page. The service itself (its duration, buffers, price, payment mode and reminder times) is edited at Offerings → Services. See Services for what each setting does and Offerings for the wider catalogue.

The pieces

Services

What you sell time for. A service carries the duration, buffers, notice rules, price and payment mode. Edited under Offerings.

Staff and availability

Who can be booked, their working hours in their own timezone, and one-off time off or blocks.

Booking page

Your public page. Clients pick a service, a staff member and a time without logging in.

Classes

Fixed sessions with a capacity and an optional waitlist. Each seat is still a booking.

Payments

Charge nothing, charge after the appointment, or hold the slot until the client pays.

Calendar and Zoom sync

Push bookings to Google Calendar, pull external events back as busy time, and mint Zoom links.

Custom domain

Serve the booking page on your own domain. Plan-gated: see below.

Meetings

The older scheduler. Same bookings underneath.
The Appointments hub itself has four working views: Bookings (a searchable, filterable list of every booking, split into Upcoming and Past), Calendar (View and manage all bookings, classes and blocked time in one place), Batches (Group clients and enrol them into classes in one action) and Staff (Manage staff members, their hours and the services they offer). Batches is the one that isn’t always there: it only appears for a teammate holding the Manage class batches permission, and it’s covered in Classes. Alongside them sit its settings, where the booking page branding, the booking form and the custom domain live.

The Bookings list

Bookings splits into two tabs, Upcoming and Past, and each one carries a live count in its own label. Upcoming means a booking that is still going to happen: confirmed, pending, or awaiting payment, and still in the future. A booking waiting on a payment is upcoming, not past. Everything else sits under Past: cancelled, completed, no-show, expired, payment-failed, and anything whose time has simply gone by. Above the table are a search box, Search by client, service or staff (it matches the client’s name, email or phone, the service name and the staff member’s name), and four dropdowns: All services, All staff, All statuses and All sources. The three sources are Automation, Booking page and Staff, so you can see at a glance what a flow booked versus what a client booked themselves. A Clear filters button appears as soon as anything is set, and a search that matches nothing reads No bookings match these filters. The list shows 20 rows at a time; switch it to 50 or 100 next to the pager at the bottom.
Every control writes to the address bar, so a filtered view is just a URL: bookmark “this week’s no-shows” or paste the link to a teammate and they see the same list.
The counts on the tabs honour whatever filters are set, and they are scoped the same way the rows are. A teammate without View team appointments sees only their own bookings, in the counts as well as in the list. See Roles and permissions.

How a booking comes together

A service says how long it takes and how far ahead you will accept it. A staff member says which hours they work and which services they offer. DMLY combines the two and shows only the times that survive every check:
  • The service’s minimum notice and booking horizon. Your workspace settings can tighten both (minimum notice is a floor, the booking horizon a ceiling) but never loosen them.
  • Busy time on the connected calendar.
  • The staff member’s existing bookings, plus the service’s buffers either side.
  • Any block or time off, whether it belongs to one staff member or to the whole workspace.
If a service is offered by more than one person and the client doesn’t choose, DMLY offers the union of everyone’s free times and picks an available staff member for them. Two people can hit Book on the same slot at the same time. Only one wins; the other sees Sorry, that time was just taken — please choose another. The slot is locked while the booking is written, so a double booking can’t slip through.
Working hours are wall-clock times in the staff member’s own timezone, not yours. If someone works 9:00–17:00 in Lagos and your workspace is in London, set 9:00–17:00 on their record and let DMLY do the conversion.

Add a booking by hand

The client on the phone, the walk-in at the counter: book them yourself from the Calendar view. New appointment asks for a Contact, Staff, Service, Date and Start time (in 15-minute steps), a starting status of Confirmed or Pending, and has a Notify client switch that decides whether the confirmation message goes out. A booking left at Pending isn’t held open indefinitely; see Past bookings close themselves. The contact field is built for the phone-in-hand moment:
  • Search and select a client finds existing contacts by name, email or phone as you type.
  • If they’re new, select Create new client and the search swaps to three inline fields (Name, Email, Phone) so you create the contact and the booking in one go, without leaving for the Contacts page. (← Search existing takes you back if you change your mind.) The contact this creates is a real CRM record, marked as arriving via an appointment.
Give the new contact a phone number when you have one; that’s what lets the confirmation, the reminders and everything after reach them on WhatsApp.
A booking you add by hand never takes payment (no hold, no pay link), whatever the service’s payment mode. If the client should pay, send them the booking page link instead, or invoice them afterwards from Finance.

Book a recurring series

For a client who comes back on a schedule (weekly physio, a standing consultation), book every date in one go instead of one appointment at a time. From the Calendar view, open New appointment and turn on Repeat. Repeat is hidden while you’re using + Add another time to book several one-off dates for the same client, and vice versa; the two are separate ways to book more than one slot at once. With Repeat on, three fields appear:
  • Frequency: Daily, Weekly, Every 2 weeks or Monthly.
  • Occurrences: how many appointments to create, from 2 up to 52.
  • If a slot is taken: Skip taken slots (the default) books every date that’s free and quietly skips the ones that aren’t, or Require all slots free, which books nothing at all if even one date in the series is already taken.
Every date in the series shares the same contact, staff member and service, and advances by wall-clock time in the service’s own timezone: a “every Monday 9am” series stays at 9am even across a daylight-saving change. Rather than repeating the usual per-booking noise for every date, the whole series fires the appointment-booked automation once and pushes the calendar/Zoom events in the background. It also sends one consolidated confirmation instead of one per date, though the client and your team don’t get the same amount of detail. The client’s message lists the dates: the first six, then “and N more” for a longer series. Your team’s heads-up is shorter and, on WhatsApp, doesn’t mention the series at all: it reads exactly like an ordinary new-booking alert for the first date, with no count and no sign that more dates followed. Only the email version names the number of appointments and the starting date. Loyalty and credits still apply to each occurrence individually.
A recurring series is booked by staff from the Calendar; a client can’t start one themselves from the booking page, only book single appointments there. And like any hand-added booking, a series never takes payment, whatever the service’s payment mode; see the note above.

Cancelling or rescheduling one date vs. the whole series

Reschedule always moves a single date, for you and for the client. Nothing shifts every remaining occurrence at once. To move the whole series, cancel what’s left and book a fresh one. Cancelling is where the choice lives, and it defaults to the wider option:
  • From the Calendar. Opening a recurring booking’s detail panel shows a ↻ Recurring badge and two destructive buttons: Cancel meeting, which cancels only that date, and Cancel series, which cancels that date and every later one in the series.
  • From the client’s own booking-management link. Cancelling a recurring booking shows a checkbox, Cancel all upcoming in this series, checked by default. Left checked, it cancels this date and every later one; unchecked, it cancels only this one.
Either way, “the whole series” only ever means this occurrence and everything scheduled after it; past dates, and any occurrence already cancelled or completed, are left untouched.
The client’s cancel checkbox is checked by default, so leaving it as-is cancels every remaining date, not just the one they opened. If they only meant to skip one visit, they need to uncheck it first.

Appointment notes

A booking can carry internal notes: staff-only text that the client never sees. There are three ways they get written, and one place you read and edit them:
  • On the Calendar. Open a booking in the Calendar view and its details panel has a Notes section: select Add note (or Edit note) to write or change it right there. The New appointment form takes a note too, so you can jot one as you book.
  • A flow can write them. The Add Appointment Note step (in the flow builder’s Appointments group) appends a line to the booking’s notes; its own hint says “Internal note — never sent to the contact.” Point it at {{appointment.id}} in an appointment-triggered flow to record, say, the answer a client gave to a pre-visit question.
  • The API can read and write them. Create a booking with notes, or read them back from the appointment endpoints.
The Calendar editor replaces the whole note; the flow step appends to it. So a flow can keep adding lines automatically, and you can still open the booking and rewrite the lot by hand. The Bookings list doesn’t show the text; it just marks rows that have a note with a small icon, so sensitive detail stays on the booking itself.

What happens after the booking

Once a booking is confirmed, DMLY does the rest on its own:
  • Confirmation and reminders. Reminders are seeded from the service’s reminder times (for example, a day before and an hour before) and go out on the client’s channel. A reminder is skipped, not retried, if the booking is no longer confirmed, or the contact has opted out or has the bot paused. The meeting time is fixed, so a missed window can’t be caught up later.
  • Your team is told too. The assigned staff member gets their own message, and the rest of the active team gets a heads-up. Reminders never notify the team.
  • The calendar event. The event is pushed after the booking is saved, so a Google or Zoom failure can never lose you the slot. If nothing is connected, the booking simply lives in DMLY.
  • Automations fire. Appointment booked, cancelled, rescheduled, completed and no-show all work as triggers, and so does Appointment confirmed. That last one is narrower than it sounds. It fires only when a Pay before booking hold clears its payment, which happens when the gateway confirms it, when the payment is recorded against it in DMLY (by you, or by a flow’s Record Payment step), or when a flow’s Confirm Appointment step confirms it. It fires on top of Appointment booked rather than instead of it, so a flow on each runs both on a paid booking, while an ordinary or pay-after booking fires Appointment booked alone. Appointment completed has its own catch: it fires when the booking is marked completed by you on the Calendar, by a flow, or through the API, and not when DMLY retires a past booking automatically. Classes fire their own class events instead. See Triggers.
Clients manage their own booking from the link they were sent: they can cancel, and (for a one-to-one appointment) reschedule, each within the deadline set at Appointments → Settings → Booking policy. If the booking is part of a recurring series, cancelling offers a choice between just that date and the rest of the series. Cancellation deadline (hours) and Reschedule deadline (hours) are workspace-wide, not per-service: Hours before the start time. Set to 0 to allow up until the appointment. Both start at 0, so out of the box a client can cancel or reschedule right up to the start time. A class seat can be cancelled but not rescheduled to another time. Confirmed, upcoming bookings also get Add to calendar links.
Outside WhatsApp’s 24-hour window (which is where most reminders land), a message only goes out on an approved WhatsApp template. If the template isn’t approved yet, the message is dropped rather than sent as plain text; inside an open 24-hour window it still goes out as plain text. Check WhatsApp before you rely on reminders.

Past bookings close themselves

About a day after an appointment’s time has passed, DMLY closes it off for you. Any booking still sitting at Confirmed or Pending is moved to Completed roughly 24 hours after its scheduled time. Bookings that already reached an end state are never touched, so a decision you made by hand is never overwritten: that covers Cancelled, Completed and No-show, and it covers the Expired and payment-failed states an unpaid pay-before hold lands in, which is released within its 15 minutes rather than waiting for this. Class sessions are retired the same way. Three things follow from that, and they are the reason it is worth knowing about:
  • The client’s manage link goes read-only. It keeps working and still shows the booking’s details, but cancel, reschedule and the Add to calendar links all disappear, replaced by This meeting has passed.
  • You have about a day to record a no-show. On the Calendar, a 1:1 appointment’s Completed, No-show, Reschedule and Cancel meeting buttons disappear from its detail panel once the booking is retired. Class rosters are the exception: you can still mark Attended or No-show there afterwards.
  • It is silent. Retiring a booking does not fire the Appointment completed trigger, does not send the appointment.completed webhook, and awards no loyalty points. Those are tied to marking the booking complete yourself.
A reschedule is refused even before the sweep runs: once an appointment’s time has passed, the client’s manage link answers Could not reschedule. Please try again. rather than moving it.

When you charge

Each service has a Payment mode: No payment required, Pay after the appointment, or Pay before booking. All of it hangs off the price: Set a price above 0 to require payment. A payment mode on a free service does nothing. Pay-before is the one to understand. The slot is held for 15 minutes while the client pays, and nothing else happens until the money clears: no confirmation, no reminders, no calendar event, no booked automation. If they don’t pay, the hold is released and the slot goes back on sale. Pay-after confirms the booking first and sends a pay link afterwards. If no payment gateway is connected, a pay-before service can’t be booked at all: the client is turned away with Online payment isn’t available right now. Please contact us to book this service. The Payment mode field warns you about this: No payment gateway is connected, so clients won’t be able to pay. Connect one in settings. Connect one first: see Payments and gateways.

Appointments vs the Meetings hub

They are not two systems. Meetings came first; Appointments is the same thing grown up. A meeting type is a service now, and a booking made either way is the same record, so everything shows up in the Appointments calendar, in reports and in the client’s profile regardless of where it started. Use Appointments for new work. It is the one that has staff, per-staff hours, classes and waitlists, payment modes, the branded booking page and calendar sync. The one thing worth knowing about the older setup: if a service has no staff member with working hours of their own, DMLY falls back to the weekly hours and timezone stored on the service itself, the single-host way. Existing meeting types keep taking bookings; you don’t have to migrate anything to keep the lights on. Add staff when you need more than one bookable person or per-person hours. See Meetings for the older hub.

Appointment reports

The booking numbers are not in the Appointments hub: they are a tab of the Reports section, at Configurations → Reports → Appointments. The page itself is headed Appointment reports, Bookings, attendance and revenue across your services and staff. Five cards run across the top: Total bookings, Completed, No-show rate, Revenue (paid) and Avg class fill. Completed counts every booking in the completed status, which includes the past bookings DMLY retired automatically as well as the ones you marked yourself. Below them, By service and By staff break the same bookings down row by row (bookings, completed, no-shows, and revenue on the service table). Narrow all of it with From, To, Staff, Service and Status; the cards and both tables follow the filter. CSV downloads one row per booking (date, service, staff, client, status, source, price, paid). PDF downloads the By service and By staff breakdowns as a formatted report. Either one needs the Export reports permission. See Exporting reports.
A teammate without View team appointments only ever reports on their own bookings: the staff filter is forced to their own staff record, and a teammate with no linked staff record gets an empty report rather than the workspace’s figures. See Roles and permissions.

Before you start

1

Connect a channel

Reminders and confirmations go out over a channel. Connect WhatsApp first. See Connect WhatsApp.
2

Create your services

Go to Offerings → Services and add what you take bookings for, with the duration, price and reminder times. See Services.
3

Add staff and their hours

Add each bookable person, tick Accepts bookings, set their Working hours, and assign the services they offer. See Staff and availability.
4

Connect a gateway if you charge

Do this before switching any service to Pay before booking, or nobody can book it. See Payments.
5

Share your booking page

Preview it, brand it, then send the link on WhatsApp. See Booking page.
A dashboard inside the Appointments hub. The hub has no summary view of its own. The dashboard exists, but it lives in the Reports section instead: see Appointment reports above. (Bookings does count: each tab’s label carries the number of bookings in it.)A way to edit a whole class series from the dashboard. A class can now be created as a repeating series, and you can cancel one session or that session and every later one. What there is no screen for is editing a series after the fact: changing capacity, location or the host across later occurrences is an API call, not a button. See Classes.A way to reschedule a whole recurring series at once. Reschedule always moves one date, whether you or the client does it. To shift everything left in a series, cancel the series and book a fresh one.A staff member who can log in. A staff member is a bookable person, not a user. Linking them to a team account is optional: use Link team member if they should manage their own bookings.