This guide explains how to configure a single AI Employee to manage multiple business locations. By setting up location-specific attributes and schemas, you can dynamically route booking requests and data to the correct destination based on conversation context.
ββ IMPORTANT
β
This is an advanced Level C feature. It requires technical expertise and the ability to build custom integrations. Do not proceed if you are not comfortable working with JSON schemas and webhooks.
Enable the multi-location feature
Navigate to the Attributes page in the Builder.
Toggle Show Hidden to reveal hidden attributes.
Search for the
project_attributes_private_feature_flag_multi_locationattribute and set its value to True.Click Save and Publish All.
Configure business locations
Search for the
project_business_locationsattribute.Add your locations in this format:
Hell's Kitchen
+1 234 567 9992
637 10th Ave, New York, NY 10024, USA
East Village
+1 992 123 1112
10 Broadway Street, New York, NY 11273, USA
Snow Village
+1 156 126 2221
5 Cresent Street, Texas, 11273, USACopy the same location list into the
project_business_addressattribute. This ensures the AI Employee is contextually aware of the addresses during conversation.Click Save and Publish All.
Verify location indexes
Refresh the page after publishing.
Check the attribute
project_attributes_private_dynamic_business_locations_indexesand verify that the system has auto-generated indexes similar to the following:["default", "east_village", "snow_village"]
ποΈ NOTE
β
The index default corresponds to the first location listed in your configuration (e.g., Hell's Kitchen).
Configure availability check
You can use validation schemas to send location-specific data to third-party integrations when checking for appointment availability.
Locate the attribute
project_attributes_setting_booking_check_availability_typeand change it toendpoint.Enter your webhook URL in the
project_attributes_setting_booking_check_availability_urlattribute. You use a single webhook URL for all locations. The schema defined in the next step is responsible for sending the location-specific data that allows your system to differentiate between requests.Configure the JSON schema for each location index within the
project_attributes_setting_booking_check_availability_payload_schema_templateattribute.
Example availability schema
The following example demonstrates how to configure the schema to include a fixed location parameter for each index.
{
"default": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "User's preferred date for the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "User's preferred time for the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "Hell's Kitchen"
}
},
"required": ["date", "time", "location"]
},
"east_village": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "User's preferred date for the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "User's preferred time for the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "East Village"
}
},
"required": ["date", "time", "location"]
},
"snow_village": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "User's preferred date for the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "User's preferred time for the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "Snow Village"
}
},
"required": ["date", "time", "location"]
}
}Configure booking creation
You can apply the same multi-location logic to the final booking creation step. This ensures that when a booking is confirmed, the customer's details are sent to the correct location's system.
Use the project_attributes_setting_booking_payload_schema_template attribute to configure the JSON schema for each location index.
Example booking schema
This schema captures customer details and routes them with the correct location tag.
{
"default": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The full name of the customer booking the appointment"
},
"phone": {
"type": "string",
"description": "The customer's contact phone number"
},
"date": {
"type": "string",
"description": "The confirmed date of the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "The confirmed time of the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "Hell's Kitchen",
"description": "The specific business location for this booking"
}
},
"required": ["name", "phone", "date", "time", "location"]
},
"east_village": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The full name of the customer booking the appointment"
},
"phone": {
"type": "string",
"description": "The customer's contact phone number"
},
"date": {
"type": "string",
"description": "The confirmed date of the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "The confirmed time of the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "East Village",
"description": "The specific business location for this booking"
}
},
"required": ["name", "phone", "date", "time", "location"]
},
"snow_village": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The full name of the customer booking the appointment"
},
"phone": {
"type": "string",
"description": "The customer's contact phone number"
},
"date": {
"type": "string",
"description": "The confirmed date of the appointment in format YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "The confirmed time of the appointment in format HH:MM"
},
"location": {
"type": "string",
"const": "Snow Village",
"description": "The specific business location for this booking"
}
},
"required": ["name", "phone", "date", "time", "location"]
}
}How it works
When a user mentions a specific location (e.g., "Is there space at Snow Village?"), the AI Employee:
Identifies the location index (e.g.,
snow_village).Applies the specific schema defined for that index (either for availability or booking).
Sends the data to your configured webhook.
Example webhook payload when the user asks about booking availability at Snow Village:
{
"date": "2026-09-25",
"time": "17:00",
"location": "Snow Village"
}Example webhook payload when the user asks to make a booking at Snow Village:
{
"name": "Ryan",
"phone": "1234567890",
"date": "2026-08-20",
"time": "13:00",
"location": "Snow Village"
}Integration requirements and limitations
To successfully implement this feature, ensure your integration meets the following requirements:
Routing: The system must accept location identifiers and route requests to the appropriate CRM or booking system.
Logic: The integration must handle different location codes or parameters using a single webhook entry point.
Unsupported features
The multi-location feature does not currently support:
Appointment Request: The flow where information is collected and sent via email report to a manager.
Appointment via Link: The flow where an SMS with a booking link is sent to the user.
Appointment via Calendar: Direct calendar integrations without the webhook/CRM middleware.
Current limitations
Supported only for direct CRM/PMS booking integrations via webhooks.
Supports check availability and booking creation with location routing.
Supports approximately 50β100 locations, depending on configuration complexity.
