
Background and Purpose
This SOP provides a step-by-step guide to implementing multi-calendar booking using custom tools, Buildship, and your AI assistant. It enables your AI assistant to manage appointments across multiple calendars by retrieving available time slots and scheduling appointments seamlessly.
Overview
To implement multi-calendar booking, you’ll:-
Create two custom tools for each calendar:
- One for fetching available times
- One for booking appointments
- Use Buildship to create API endpoints for these tools
- Integrate the tools into your AI assistant by configuring their prompts and descriptions
- Test and refine the system to ensure smooth functionality
Prerequisites
- GoHighLevel Account: Ensure you have multiple calendars set up (e.g., mortgage and refinance)
- Buildship Account: To create and host API endpoints
- AI Assistant Platform: To add custom tools and configure prompts (e.g., buildassistants.app)
Step 1: Set Up Calendars in GoHighLevel
Create separate calendars for each service. Examples:- Mortgage Calendar: For mortgage-related appointments
- Refinance Calendar: For refinance-related appointments
Calendar Configuration
- Navigate to Calendar Settings in GoHighLevel
- Create distinct calendars for each service type
- Configure availability hours and booking rules
- Note each calendar’s unique ID for API integration
Step 2: Build Custom Tools Using Buildship
Create two tools for each calendar:- Get Available Times Tool
- Book Appointment Tool
A. Create the “Get Available Times” Tool

In Buildship:
- Create a new workflow
- Name:
get_times_<service>
(e.g.,get_times_mortgage
)
Functionality:
- Make a GET request to the GoHighLevel API to retrieve available time slots
- Endpoint URL: Use the GoHighLevel endpoint for free time slots
Configuration:
Query Parameters:calendarId
: The calendar’s unique IDstartTime
: Start date/time for the queryendTime
: End date/time for the query
Authorization
: Include your API key or tokenContent-Type
: application/json
Save and Deploy:
- Buildship provides an endpoint URL for this workflow
- Test the endpoint to ensure it returns available time slots
B. Create the “Book Appointment” Tool

In Buildship:
- Create a new workflow
- Name:
book_appointment_<service>
(e.g.,book_appointment_mortgage
)
Functionality:
- Make a POST request to the GoHighLevel API to book appointments
- Endpoint URL: The GoHighLevel booking endpoint
Configuration:
Request Body:Authorization
: API key or tokenContent-Type
: application/json
Save and Deploy:
- Buildship provides an endpoint URL for this workflow
- Test the endpoint to ensure appointments are created successfully
Step 3: Configure Tools in the AI Assistant
A. Add the “Get Available Times” Tool
In Your AI Platform (buildassistants.app):
- Create a custom tool
- Name: Match Buildship (e.g.,
get_times_mortgage
)
Configure the Tool:
- Description: “Fetch available times for the mortgage calendar.”
- Endpoint URL: Paste the Buildship URL
- Parameters:
name
: User’s nameemail
: User’s emailstart_date
: Preferred date range startend_date
: Preferred date range end
B. Add the “Book Appointment” Tool
In Your AI Platform (buildassistants.app):
- Create a custom tool
- Name: Match Buildship (e.g.,
book_appointment_mortgage
)
Configure the Tool:
- Description: “Book an appointment on the mortgage calendar.”
- Endpoint URL: Paste the Buildship URL
- Parameters:
time
: Selected appointment time in ISO 8601 formatclient_name
: Client’s full nameclient_email
: Client’s email addressclient_phone
: Client’s phone number
C. Link the Tools Together
Reference the “Get Available Times” tool in the “Book Appointment” tool’s description. Example: “Use this tool to book an appointment with the selected time retrieved from the get_times_mortgage tool.”Step 4: Update AI Prompts or Task Framework
Define the workflow for the AI:- Determine the service type (mortgage or refinance)
- Use the appropriate tools to fetch times and book appointments
Example Workflow:
Mortgage Service:
- Ask qualifying questions about mortgage needs
- Use
get_times_mortgage
to fetch available times - Present time options to the user
- Book appointment via
book_appointment_mortgage
Refinance Service:
- Ask qualifying questions about refinance needs
- Use
get_times_refinance
to fetch available times - Present time options to the user
- Book appointment via
book_appointment_refinance
AI Prompt Example:
Step 5: Test the Setup
Simulate User Interactions:
-
Test mortgage booking flow:
- Initiate conversation requesting mortgage consultation
- Verify AI fetches available times correctly
- Confirm appointment booking works properly
-
Test refinance booking flow:
- Initiate conversation requesting refinance consultation
- Verify correct calendar is accessed
- Confirm appointment appears in correct calendar
Verify Results in GoHighLevel:
- Check appointment creation: Confirm appointments appear in the correct calendars
- Validate user details: Ensure contact information is accurately captured
- Review timing: Verify appointments are scheduled at requested times
Step 6: Refine the System
Debug Issues:
- Verify API calls and parameters in Buildship workflows
- Check authentication and API key permissions
- Review error handling for failed requests
Optimize Responses:
- Make AI outputs clear and concise
- Improve appointment confirmation messaging
- Enhance time slot presentation
Prepare for Edge Cases:
- Handle no availability scenarios gracefully
- Implement rescheduling functionality
- Add cancellation capabilities
- Manage timezone differences
Example Configurations
Get Available Times Tool (Mortgage):
- Name:
get_times_mortgage
- Description: “Fetch available times for the mortgage calendar.”
- Endpoint URL: [Buildship Endpoint]
- Parameters:
name
,email
,start_date
,end_date
Book Appointment Tool (Mortgage):
- Name:
book_appointment_mortgage
- Description: “Book an appointment using the selected time from get_times_mortgage.”
- Endpoint URL: [Buildship Endpoint]
- Parameters:
time
,client_name
,client_email
,client_phone
Get Available Times Tool (Refinance):
- Name:
get_times_refinance
- Description: “Fetch available times for the refinance calendar.”
- Endpoint URL: [Buildship Endpoint]
- Parameters:
name
,email
,start_date
,end_date
Book Appointment Tool (Refinance):
- Name:
book_appointment_refinance
- Description: “Book an appointment using the selected time from get_times_refinance.”
- Endpoint URL: [Buildship Endpoint]
- Parameters:
time
,client_name
,client_email
,client_phone
Additional Tips
Consistent Naming:
- Keep tool names uniform across Buildship and the AI assistant
- Use clear, descriptive naming conventions
- Maintain consistency in parameter naming
Security:
- Protect API keys using secure storage or environment variables
- Implement proper authentication for all API calls
- Regularly rotate API credentials
Dynamic Parameters:
- Pass arguments like calendar IDs for scalability
- Use environment variables for different deployment stages
- Implement proper error handling and validation
Performance Optimization:
- Cache frequently requested time slots
- Implement proper timeout handling
- Monitor API call success rates
Scalability Considerations
Adding New Services:
- Create new calendars in GoHighLevel
- Build corresponding Buildship workflows
- Add new custom tools to AI assistant
- Update AI prompts to handle new service types
Multi-Location Support:
- Implement location-specific calendar management
- Add location parameters to tools
- Configure AI to determine appropriate location
Advanced Features:
- Implement waiting list functionality
- Add automatic reminder systems
- Create rescheduling and cancellation flows
Troubleshooting
Common Issues:
API Authentication Errors:- Verify API keys are current and have proper permissions
- Check Buildship authentication configuration
- Ensure GoHighLevel API access is enabled
- Verify calendar IDs are correct
- Check time format (ISO 8601) compliance
- Ensure contact information is properly formatted
- Confirm calendar availability settings
- Check date range parameters
- Verify timezone handling