Class services are created in Offerings → Services, not in Appointments. Set the
service type to Class there, along with its price, duration and payment mode. You then
schedule the individual sessions from the Appointments calendar.
How classes differ from 1:1 appointments
Seats, not slots
A 1:1 appointment takes a staff member’s slot. A class has a Capacity — several
clients book the same session until it fills.
No rescheduling
Clients can cancel a class from their booking link, but they can never reschedule one to
a different time. There is no other slot to move to.
A waitlist
When a class is full, clients can join a waitlist and are promoted automatically when
someone cancels. 1:1 appointments have no waitlist.
Different automation triggers
Booking a seat fires Class booked, not Appointment booked. See
Automation triggers.
Schedule a session
1
Create the class service
In Offerings → Services, create a service and set its type to Class. Set the
price and payment mode here — they apply to every session of that class.
2
Open the calendar
Go to Appointments → Calendar. This is where you View and manage all bookings,
classes and blocked time in one place.
3
Add the session
Select New class, pick the class service, and set the date and time. If you see
No class services available. Create a class service first., the service type is still
set to appointment.
4
Set capacity and waitlist
Set Capacity to the number of seats, and turn on Enable waitlist if you want
clients to queue for a place once it fills.
Capacity
Capacity is the seat count for one session, not for the class in general — each session carries its own. A client who tries to book a full session sees Sorry, that class is now full. A client who is already booked sees You’re already booked for this class.: the same contact can only hold one seat in a session. Cancelling a session (rather than a single seat) stops it taking any further bookings.The waitlist
With Enable waitlist on, a client booking a full session is added to the queue instead and sees:This session is full, so you’ve been added to the waitlist. We’ll let you know if a place opens up.Joining the waitlist fires the Joined class waitlist trigger. A waitlisted client holds a position in the queue but has no booking yet — so they get no reminders and nothing appears on your calendar for them.
When a seat opens up
When a booked client cancels, DMLY promotes the client at the front of the queue — first in, first promoted — and messages them automatically. A free class gets the class confirmation message; a pay-before class gets a checkout link instead (see Paid classes). DMLY also fires the Class seat opened trigger for the promoted client at the same time.In the trigger picker this trigger is called Class seat opened. Its internal code is
class_slot_opened and its webhook topic is class.seat_opened — all three names refer to
the same trigger.Paid classes
A class uses the same payment modes as any other service — set them on the service in Offerings → Services. Two behaviours are worth knowing before you charge for a class. Pay before booking needs a connected gateway. With no gateway connected, DMLY refuses the booking up front with Online payment isn’t available right now. Please contact us to book this class. — no seat is held. Connect a gateway first; see Payments. Promotion off a paid waitlist is not a free seat. When a place opens on a pay-before class, the promoted client is moved into a payment hold, not a confirmed seat. They are sent a checkout link and still have to pay within the hold window; if they don’t, the seat is released and the next person in the queue is promoted.What clients can do afterwards
From their booking link a client can cancel a class seat, subject to the cancellation deadline you set for classes. They cannot reschedule it — that option does not appear for a class booking at all. If someone needs a different session, they cancel and book the other one, or you move them from Appointments → Calendar.Online classes
If the class service uses the Zoom (auto link) location, DMLY creates one Zoom meeting for the session and every booked client gets that same join link. Individual seats never get their own meeting. See Zoom.A class disappeared from the booking page
A class disappeared from the booking page
Check three things on the service in Offerings → Services: it is active, it is set to be
publicly visible, and its type is Class. Then check the session itself still exists on
Appointments → Calendar, hasn’t been cancelled, and is not in the past. A full session
does not disappear — it still shows, as Full — join waitlist or, with the waitlist off,
as a Full row that can’t be selected.
Nobody is being messaged when a place opens up
Nobody is being messaged when a place opens up
DMLY sends the promotion message itself, so the cause is that built-in message failing
rather than a missing flow. Check the client is reachable on WhatsApp, and for a pay-before
class check a gateway is still connected so the checkout link can be minted.If you added your own flow on Class seat opened and only that is missing, check the same
contact — a contact who has opted out, or whose bot is paused, is skipped by the flow.
My appointment flow doesn't run for classes
My appointment flow doesn't run for classes
Booking a class seat fires Class booked, never Appointment booked — rebuild that
flow on Class booked.Cancelling is different: a cancelled seat fires Class cancelled and Appointment
cancelled, because the seat has a booking behind it. If you build a Class cancelled
flow while an Appointment cancelled flow already exists, both run and the client hears
from you twice.

