Appointment and booking assistants
Build booking experiences for clinics, salons, spas, and gyms using conversation nodes and Google Calendar availability and event actions.
- TRIGGERConversation Start
- STEP 01Find Available Time Slots
- STEP 02Create Google Calendar Event
Plan availability #
| Feature | Free | Starter | Pro | Enterprise |
|---|---|---|---|---|
| Active Lines | 2 | 5 | 15 | Unlimited |
| Active workflows | 3 | 10 | 45 | Unlimited |
Allowances follow the published Chatigram pricing page. Your organization’s Billing & Plans screen confirms its subscription and current usage. Plans can change. Plan information reviewed 2026-11-10.
Choose the right starting point #
| Business | Start with | Important booking rule |
|---|---|---|
| Clinic | Clinic appointment request | Collect scheduling information, not a medical history |
| Hair salon or spa | Salon and spa intake | Match the service duration and staff or room resource |
| Gym or studio | Gym session request | Separate a one-to-one session from a class with limited capacity |
| Any appointment business | Change or cancel a request | Identify the existing booking before changing an event |
Each starter provides a copyable conversation workflow. It collects a request and explains the next step. Add the Google Calendar actions below in your workspace before promising an automatically confirmed appointment.
The intake starters in this guide rely on your team reviewing requests in Inbox. Use a team-supported Line with Private AI mode disabled for that process. A private AI Line cannot provide the same human-review path; design another appropriate follow-up before using it for booking requests.
Connect Google Calendar #
Connect the intended Google Calendar account in App Connections. Check that it can access the calendar used for appointments. Choose the same account and Calendar ID consistently in the availability and event nodes.
For one calendar per team member, choose the calendar that belongs to the requested person. For a shared calendar, make sure your resource identifiers and scheduling rules describe the intended staff member, room, or service.
Find available time slots #
Add Find Available Time Slots. Configure Google Account, Calendar ID, Availability Profile, Start Date, Search Mode, and Time Zone. The node also offers calendar-system and locale options for date formatting.
Use an IANA timezone such as America/Toronto or Europe/Paris. A timezone name handles local clock changes better than treating a fixed UTC offset as the business timezone.
Here is a sample profile for a single service resource. Replace its identifiers and working rules with your actual setup:
resource-code: SERVICE-A
resource-title: Appointment team
appointment-duration: 30min
unavailable-days: saturday, sunday
available-hours: 09:00-17:00
blocked-times: daily 12:00-13:00
For conflict checking, the availability node’s contract asks for at least one resource identifier, such as resource code, title, email, or location. Keep the resource definition consistent with how events are created. A profile containing only working hours is not the same as a complete resource conflict setup.
Let the customer choose #
Present the returned availability in a clear, readable form. Collect the selected date/time and repeat the service, date, local time, and duration before creating an event. Validate the choice rather than treating arbitrary customer text as an already-accepted slot.
If no suitable slot is available, offer a different date or a team follow-up. Do not send a success message just because a search completed.
Create the Calendar event #
Add Create Google Calendar Event after the customer confirms the proposed appointment. Configure Google Account, Calendar ID, Event Title, Start Time, End Time, and Time Zone. Use the applicable Availability Profile to check the requested slot during creation.
Use a short event title with only the scheduling details your team needs. Optional fields include description, location, attendees, calendar system, and locale. The Send Updates choice controls notifications: all, externalOnly, or none. Decide whether invitations should be sent; do not assume an event will email everyone by default.
Connect all creation outcomes #
| Branch | What the assistant should say or do |
|---|---|
| Created | Confirm the appointment and provide the relevant details. The node exposes Event ID and Event Link for later use. |
| Unavailable | Explain that the requested time is unavailable and offer another choice or date. |
| Error | Explain that the booking could not be completed and provide a useful way to contact the team. |
Only the Created path should claim that an appointment was booked. Availability can change while a customer decides; handle Unavailable even after a successful slot search. Do not promise that a multi-step workflow provides an atomic reservation lock.
Reschedule, cancel, and follow up #
Use Show Google Calendar Event to inspect a known booking, Update Google Calendar Event for a reviewed change, and Delete Google Calendar Event only for an intended cancellation. Match the correct appointment and confirm the requested operation before changing it.
Retain the Event ID in a suitable authorized record if your process needs later changes. Built-in database availability depends on the plan; the intake starters do not require a database.
Test before taking bookings #
Use a test calendar and controlled recipients. Test an available time, an already-busy time, a request outside working hours, a missing field, a different timezone, and a failed connection. For group classes, also test the capacity rule; a calendar event by itself does not enforce the number of available seats.
Use the AI prompt library to ask the Chatigram plugin to discover the actual available Calendar nodes and prepare the complete workflow for your organization.