Booking Services
The Booking Service is a complete appointment management system that lets you:
Overview
The Booking Service is a complete appointment management system that lets you:
- Create and manage booking services for your business.
- Schedule appointments with automatic reminders.
- Track the booking status throughout the entire lifecycle.
- Send automatic follow-ups after appointments.
- Integrate with your chatbot flows.
Important: Booking services are shared across all channels in your workspace, with a maximum limit of 20 booking services.
Key features
1. Booking services
- Define the different appointment types (consultations, meetings, services, etc.).
- Set the default duration for each service type.
- Configure custom service identifiers (Service UID)
- Enable or disable services as needed
2. Automated reminders
- Set up to 5 reminder sequences per service.
- Configure the reminder timing (days, hours, minutes before the appointment).
- Customize the reminder messages
- Automatic reminder triggering based on the scheduled time
3. Automated follow-ups
- Set up to 5 follow-up sequences per service.
- Send follow-ups after completed appointments or in case of a no-show.
- Configure the follow-up timing (days, hours, minutes after the appointment).
- Customize the follow-up messages.
4. Booking status management
Track bookings throughout their entire lifecycle:
- Pending: Initial booking state
- Confirmed: The booking has been confirmed.
- In Progress: The meeting/appointment has started.
- Completed: Successfully completed
- Cancelled: The booking was cancelled.
- No Show: The customer did not attend.
- Inactive: The service is no longer active
5. Booking information
- Start and end times
- Duration (in minutes)
- Location details
- Source tracking
- Custom metadata
- Rating system (0 to 5 stars)
- Cancellation/rescheduling reasons
- Complete audit logs
Getting started
Prerequisites
- Workspace account with the CRM/Lists/Bookings add-on enabled
- Access to booking service management
- Basic understanding of your workspace timezone.
Initial setup steps
How it works
System architecture
The booking system runs on scheduled jobs:
Booking service configuration
Step 1: Create a booking service
Required fields:
- Name: Display name for your service (maximum 100 characters)
- Service UID: unique identifier with alphanumeric characters (maximum 50 characters)
Cannot be changed after creation. Example:consultation_30min,demo_call,support_session - Description: Detailed description (maximum 1,000 characters)
- Default duration: Duration in minutes (0-1000)
- Status: Active or Inactive
Step 2: Configure reminders
For each reminder:
Reminder configuration example:
Reminder 1:
- Title: "Appointment Tomorrow"
- Days: 1, Hours: 0, Minutes: 0
- Description: "Your appointment is tomorrow at [TIME]"
Reminder 2:
- Title: "Appointment in 1 Hour"
- Days: 0, Hours: 1, Minutes: 0
- Description: "Your appointment starts in 1 hour"
Step 3: Configure follow-ups
For each follow-up:
Follow-up configuration example:
Follow-up 1:
- Title: "How was your appointment?"
- Days: 0, Hours: 2, Minutes: 0
- Description: "We'd love to hear about your experience"
Follow-up 2:
- Title: "Follow-up Survey"
- Days: 1, Hours: 0, Minutes: 0
- Description: "Please take a moment to complete our survey"
Booking management
Create a booking
Required information:
- Service UID or booking service ID
- Start time (in the workspace timezone)
- Initial status (Pending or Confirmed)
Optional information:
- Custom duration (overrides the default)
- Location (maximum 1,000 characters)
- Source (maximum 100 characters)
- Metadata (maximum 5,000 characters)
- Notes (maximum 1,000 characters)
Important notes:
- The start time must be in the future.
- Reminders are scheduled automatically.
Booking actions
1. Confirm booking
- Changes the status from Pending to Confirmed.
- Available only for pending bookings.
- Triggers the BOOKING_CONFIRMED event
2. Reschedule booking
- Updates the start time, the end time and the duration.
- The status can be changed to Pending or Confirmed.
- Preserves the reminders already sent.
- Reschedules the remaining reminders.
- The rescheduling reason must be provided (maximum 500 characters).
Restrictions:
- Bookings in progress cannot be rescheduled.
- Bookings in a final state (cancelled, completed, no-show) cannot be rescheduled.
3. Cancel booking
- Changes the status to Cancelled.
- Cancels all pending reminders and follow-ups.
- The cancellation reason must be provided (maximum 500 characters).
- Bookings in a final state cannot be cancelled.
4. Mark as completed
- Changes the status to Completed.
- Skips any unsent reminders.
- Schedules follow-up messages
- Bookings in a final state cannot be completed.
5. Mark as No Show
- Changes the status to No Show.
- Skips any unsent reminders.
- Schedules follow-up messages (as with completed bookings)
- Bookings in a final state cannot be marked as no-show.
6. Update rating
- Set the rating from 0 to 5 stars.
- Can be updated at any time.
- Logs the rating change.
7. Update booking details
- Modify the location, the source or the metadata
- Does not affect the status or the schedule.
8. Delete booking
- Permanently removes the booking.
- Deletes all associated reminders, follow-ups and logs.
- Cannot be undone
Reminders and follow-ups
Reminder behavior
Scheduling:
- Created when the booking is created.
- Calculated as: start_time - (days + hours + minutes)
- The status is "pending" if the time is in the future and "skipped" if it has already passed.
Sending:
- Reminders are sent when the scheduled time is reached.
- The status changes to "sent".
- Logs the sending time.
- Triggers the REMINDER_SENDING event
Status:
- Pending: Waiting to be sent
- Sent: Successfully delivered
- Skipped: Not sent (time elapsed or booking cancelled)
- Cancelled: The booking was cancelled.
Rescheduling:
- Only unsent reminders are rescheduled.
- Sent reminders are preserved.
- The new scheduled times are calculated.
Follow-up behavior
Scheduling:
- Created only when the booking is marked as Completed or No Show.
- Calculated as: end_time + (days + hours + minutes)
- The status is "pending" if the time is in the future and "skipped" if it has already passed.
Sending:
- Follow-ups are sent when the scheduled time is reached.
- The status changes to "sent".
- Logs the sending time.
- Triggers the FOLLOWUP_SENDING event
Important:
- Follow-up messages are not created at the time of booking.
- They are only scheduled after completion or in case of a no-show.
- Cancelled bookings do not receive follow-ups.
Booking lifecycle
State Transitions
Created → Pending → Confirmed → In Progress → Completed
↓ ↓
Cancelled No Show
Event Flow
- BOOKING_CREATED: Initial booking creation
- BOOKING_CONFIRMED: Booking confirmed by the user or by the system.
- REMINDER_SENDING: Each reminder as soon as it is sent.
- MEETING_STARTED: Start time reached
- MEETING_ENDED: End time reached (completes the booking automatically)
- BOOKING_COMPLETED: Completed manually or automatically
- BOOKING_NO_SHOW: Marked as no-show.
- FOLLOWUP_SENDING: Each follow-up as soon as it is sent.
- UPDATE_RATING: Rating updated
- BOOKING_RESCHEDULED: Booking time changed
- BOOKING_CANCELLED: Booking cancelled
Automatic status changes
- Pending/Confirmed → In Progress: When the start time is reached
- In progress → Completed: When the end time is reached (through an automatic process)
API Actions
Service Management
list_booking_services: Get all booking services.get_booking_service: Get the details of a service.list_booking_service_reminders: Get the reminders of a service.list_booking_service_followups: Get the follow-ups of a service.
Booking management
list_bookings: Get bookings (filtered by contact, service or status)get_booking: Get the details of a booking.create_booking: Create a new booking.confirm_booking: Confirm a pending booking.reschedule_booking: Change the booking time.cancel_booking: Cancel the booking.mark_booking_completed: Mark as completed.mark_booking_no_show: Mark as no-show.update_booking_rating: Update the rating.
Parameters
Common parameters:
bot_user_ns: Contact identifier (for testing)service_uid: Unique service identifierbooking_id: ID of a specific booking
Booking creation:
start_time: ISO 8601 UTC format (e.g.: "2020-01-02T12:30:00Z")duration: Minutes (optional; uses the default value if not specified)pending_or_confirmed: Initial statuslocation: Appointment locationsource: Booking sourcemetadata: Custom data (JSON string)notes: Additional notes
Status updates:
reschedule_reason: Rescheduling reason (maximum 500 characters)cancel_reason: Cancellation reason (maximum 500 characters)rating: Number between 0 and 5
Sequence Diagrams
Booking Creation Flow
User → System: Create Booking Request
System → Database: Create booking record
System → Database: Generate reminder schedules
System → Database: Save reminder records
System → EventDispatcher: Dispatch BOOKING_CREATED
EventDispatcher → Triggers: Process configured triggers
System → User: Return booking confirmation
Reminder processing flow
CronJob → System: Run reminder processor (every minute)
System → Database: Query pending reminders (2-hour window)
Database → System: Return pending reminders
System → Validator: Check booking status
Validator → System: Validate service is active
System → BotUser: Retrieve bot user details
System → EventDispatcher: Dispatch REMINDER_SENDING event
EventDispatcher → Triggers: Execute reminder flow
System → Database: Update reminder status to 'sent'
System → Database: Record sent timestamp
Booking completion flow
User/System → System: Mark booking complete
System → Database: Update booking status to 'completed'
System → Database: Skip unsent reminders
System → Database: Calculate follow-up schedules
System → Database: Create follow-up records
System → EventDispatcher: Dispatch BOOKING_COMPLETED
EventDispatcher → Triggers: Process completion triggers
System → User: Return success response
Meeting Start/End Automation
CronJob → System: Run booking processor (every minute)
System → Database: Query bookings with start_time reached
Database → System: Return matching bookings
System → EventDispatcher: Dispatch MEETING_STARTED event
System → Database: Update status to 'in_progress'
[Later...]
System → Database: Query bookings with end_time reached
Database → System: Return matching bookings
System → EventDispatcher: Dispatch MEETING_ENDED event
System → Database: Update status to 'completed'
System → Database: Schedule follow-ups
Rescheduling flow
User → System: Reschedule request
System → Validator: Check booking status
Validator → System: Validate can reschedule
System → Database: Get sent reminder sequences
System → Database: Delete unsent reminders
System → Database: Update booking times
System → Database: Increment reschedule_count
System → Database: Calculate new reminder schedules
System → Database: Create new reminder records
System → EventDispatcher: Dispatch BOOKING_RESCHEDULED
System → User: Return updated booking
Best practices
1. Service configuration
- Use clear, descriptive service names.
- Create unique service UIDs that are easy to reference.
- Set realistic default durations
- Test the reminder and follow-up timings before going live.
2. Reminder strategy
- Do not overdo the reminders (2 to 3 reminders are usually enough).
- Space the reminders appropriately (for example, 1 day before, 1 hour before).
- Make the reminder messages clear and actionable.
- Include the relevant booking details in the reminders.
3. Follow-up strategy
- Send a follow-up message right away to get feedback (2 to 4 hours later).
- Send the survey request 24 hours after the appointment.
- Keep the follow-up messages short and to the point.
- Always include the option to opt out.
4. Booking Management
- Always provide the cancellation reasons for analytics.
- Use the notes field to record important information.
- Update the ratings to track service quality.
- Review the booking logs regularly.
5. Testing
- Test the entire booking cycle before launch.
- Check the reminder timing in your timezone.
- Test rescheduling scenarios
- Check that the event triggers are firing correctly.
Troubleshooting
Common problems
Reminders are not being sent:
- Check that the reminder is set to "Active".
- Check that the scheduled time is in the future.
- Confirm that the booking service is active.
- Check that the booking status is not final.
Follow-up messages are not being sent:
- Follow-ups are only sent after completion or in case of a no-show.
- Check that the follow-up is set to "Active".
- Check that the booking was completed or marked as no-show (and not cancelled).
- Confirm that the scheduled time is correct.
Cannot reschedule:
- Make sure the booking is not in a final state.
- Check that the booking is not in progress.
- Check that the service is still active
Timezone problems:
- All times are stored in UTC.
- Display times are converted to the workspace timezone.
- Check that the workspace timezone settings are correct.
Limits and restrictions
- Maximum number of booking services: 20 per workspace.
- Maximum number of reminders: 5 per service
- Maximum number of follow-ups: 5 per service
- Field limits:
Name: 100 characters. Service UID: 50 characters. Description: 1,000 characters. Reminder/follow-up title: 50 characters. Reminder/follow-up description: 500 characters. Rescheduling reason: 500 characters. Cancellation reason: 500 characters. Location: 1,000 characters. Source: 100 characters. Metadata: 5,000 characters. Notes: 1,000 characters.

