ServiceTitan Integration
SearchLight is a certified ServiceTitan integration partner and maintains a Gold Partner status with ServiceTitan. This page explains how the connection works, every API permission the SearchLight app requests, and — because the two are not the same — which of those permissions SearchLight actually reads today.
How the Connection Works
You authorize the SearchLight app from inside your own ServiceTitan tenant (Settings › Integrations › API Application Access), and provide SearchLight with your tenant ID plus the client ID and client secret ServiceTitan issues for the connection. You can manage or disconnect the app there at any time.
Once connected, SearchLight syncs nightly, primarily through ServiceTitan's bulk export endpoints — roughly one API call per tenant per data type per night. A small number of per-record calls are made where no export equivalent exists (for example, retrieving individual call recordings for accounts using Lead Grading).
The integration is read-only in practice. SearchLight does not create or modify anything in your ServiceTitan tenant. The single "write" permission in the list below exists because of how ServiceTitan's permission model works — see the Capacity note.
Why We Request More Than We Read
ServiceTitan versions app permissions: any change to the scopes an app requests produces a new app version, and every connected tenant's admin must log in and approve the upgrade before the new scopes take effect. To avoid asking every customer to re-authorize the connection each time we expand our reporting, SearchLight requests read access up front to the data types customers may want to see correlated in the future — for example, the Employees and User Roles scopes are held for potential future reporting that correlates revenue conversion with staffing capacity. The full requested list is part of the app version ServiceTitan reviews and approves.
What SearchLight actually reads is a much smaller set, marked in the table below. Requested-but-unread scopes are permissions the app holds for future reporting features; SearchLight does not pull or cache that data today. This page is updated whenever the set of scopes the integration reads changes.
Requested Scopes
Current as of August 2026 (app Version 3, as approved in the ServiceTitan developer portal). Scopes are grouped by ServiceTitan's API areas, in the order the developer portal lists them. In the Read column, a ✓ marks data SearchLight actively reads today, and a ✓ marks a permission that is requested but not read or cached today. The Write column is empty throughout — except Capacity, which holds a never-used write permission as a requirement of ServiceTitan's permission model (see the note below).
| API scope | Read | Write |
|---|---|---|
| Accounting | ||
| Inventory Adjustments (Access Restricted)² | ✓ | |
| Inventory Bills | ✓ | |
| Inventory Receipts (Access Restricted)² | ✓ | |
| Inventory Transfers (Access Restricted)² | ✓ | |
| Invoice Items | ✓ | |
| Invoices | ✓ | |
| Journal Entries | ✓ | |
| Payments | ✓ | |
| Payment Terms | ✓ | |
| Payment Types | ✓ | |
| Purchase Orders (Access Restricted)² | ✓ | |
| Purchase Returns (Access Restricted)² | ✓ | |
| Tax Zones | ✓ | |
| CRM | ||
| Booking Provider Tags | ✓ | |
| Bookings | ✓ | |
| Contacts | ✓ | |
| Customers | ✓ | |
| Leads | ✓ | |
| Locations | ✓ | |
| Tags | ✓ | |
| Customer Interactions | ||
| Technician Rating | ✓ | |
| Dispatch | ||
| Appointment Assignments | ✓ | |
| Arrival Windows | ✓ | |
| Business Hours | ✓ | |
| Capacity | ✓ | ✓¹ |
| Non-Job Appointments | ✓ | |
| Teams | ✓ | |
| Technician Shifts | ✓ | |
| Zones | ✓ | |
| Equipment Systems | ||
| Installed Equipment | ✓ | |
| Forms | ||
| Forms | ✓ | |
| Job Forms | ✓ | |
| Form Submissions | ✓ | |
| Inventory | ||
| Adjustments | ✓ | |
| Purchase Order Markups | ✓ | |
| Purchase Orders | ✓ | |
| Purchase Order Types | ✓ | |
| Receipts | ✓ | |
| Returns | ✓ | |
| Return Types | ✓ | |
| Transfers | ✓ | |
| Trucks | ✓ | |
| Vendors | ✓ | |
| Warehouses | ✓ | |
| Job Booking | ||
| Call Reasons | ✓ | |
| Job Planning & Management | ||
| Appointments | ✓ | |
| Job Canceled Logs | ✓ | |
| Job Cancel Reasons | ✓ | |
| Job History | ✓ | |
| Job Hold Reasons | ✓ | |
| Job Notes | ✓ | |
| Jobs | ✓ | |
| Job Types | ✓ | |
| Project Notes | ✓ | |
| Projects | ✓ | |
| Project Statuses | ✓ | |
| Project Sub-Statuses | ✓ | |
| Marketing Ads | ||
| Attributed Leads | ✓ | |
| Capacity Warnings | ✓ | |
| External Call Attributions | ✓ | |
| Job Attributions | ✓ | |
| Performance | ✓ | |
| Web Booking Attributions | ✓ | |
| Web Lead Form Attributions | ✓ | |
| Memberships | ||
| Invoice Templates | ✓ | |
| Customer Memberships | ✓ | |
| Membership Types | ✓ | |
| Recurring Service Events | ✓ | |
| Recurring Services | ✓ | |
| Recurring Service Types | ✓ | |
| Marketing Reputation | ||
| Marketing Reviews | ✓ | |
| Marketing | ||
| Campaigns | ✓ | |
| Campaign Categories | ✓ | |
| Campaign Costs | ✓ | |
| Suppressions (Access Restricted)² | ✓ | |
| Pricebook | ||
| Categories | ✓ | |
| Client Specific Pricing | ✓ | |
| Discounts and Fees | ✓ | |
| Equipment | ✓ | |
| Pricebook Images | ✓ | |
| Materials | ✓ | |
| Pricebook Bulk Operations | ✓ | |
| Services | ✓ | |
| Reporting | ||
| Dynamic Value Sets | ✓ | |
| Report Categories | ✓ | |
| Reports within the category | ✓ | |
| Service Agreements | ||
| Service Agreements | ✓ | |
| Sales & Estimates | ||
| Estimates | ✓ | |
| Scheduling Pro | ||
| Schedulers | ✓ | |
| Settings | ||
| Business Units | ✓ | |
| Employees | ✓ | |
| Tag Types | ✓ | |
| Technicians | ✓ | |
| User Roles | ✓ | |
| Telecom | ||
| Calls | ✓ | |
| Opt Out | ✓ | |
| Task Management | ||
| Task Management Data | ✓ | |
| Tasks | ✓ |
¹ The developer portal lists Capacity under both read and write; ServiceTitan defines a single Capacity scope, of write type — see the note below.
² "(Access Restricted)" is ServiceTitan's own annotation, reproduced here exactly as the developer portal shows it.
About the One Write Permission: Capacity
Capacity is the only scope where the SearchLight app holds write access, and it follows from how ServiceTitan defines the scope. ServiceTitan's API retrieves capacity data through a POST query (POST /dispatch/v2/tenant/{tenant}/capacity), and defines a single scope for Capacity, of write type — there is no read-only Capacity scope to request. Querying capacity at all therefore requires the write permission.
SearchLight has never written to any ServiceTitan tenant through this (or any other) permission, and the integration does not currently query capacity data at all. The scope is held for a potential future availability metric (such as "days booked out").
What SearchLight Does Not Request
The app requests no access to payroll or timesheets, GPS pings or technician location tracking, or the accounts-payable and banking side of Accounting — AP Bills, AP Credits, AP Payments, Bank Deposits, Credit Memos, and GL Accounts are all unrequested.
Data Handling
- Read-only: the integration does not create or modify anything in your ServiceTitan tenant.
- Credentials: your tenant's client ID and secret are stored encrypted, and rotated on request.
- Call recordings: retrieved only for accounts with Lead Grading enabled, and used solely to transcribe and grade the call.
- On termination: connection credentials and synced data are deleted per the terms of your contract (typically credentials within 30 days and synced data within 60 days of ending service).
For security questionnaires or anything this page doesn't answer, contact support.