# ServiceTitan + Salesforce integration

> Stop managing two versions of the truth. Automate the flow of customer, job, and revenue data between your field operations and sales pipeline.

**Canonical page:** https://tray.ai/connectors/servicetitan-salesforce-integrations/
**ServiceTitan connector:** https://tray.ai/connectors/servicetitan-integrations/
**ServiceTitan documentation:** https://tray.ai/documentation/connectors/service/servicetitan
**Salesforce connector:** https://tray.ai/connectors/salesforce-integrations/
**Salesforce documentation:** https://tray.ai/documentation/connectors/service/salesforce

## Overview

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.

For home services, HVAC, plumbing, electrical, and other field service companies, the gap between ServiceTitan and Salesforce is expensive. Sales reps closing deals in Salesforce can't see whether jobs have been scheduled or completed. Dispatchers and field managers don't have the customer context sitting in the CRM. And someone is re-entering customer data, job details, and invoices by hand every week, introducing errors that customers eventually notice. Connecting ServiceTitan and Salesforce through tray.ai puts an end to that. Customers, opportunities, completed jobs, invoices, and membership data stay in sync automatically — so every team has real-time visibility, follow-ups happen faster, and revenue reporting doesn't require a manual export.

## Use cases

### 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.

- Eliminates duplicate data entry across both platforms
- Keeps CRM records current with real-time customer sync
- Lets sales follow up the moment a new customer comes in

### 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.

- Automatically closes Salesforce Opportunities tied to completed jobs
- Gives sales teams full service history for upsell targeting
- Improves revenue forecast accuracy without manual data entry

### 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.

- Cuts sales-to-operations handoff time from hours to seconds
- Prevents jobs from falling through the cracks during manual handoffs
- Delivers a consistent customer experience from close to first visit

### 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.

- Eliminates manual invoice reconciliation between systems
- Keeps revenue dashboards in Salesforce accurate and current
- Supports audit readiness with consistent financial records

### 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.

- Automates membership enrollment into targeted Salesforce campaigns
- Reduces churn through timely, relevant outreach
- Gives marketing teams visibility into membership tier data from ServiceTitan

### 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.

- Flags negative service experiences for CRM follow-up immediately
- Reduces churn by accelerating complaint resolution
- Creates an auditable record of escalations and outcomes in Salesforce

### 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.

- Keeps contact data accurate across both platforms
- Prevents failed service calls from outdated address or phone data
- Reduces miscommunication between teams caused by stale records

## Templates

### 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.

Connectors used: ServiceTitan, Salesforce

### 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.

Connectors used: Salesforce, ServiceTitan

### 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.

Connectors used: ServiceTitan, Salesforce

### 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.

Connectors used: ServiceTitan, Salesforce

### 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.

Connectors used: ServiceTitan, Salesforce

### 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.

Connectors used: ServiceTitan, Salesforce

## Challenges Tray.ai solves

### 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 helps:** 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.

### 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 helps:** 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.

### 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 helps:** 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.

### 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 helps:** 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.

### 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 helps:** 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.

## Learn more

- Intelligent Integration: https://tray.ai/platform/intelligent-ipaas/
- Merlin Agent Builder: https://tray.ai/platform/merlin-agent-builder/
- Agent Gateway for MCP: https://tray.ai/platform/agent-gateway/
- Book a demo: https://tray.ai/contact/
