ServiceTitan + Salesforce
Connect ServiceTitan and Salesforce to Unify Field Service and CRM Data
Stop managing two versions of the truth. Automate the flow of customer, job, and revenue data between your field operations and sales pipeline.

Why integrate ServiceTitan and Salesforce?
ServiceTitan runs your field operations — dispatching, job management, technicians. Salesforce runs your sales pipeline, customer relationships, and revenue forecasting. When they don't talk to each other, customer records drift out of sync, sales reps have no idea whether a job was ever scheduled, and finance teams spend hours reconciling revenue across two systems. Integrating ServiceTitan with Salesforce through tray.ai keeps every team working from the same data without anyone manually shuttling records between platforms.
Automate & integrate ServiceTitan & Salesforce
Use case
Sync New ServiceTitan Customers to Salesforce as Contacts and Accounts
When a new customer is created in ServiceTitan after a job booking or inquiry, tray.ai automatically creates or updates a matching Contact and Account in Salesforce. Your CRM stays current without anyone doing manual data entry. Sales and account management teams can start building the relationship right away with accurate records in front of them.
Use case
Push Completed Jobs from ServiceTitan to Salesforce Opportunities
When a job is marked complete in ServiceTitan, tray.ai creates or updates a corresponding Opportunity in Salesforce with job type, value, technician, and completion date. Sales managers get a clear picture of closed revenue and can spot upsell opportunities from service history. Finance teams get what they need for accurate forecasting without running a separate export.
Use case
Create ServiceTitan Jobs from Salesforce Won Opportunities
When a sales rep marks an Opportunity as Won in Salesforce, tray.ai automatically creates a job record in ServiceTitan — pre-populated with customer details, service type, and scheduling preferences. The handoff from sales to operations happens in seconds, and field teams have everything they need before the customer gets a confirmation call.
Use case
Sync ServiceTitan Invoices and Revenue to Salesforce for Reporting
As invoices are generated and paid in ServiceTitan, tray.ai pushes revenue data into Salesforce as Opportunity amounts or custom financial objects. Sales leaders and executives get a consolidated revenue dashboard without pulling separate reports from ServiceTitan. Your Salesforce reports become the reliable record for monthly and quarterly reviews.
Use case
Enroll ServiceTitan Membership Customers into Salesforce Nurture Campaigns
When a customer purchases or renews a membership in ServiceTitan, tray.ai updates the corresponding Salesforce Contact and drops them into the right marketing or loyalty campaign. Membership holders get renewal reminders, upsell offers, and service check-ins that match their tier. No one slips through without follow-up.
Use case
Escalate Unhappy Customers from ServiceTitan Reviews to Salesforce Cases
When a low satisfaction score or negative review is logged in ServiceTitan, tray.ai creates a high-priority Case in Salesforce and assigns it to the right account manager or customer success rep. Dissatisfied customers get a response before they leave a public review or cancel service. Every escalation is tracked and auditable.
Use case
Bidirectional Contact and Account Updates Between ServiceTitan and Salesforce
When phone numbers, addresses, or contact details change in either ServiceTitan or Salesforce, tray.ai catches it and updates the other system right away. Agents, technicians, and sales reps always work from current information. One update in either system is enough — no manual cross-referencing needed.
Get started with ServiceTitan & Salesforce integration today
ServiceTitan & Salesforce Challenges
What challenges are there when working with ServiceTitan & Salesforce and how will using Tray.ai help?
Challenge
Avoiding Duplicate Customer Records Across Both Platforms
ServiceTitan and Salesforce each create customer records independently, so duplicates are almost guaranteed when a new booking in ServiceTitan belongs to a customer already in Salesforce. Without solid deduplication logic, integrations quietly generate thousands of orphaned or conflicting records over time.
How Tray.ai Can Help:
tray.ai checks for existing records by email, phone, or custom identifier before creating anything new. Conditional branching ensures records get updated rather than duplicated, and merge rules can be applied to clean up existing duplicates during the initial sync.
Challenge
Mapping Inconsistent Data Structures Between Field Service and CRM
ServiceTitan is built around jobs, technicians, and dispatching. Salesforce is built around Opportunities, Accounts, and Contacts. Translating job types, service categories, membership tiers, and invoice line items into Salesforce's object model takes careful field mapping — and those mappings need to change as the business does.
How Tray.ai Can Help:
tray.ai's visual workflow builder lets you map any ServiceTitan field to any Salesforce field, including custom objects on both sides. Data transformation operators handle converting, reformatting, and conditionally routing data without code, and mappings can be updated in minutes when requirements shift.
Challenge
Handling High-Volume Job and Invoice Data Without Hitting API Rate Limits
Enterprise field service operations can generate thousands of jobs and invoices in a single day. Syncing that volume in real time risks hitting Salesforce API rate limits or overwhelming ServiceTitan's API — causing failed syncs, data gaps, and a flood of alerts for operations teams.
How Tray.ai Can Help:
tray.ai handles API rate limits automatically through throttling, retry logic, and error handling built into every workflow. Bulk sync templates use pagination and batch processing to move large volumes efficiently, and failed operations are logged and retried without anyone stepping in manually.
Challenge
Maintaining Bidirectional Sync Without Creating Infinite Update Loops
When both ServiceTitan and Salesforce can trigger updates to each other, a change in one system can write to the other, which writes back, which writes again — an infinite loop that degrades performance and corrupts data fast.
How Tray.ai Can Help:
tray.ai workflows use conditional logic and record-stamping to detect whether a change came from an automated sync or a human update, cutting off circular triggers before they start. You can set specific field sets to flow in one direction only, and timestamps or sync flags make sure each change is processed exactly once.
Challenge
Respecting Data Governance and Field-Level Security Across Systems
Salesforce environments often have strict data governance rules, field-level security settings, and permission sets controlling what external systems can write. Integrations that ignore these controls create compliance risks or run into validation rule failures that silently drop records.
How Tray.ai Can Help:
tray.ai authenticates with Salesforce via OAuth and works within your existing permission sets and field-level security configuration. Workflows only write to fields the integration user can access, and any validation errors Salesforce returns are captured and surfaced as actionable alerts — so governance stays intact and no records disappear without explanation.
Start using our pre-built ServiceTitan & Salesforce templates today
Start from scratch or use one of our pre-built ServiceTitan & Salesforce templates to quickly solve your most common use cases.
ServiceTitan & Salesforce Templates
Find pre-built ServiceTitan & Salesforce solutions for common use cases
Template
New ServiceTitan Customer → Salesforce Contact and Account
Automatically creates or updates a Salesforce Contact and Account whenever a new customer record is created in ServiceTitan, mapping all relevant fields including name, address, phone, and email.
Steps:
- Trigger: New customer created in ServiceTitan
- Lookup existing Salesforce Contact by email or phone to avoid duplicates
- Create new Salesforce Contact and Account or update existing record with latest customer data
Connectors Used: ServiceTitan, Salesforce
Template
Salesforce Won Opportunity → ServiceTitan Job Creation
When an Opportunity is marked Closed Won in Salesforce, this template automatically creates a new job in ServiceTitan with customer, service type, and scheduling details pulled from the Opportunity record.
Steps:
- Trigger: Opportunity stage changed to Closed Won in Salesforce
- Retrieve full Opportunity and Account details from Salesforce
- Create a new Job in ServiceTitan mapped with customer, job type, and location data
Connectors Used: Salesforce, ServiceTitan
Template
Completed ServiceTitan Job → Salesforce Opportunity Update
Automatically updates or creates a Salesforce Opportunity with job completion details, revenue amount, and technician notes whenever a job status changes to completed in ServiceTitan.
Steps:
- Trigger: Job status updated to Completed in ServiceTitan
- Look up linked Salesforce Opportunity by customer ID or job reference
- Update Opportunity stage to Closed Won and sync job value, completion date, and notes
Connectors Used: ServiceTitan, Salesforce
Template
ServiceTitan Invoice Sync → Salesforce Revenue Records
Pushes finalized invoice data from ServiceTitan into Salesforce on a schedule, creating or updating financial records and Opportunity amounts to support accurate revenue reporting and forecasting.
Steps:
- Schedule: Run nightly or on invoice finalization in ServiceTitan
- Retrieve all new or updated invoices from ServiceTitan within the sync window
- Create or update corresponding Salesforce Opportunity amounts or custom revenue objects
Connectors Used: ServiceTitan, Salesforce
Template
ServiceTitan Membership Purchase → Salesforce Campaign Enrollment
When a customer purchases or renews a membership in ServiceTitan, this template enrolls the corresponding Salesforce Contact in the right campaign and updates their membership status field for segmentation.
Steps:
- Trigger: Membership created or renewed in ServiceTitan
- Find or create corresponding Salesforce Contact by customer details
- Update membership status field and add Contact to the relevant Salesforce Campaign
Connectors Used: ServiceTitan, Salesforce
Template
Low ServiceTitan CSAT Score → Salesforce Case Creation
Monitors ServiceTitan for customer satisfaction responses below a defined threshold and automatically creates a prioritized Salesforce Case assigned to the responsible account owner for immediate follow-up.
Steps:
- Trigger: New survey response submitted in ServiceTitan with score below threshold
- Retrieve customer and job details associated with the survey response
- Create a high-priority Salesforce Case and assign to the Account owner with job context included
Connectors Used: ServiceTitan, Salesforce