NicoChatNicoChatDocsSearch the docs…
Sign in

Booking Services

The Booking Service is a complete appointment management system that lets you:

2026-08-12

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

1
Go to Booking Services.
Go to your workspace settings. Select "Booking Services" from the menu.
2
Create your first booking service
Click the "+ Booking Service" button. Fill in the required information. Configure reminders and follow-ups. Save your service.
3
Integrate with the chatbot
Use the Service UID to reference the service in your channel flows. Configure the triggers for booking events. Set up automated responses.

How it works

System architecture

The booking system runs on scheduled jobs:

1
Booking creation: When a booking is created, the system automatically generates the reminder and follow-up schedules based on your configuration.
2
Reminder processing:
Runs every minute. Checks pending reminders within a 2-hour window. Sends the reminders and updates the status to "sent".
3
Meeting events:
Meeting start: triggered automatically when the start time is reached. Meeting end: triggered automatically when the end time is reached.
4
Follow-up processing:
Scheduled after the booking is completed or in case of a no-show. Runs on the same schedule as the reminders. Only sends for completed or no-show bookings.

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:

1
Sequence number: Assigned automatically (1-5)
2
Title: Brief description (maximum 50 characters)
3
Description: Detailed message (maximum 500 characters)
4
Timing: Set when to send the reminder
Days before the start time. Hours before the start time. Minutes before the start time.
5
Status: Active or Inactive

Reminder configuration example:

texto
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:

1
Sequence number: Assigned automatically (1-5)
2
Title: Brief description (maximum 50 characters)
3
Description: Detailed message (maximum 500 characters)
4
Timing: Set when to send the follow-up message.
Days after the end time. Hours after the end time. Minutes after the end time.
5
Status: Active or Inactive

Follow-up configuration example:

texto
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

texto
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 identifier
  • booking_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 status
  • location: Appointment location
  • source: Booking source
  • metadata: 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

texto
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

texto
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

texto
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

texto
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

texto
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.