Source connector
ServiceTitan connector
ServiceTitan integration for databases, warehouses and BI tools
Trades platform for dispatch, jobs, and revenue reporting. Datrise captures ServiceTitan entities such as jobs, customers, estimates, invoices, technicians and service agreements, then lands normalized and typed models for warehouse reporting, attribution, and AI workflows.
The ServiceTitan API v2 authenticates with OAuth 2.0, incremental runs key on modifiedOnOrAfter, and ServiceTitan caps calls at 60 calls per second per application per tenant for standard APIs; Reporting APIs are limited to 1 request for the same report per minute per tenant.
Of the 6 objects, 4 sync as upserts keyed on the primary key and 2 as append-only streams, so each incremental run moves only what changed since the last watermark. Every object lands in its own table (for example `servicetitan_jobs`) with a schema derived from the ServiceTitan API rather than a flattened CSV, in any of the 43 supported destinations.
Datrise is in early access: pick a destination below to open the ServiceTitan pipeline page, and join the waitlist to get the ServiceTitan connector (CRM) with guided onboarding.
What ServiceTitan data Datrise extracts
Each object lands in its own typed table. Sync mode is derived from the object: history-style objects append, everything else upserts.
| Object | Landing table | Sync mode |
|---|---|---|
| jobs | servicetitan_jobs | Append-only, incremental by timestamp |
| customers | servicetitan_customers | Upsert by primary key, incremental on updated-at |
| estimates | servicetitan_estimates | Upsert by primary key, incremental on updated-at |
| invoices | servicetitan_invoices | Append-only, incremental by timestamp |
| technicians | servicetitan_technicians | Upsert by primary key, incremental on updated-at |
| service agreements | servicetitan_service_agreements | Upsert by primary key, incremental on updated-at |
ServiceTitan API: setup facts for the connector
Verified against the vendor documentation on 2026-09-02. Unknown values are left blank rather than guessed.
| API | ServiceTitan API v2 |
|---|---|
| Authentication | OAuth 2.0 — Server-to-server access uses the OAuth 2.0 client_credentials grant against `auth.servicetitan.io/connect/token` (15-minute access tokens); every API call also requires a per-app `ST-App-Key` header alongside the `Authorization: Bearer` token. |
| Pagination | page — List endpoints take `page` (default 1) and `pageSize` (1-5000, default 50) query params, with an optional `includeTotal` flag to include the total count. |
| Rate limit | 60 calls per second per application per tenant for standard APIs; Reporting APIs are limited to 1 request for the same report per minute per tenant |
| Incremental cursor | modifiedOnOrAfter — Most list endpoints accept `modifiedOnOrAfter`/`modifiedBefore` and `createdOnOrAfter`/`createdBefore` filters, so a connector classifies a record as new when `createdOn` is after the last poll and as updated otherwise. |
| Webhooks | Yes — V2 Webhooks (HMAC-signed, per-tenant subscriptions configured in the Developer Portal) |
| Bulk export | No |
| Deletes detectable | Yes — ServiceTitan does not hard-delete core records (customers, locations, jobs); they are soft-deactivated and exposed via an `active` boolean, so a connector must track that flag rather than expect records to disappear. |
What bites when replicating ServiceTitan
- Access tokens from the client_credentials flow expire after 15 minutes, so a long-running extraction job must refresh the token mid-run rather than once at startup.
- Reporting APIs allow only 1 request for the same report per minute per tenant, far below the 60 calls/second default for regular APIs, so report-based extraction needs its own throttling path.
- `pageSize` caps out at 5000 and defaults to just 50 when omitted, so an unpaginated-looking call against a large tenant silently returns a fraction of the data.
- Deactivated customers, locations, and jobs are never actually deleted (jobs can only be canceled), so a connector must sync the `active` boolean rather than infer deletions from records disappearing from list responses.
Popular destinations for ServiceTitan
Choose a destination below to open the ready pipeline page.
- AAirtable
Relational spreadsheet destination for ops and go-to-market teams.
View pipeline - AAmazon Athena
Serverless SQL over S3 data lake tables.
View pipeline - AAmazon DynamoDB
Serverless key-value and document store on AWS.
View pipeline - AAmazon QuickSight
AWS serverless BI with SPICE and embedded analytics.
View pipeline - AAmazon Redshift
AWS petabyte-scale warehouse with Spectrum.
View pipeline - AAmazon S3 Data Lake
Object storage landing zone for parquet and snapshots.
View pipeline - AApache Superset
Open-source BI for SQL exploration, charts, and dashboard publishing.
View pipeline - AAzure Data Lake Storage
ADLS Gen2 object storage for analytics workloads.
View pipeline - AAzure Synapse
Microsoft analytics workspace with SQL pools.
View pipeline
ServiceTitan connector FAQ
- What ServiceTitan data does the connector extract?
- 6 objects: jobs, customers, estimates, invoices, technicians and service agreements. Each lands in its own table with types preserved; history-style objects (2: jobs and invoices) load as append-only streams.
- Is the ServiceTitan integration incremental?
- Yes. After the initial full load, every run reads only records changed since the last watermark (updated-at or event timestamp) and applies an upsert or an append depending on the object.
- Where can I load ServiceTitan data?
- Into 43 destinations: relational databases, cloud warehouses, data lakes, spreadsheets and BI tools. Each ServiceTitan → destination pair has its own page with the object-to-table mapping.
Related CRM sources
Other sources in the same category, each with its own connector page.
Early access
Launch your ServiceTitan pipeline with guided onboarding
Join the waitlist to get priority access for ServiceTitan integrations with guided setup, schema-aware mapping, and production-grade incremental sync.