The CRM events module covers two distinct flows: reservations (appointment scheduling, service requests, walk-up queues) and tickets (support cases tied to a customer). It is separate from the standalone Events module which handles paid ticketed events with sessions and check-ins. Use this when you're booking time on a stylist's calendar; use the standalone module when you're selling a concert.
Events
/crm/events/get/:id?JWT/crm/events/createJWT/crm/events/updateJWT/crm/events/delete/:idJWTA CRM event is a calendar entry attached to a contact, lead, or merchant — a meeting, demo, follow-up call. It's lightweight and integrates with the activity log so a sales rep sees events in the timeline.
Reservations
Reservations are bookable time slots against a service or service point.
/crm/reservations/definitionsJWT/crm/reservations/slotsNo auth/crm/reservations/createNo auth/crm/reservations/updateJWT/crm/reservations/get/:id?JWT/crm/reservations/by-email/:email/:reservationNumber?No auth/crm/reservations/cancel/:email/:reservationNumberNo auth/crm/reservations/delete/:idJWTdefinitions returns the bookable services the org has configured (haircut, consultation, demo) — each with duration, price, required staff, and buffer time. slots accepts a date range and a definition ID and returns available time windows; a public booking widget calls this to render an availability grid.
// POST /crm/reservations/create
{
"definitionId": "def-haircut-30",
"slot": { "start": "2026-05-10T14:00:00Z", "end": "2026-05-10T14:30:00Z" },
"customer": { "email": "[email protected]", "name": "Alice", "phone": "+15551234567" },
"notes": "First-time client"
}
Cancellation is by email + reservation number, no auth required, so confirmation emails can carry a "cancel" link that works without login.
Service points and queues
A service point is a physical location with capacity (a chair, a counter, a service desk). Customers either reserve a slot in advance or join a walk-up queue.
/crm/reservations/service-point/get/:id?JWT/crm/reservations/service-point/createJWT/crm/reservations/service-point/updateJWT/crm/reservations/service-point/delete/:idJWTWalk-up queue
/crm/reservations/queue/joinNo auth/crm/reservations/queue/check-in/:idJWT/crm/reservations/queue/start/:idJWT/crm/reservations/queue/complete/:idJWT/crm/reservations/queue/no-show/:idJWT/crm/reservations/queue/status/:servicePointNo authA customer scans a QR code, calls queue/join, and receives a position number. Staff calls start when serving them, complete when done, or no-show after a grace period. queue/status is public so display screens and mobile lookups don't need auth.
Service requests
/crm/reservations/service-request/get/:servicePoint?JWT/crm/reservations/service-request-queue/joinJWT/crm/reservations/service-request/update/:idJWTService requests are richer than queue entries — they carry diagnostic notes, parts, and labour estimates. Used for repair shops and service desks.
Reminders and meetings
/crm/reservations/send-reminder/:reservationIdJWT/crm/reservations/meeting/tokenJWT/crm/reservations/meeting/createJWT/crm/reservations/meeting/validateJWTmeeting/create provisions a video room (Daily.co or similar via the integrations module) and returns the token customers use to join. Reminders fire on a schedule defined per definition.
Support tickets
/crm/tickets/createJWT/crm/tickets/create-ticketJWT/crm/tickets/email/create/:emailNo auth/crm/tickets/get/:number?JWT/crm/tickets/get-by-email/:email/:number?No auth/crm/tickets/updateJWT/crm/tickets/delete/:idJWTTickets attach to a contact and carry status (open, in-progress, resolved, closed), priority, assignee, SLA, and a thread of messages.
Replies and comments
/crm/tickets/reply/:ticketIdJWT/crm/tickets/messages/:ticketIdJWT/crm/tickets/comments/:ticketIdJWT/crm/tickets/comments/:ticketIdJWTReplies are customer-visible. Comments are internal staff notes.
Escalation and SLA
/crm/tickets/escalate/:ticketIdJWT/crm/tickets/calculate-sla/:ticketIdJWT/crm/tickets/sla-status/:ticketIdJWT/crm/tickets/canned-responsesJWT/crm/tickets/bulk-updateJWTSLA breaches trigger the escalation processor in the Sync module, which fires automation rules and notification jobs.
Reservation and ticket events feed the activity log automatically. A reservation cancellation creates an "appointment_cancelled" activity on the linked contact; SLA breaches create "sla_breach" activities.