Connect the AI Chat Receptionist with ServiceTitan
By connecting the AI Chat Receptionist with ServiceTitan, your AI Receptionist can access customer information, schedule appointments, and manage service requests in your ServiceTitan account.
In this guide, you will set up your AI Receptionist to be able to:
- Look up customer information and service history;
- Schedule new appointments and service calls;
- Check technician availability and capacity;
- Create and update jobs in ServiceTitan;
- Retrieve real-time job status and updates; and
- Access customer billing and invoice information.
Why is connecting the AI Receptionist with ServiceTitan important?
ServiceTitan is a software platform used by many trades businesses (HVAC, plumbing, electrical, and other home services). When customers contact your business, they often need help with scheduling, job updates, or service history. This integration lets your AI Receptionist read and update data in ServiceTitan, such as customers, jobs, appointments, and related records.
Prerequisites & Setup
Before you connect your AI Receptionist to ServiceTitan, gather the following from your ServiceTitan account. You’ll only need to do this once.
What you need | Where to find it | Scopes / Notes |
---|---|---|
ServiceTitan Tenant ID | Settings → Integrations → API Application Access | Your unique tenant identifier |
API Application | Request access at developer.servicetitan.io | Create a custom app for your integration |
Client ID & Client Secret | Developer Portal → Your App → Credentials | OAuth 2.0 authentication credentials |
App ID & App Key | Developer Portal → Your App → App Details | Application-specific identifiers |
API Permissions | Settings → Integrations → API Application Access → Configure Permissions | jpm:jobs:read / jpm:jobs:write crm:customers:read crm:appointments:read / crm:appointments:write accounting:invoices:read settings:technicians:read |
ServiceTitan Help Resources
- Setting up API access (ServiceTitan Developer Portal)
- Managing integrations (API Application Access Guide)
- Understanding API permissions (ServiceTitan API Documentation)
Capability 1: Customer Lookup and Service History
This capability allows your AI Receptionist to search for customers and retrieve their service history, providing instant access to past jobs, upcoming appointments, and customer preferences.
Step 1: Add a ServiceTitan Customer Lookup Capability
- In Command Hub, navigate to AI → AI Workforce
- Select your AI Employee and click Configure.
- Under Custom Capabilities, click Add a capability.
Name: ServiceTitan Customer Lookup
Description: Searches ServiceTitan for customer information, service history, and account details to provide personalized support and context for customer inquiries.
Step 2: Configure ServiceTitan Customer API Tools
ServiceTitan Tool: searchCustomers
searchCustomers allows your AI Receptionist to find customers by name, phone number, or email address and retrieve basic customer information.
Summary | |
---|---|
ID | searchCustomers |
Description | Searches ServiceTitan customers by name, phone, or email and returns customer details including ID, contact information, and account status. |
Method | GET |
URL | https://api.servicetitan.io/crm/v2/tenant/{{tenant_id}}/customers |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Content-Type | application/json | ✓ |
Query parameters
Name | Location | Type | Description |
---|---|---|---|
name | Query | string | Customer name to search for |
phone | Query | string | Phone number to search for |
Query | string | Email address to search for | |
active | Query | boolean | Filter for active customers only (default: true) |
page | Query | integer | Page number (default: 1) |
pageSize | Query | integer | Results per page (default: 20, max: 100) |
ServiceTitan Tool: getCustomerJobs
getCustomerJobs retrieves the complete job history for a specific customer.
Summary | |
---|---|
ID | getCustomerJobs |
Description | Retrieves job history and upcoming appointments for a specific customer, including job details, technician assignments, and service status. |
Method | GET |
URL | https://api.servicetitan.io/jpm/v2/tenant/{{tenant_id}}/jobs |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Content-Type | application/json | ✓ |
Query parameters
Name | Location | Type | Description |
---|---|---|---|
customerId | Query | integer | ServiceTitan customer ID |
createdBefore | Query | string | Filter before date (ISO 8601) |
createdOnOrAfter | Query | string | Filter on/after date (ISO 8601) |
jobStatus | Query | string | “Scheduled”, “InProgress”, “Completed”, etc. |
page | Query | integer | Page number |
pageSize | Query | integer | Results per page (max 100) |
ServiceTitan Tool: createCustomer
createCustomer creates a new customer record in ServiceTitan when they don't already exist.
Summary | |
---|---|
ID | createCustomer |
Description | Creates a new customer record in ServiceTitan with contact and address details. |
Method | POST |
URL | https://api.servicetitan.io/crm/v2/tenant/{{tenant_id}}/customers |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Content-Type | application/json | ✓ |
Body parameters
Name | Location | Type | Description |
---|---|---|---|
name | Body | string | Customer’s full name |
Body | string | Email address | |
phoneNumber | Body | string | Primary phone |
address | Body | object | Street, city, state, zip |
doNotMail | Body | boolean | Opt-out (default: false) |
doNotService | Body | boolean | Service restriction (default: false) |
Step 3: Write the Customer Lookup Prompt
Customer Information Lookup Instructions
When to Search Customer Information
- When customer provides name/phone/email and asks about their account
- When asking about service history, past appointments, upcoming services, billing/invoices
- When identity verification is needed before sharing account details
Do not search for general questions about services, pricing, or policies.
Customer Search Process
- Search for Customer: Use most specific identifier (phone best). If multiple matches, ask for more info.
- Handle Status: If found, retrieve job history & upcoming appointments; if not, prepare to create new record.
- Retrieve Service History: With customer ID, get job history, note patterns and upcoming work.
Response Guidelines
When found: Greet by name, share relevant history/appointments, offer scheduling help.
When not found: Welcome as new, explain creation during booking, gather name/phone/email/address, then use createCustomer
.
Collect for new customer: Full name, phone, email, service address, special instructions.
Security: Verify identity; never share sensitive info.
Example Responses
Existing: “Hi [Customer Name]! I found your account… How can I help you today?”
New: “Welcome! I don’t see an existing account… I can set up your account and schedule your service.”
Capability 2: Appointment Scheduling and Job Creation
This capability enables your AI Receptionist to schedule new appointments, create service jobs in ServiceTitan, and manage the booking process end-to-end.
Step 1: Add a ServiceTitan Appointment Scheduling Capability
Name: ServiceTitan Appointment Scheduling
Description: Creates new appointments and service jobs in ServiceTitan, checks technician availability, and manages the complete booking workflow.
Step 2: Configure ServiceTitan Scheduling API Tools
ServiceTitan Tool: getAvailableTimeSlots
Checks technician availability and capacity to find open appointment slots.
Summary | |
---|---|
ID | getAvailableTimeSlots |
Description | Retrieves available appointment time slots based on technician schedules, job types, and capacity. |
Method | GET |
URL | https://api.servicetitan.io/settings/v2/tenant/{{tenant_id}}/technicians |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Query parameters
Name | Location | Type | Description |
---|---|---|---|
active | Query | boolean | Filter for active technicians only |
hasPermissions | Query | string | Filter by required permissions |
ServiceTitan Tool: createAppointment
Creates a new appointment and job in ServiceTitan.
Summary | |
---|---|
ID | createAppointment |
Description | Creates a new appointment and job with customer info, service details, and scheduling preferences. |
Method | POST |
URL | https://api.servicetitan.io/jpm/v2/tenant/{{tenant_id}}/jobs |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Content-Type | application/json | ✓ |
Body parameters
Name | Location | Type | Description |
---|---|---|---|
customerId | Body | integer | ServiceTitan customer ID |
locationId | Body | integer | Service location ID |
jobTypeId | Body | integer | Type of service job |
priority | Body | string | Job priority level |
summary | Body | string | Brief description |
appointmentStart | Body | string | Start time (ISO 8601) |
duration | Body | integer | Expected duration (minutes) |
Step 3: Write the Appointment Scheduling Prompt
Appointment Scheduling Instructions
When to Schedule Appointments
- Customer requests service (HVAC/plumbing/electrical/etc.)
- Maintenance/inspection/consultation
- Emergency that can wait for next available
- Follow-up or warranty work
Scheduling Process
- Identify Customer: Search; create new if not found.
- Gather Info: Contact info, service address, job type, problem, preferred time/date, urgency.
- Check Availability: Find slots by job type/skills; offer options.
- Create Appointment: Create job, set priority, add summary, link customer ID.
Service Type Guidelines
- HVAC: Repairs, tune-ups, installs, emergency no-heat/no-cool
- Plumbing: Leaks, drains, fixtures, emergency issues
- Electrical: Outlets, panels, lighting, emergencies
- General Maintenance: Inspections, preventive, warranty, follow-ups
Appointment Confirmation
- Provide job number, date/time, duration, technician (if known), contact for changes, prep instructions
Example
“I’ve scheduled your HVAC maintenance for [Date] at [Time]. Job #[Job#]… You’ll receive a confirmation call the day before.”
Capability 3: Job Status and Updates
This capability allows your AI Receptionist to provide real-time updates on job status, technician location, and estimated arrival times.
Step 1: Add a ServiceTitan Job Status Capability
Name: ServiceTitan Job Status Updates
Description: Retrieves real-time job status, technician location, and appointment updates from ServiceTitan.
Step 2: Configure ServiceTitan Job Status API Tools
ServiceTitan Tool: getJobStatus
Summary | |
---|---|
ID | getJobStatus |
Description | Retrieves current job status, technician assignment, and progress updates. |
Method | GET |
URL | https://api.servicetitan.io/jpm/v2/tenant/{{tenant_id}}/jobs/{{job_id}} |
Required headers
Header | Example value | Required |
---|---|---|
Authorization | Bearer {{access_token}} | ✓ |
ST-App-Key | {{app_key}} | ✓ |
Path parameters
Name | Location | Type | Description |
---|---|---|---|
job_id | Path | integer | Job ID to retrieve |
ServiceTitan Tool: getTechnicianLocation
Provides technician location and ETA (requires ServiceTitan Mobile).
Summary | |
---|---|
ID | getTechnicianLocation |
Description | Retrieves technician location and estimated time of arrival. |
Method | GET |
URL | https://api.servicetitan.io/dispatch/v2/tenant/{{tenant_id}}/technicians/{{technician_id}}/location |
Step 3: Write the Job Status Prompt
Job Status and Updates Instructions
When to Check
- Customer asks about scheduled appointment, ETA, progress, delays, or references job number
Status Update Process
- Identify job: Ask for job #, date, or address; verify correct appointment.
- Retrieve current status: Check latest updates and technician assignment.
- Provide clear updates: Translate to customer-friendly language and next steps.
Job Status Translations
- Scheduled → “Your appointment is confirmed and scheduled.”
- Dispatched → “A technician has been assigned and is on the way.”
- InProgress → “Your technician has arrived and is working.”
- Completed → “Your service has been completed.”
- OnHold → “Your appointment is temporarily on hold.”
- Cancelled → “Your appointment has been cancelled.”
Providing Helpful Context
- Scheduled: Mention window, technician (if assigned), prep instructions.
- Active: Estimated completion, discovered issues, technician contact.
- Completed: Confirm completion, follow-up, invoice/billing on request.
Example Status Updates
Scheduled: “Your HVAC maintenance is confirmed for tomorrow 9–11 AM… John Smith will call ~30 minutes prior.”
In Progress: “Technician arrived at 2:15 PM and expects to finish within the hour.”
Completed: “Your electrical repair was completed at 11:30 AM… invoice sent via email.”
Example conversations with AI Receptionist connected to ServiceTitan
Example 1: Existing Customer Scheduling Maintenance
User: “Schedule HVAC maintenance next week?”
AI: “Happy to help—what’s your name and phone?” … (lookup) … “Found your account. Available: Tue 9–11 or 2–4; Wed 10–12 or 1–3; Fri 8–10. Which works?”
User: “Tue 2 PM.”
AI: “Booked Tue, Mar 14, 2–4 PM. Job #ST-847392… Tech Mike Rodriguez… You’ll get a confirmation email and reminder.”
Example 2: New Customer Requesting Service
User: “Kitchen sink is leaking—need a plumber this week.”
AI gathers name/phone, doesn’t find account → creates customer, checks availability, proposes slots.
User selects Wed 10 AM → AI books: Job #ST-847401, service details, prep instructions, confirmation email.
Testing & Troubleshooting
This section helps diagnose common issues (authentication, permissions, limits, empty results).
Authentication Error (401)
What is this? 401 Unauthorized — e.g. {"error":"invalid_token","error_description":"The access token is invalid"}
Fix: Verify Client ID/Secret, ensure token not expired, correct tenant ID, test in Postman with same credentials.
FAQ: Connecting the AI Receptionist with ServiceTitan
Can I use this integration with other AI Employees?›
Yes. The Custom Capabilities and tools here work with any AI Employee (including AI Voice Receptionist) across phone, SMS, and chat.
What ServiceTitan modules can I integrate beyond scheduling?›
Job Management, CRM, Inventory/Equipment, Accounting/Invoicing, Marketing, Reporting, Technician Management, Estimates/Proposals. Create capabilities for inventory lookup, invoice status, equipment history, maintenance reminders, and more.
How does this work with my AI’s Knowledge Base?›
APIs provide live operational data (jobs, schedules, availability). Knowledge Base provides policies, pricing, service areas, etc. The AI combines both to answer completely.
What if customers ask for info the API can’t provide?›
Add business details to Knowledge Sources: service areas/fees, emergency policies, warranty terms, payment/financing, seasonal tips, company credentials, safety policies.
How do I ensure jobs get correct priority and routing?›
- Priorities: Emergency, Urgent, Routine.
- Include details: Clear problem, equipment info, access notes, customer preferences.
- Routing: Match job types to technician skills; consider geography and truck stock.
Can customers get estimates and pricing via AI?›
The AI can reference standard fees/ranges and schedule estimate visits. Complex pricing should be handled by technicians/humans.
How do we handle emergency requests?›
Create high-priority job types and escalation workflows; include safety instructions and on-call notifications in prompts.
How can we track services customers request most?›
Use Conversations analytics, ServiceTitan reporting (tag AI-created jobs), and “Explanation” logs; optionally add automations to log appointments for BI.
Customize responses by membership/service agreement?›
Yes—leverage membership data for priority scheduling, discounts, extended warranties, special contact procedures, and member-only slots.
How do we ensure data privacy and security?›
- OAuth 2.0, least-privilege scopes, monitor usage
- Access only when needed, verify identity, follow privacy policies (CCPA/GDPR)
- Rotate credentials, log/audit access, train staff
Automated follow-ups after job completion?›
Use ServiceTitan webhooks + Command Hub automations or Zapier to trigger surveys, reminders, review requests, and follow-up bookings after “Completed”.
© Command Local — Command Hub Docs