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

Browse all templates

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