CRM migration

Migrate from ServiceTitan to Salesforce Sales Cloud

Field-level mapping, validation, and rollback between ServiceTitan and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.

ServiceTitan logo

ServiceTitan

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

92%

11 of 12

objects map 1:1 between ServiceTitan and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ServiceTitan stores everything in a unified field-service object model: customers linked to service locations, jobs tied to those locations, and technicians assigned through a dispatch board. Invoicing, payments, and maintenance agreements are native to the platform. Salesforce Sales Cloud uses a traditional CRM object graph — Accounts, Contacts, Leads, and Opportunities — with Cases for service tracking and custom __c objects for anything non-standard. The migration challenge is threefold: converting ServiceTitan's customer-and-location model into Salesforce's Account hierarchy, translating job records into Cases or Opportunities depending on their financial vs. service context, and rebuilding ServiceTitan's dispatch and scheduling model in Salesforce Field Service (a separate product) or via custom objects. FlitStack AI extracts data via the ServiceTitan API, maps each record type to its Salesforce equivalent, handles custom field translation, and delivers a field-level diff before the full run commits. Workflows, automations, and dispatch rules do not migrate — we export definitions for your Salesforce admin to rebuild in Flow or Field Service.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

ServiceTitan logo

ServiceTitan

What's pushing teams away

  • Pricing opacity and per-technician costs that exceed $500/month per tech at higher tiers create sticker shock, especially when combined with mandatory multi-year contracts and implementation fees reported in the tens of thousands.
  • The learning curve is steep — G2 and Capterra reviewers consistently cite difficulty mastering pricebooks, custom reports, and advanced features without dedicated training or a strong CSM, and many report poor or unreachable support during onboarding struggles.
  • Releasing new features and updates before refining existing ones frustrates long-term users; reviewers describe instances where product changes break established workflows without adequate notice or migration support.
  • Construction contractors find ServiceTitan does not include estimating, change orders, project scheduling, or job costing in the way their businesses require, making it a poor fit despite the premium pricing charged regardless of trade vertical.
  • Exit from ServiceTitan is described as difficult by former users, with long-term contracts, data portability limitations, and a complex setup that creates meaningful switching costs.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How ServiceTitan objects map to Salesforce Sales Cloud

Each row shows how a ServiceTitan object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

ServiceTitan

Customer

maps to

Salesforce Sales Cloud

Account

1:1
Fully supported

ServiceTitan customers map directly to Salesforce Accounts. A customer can have multiple service locations — these become either child Account records (for multi-location corporate customers) or Address records attached to the primary Account. Primary contact details migrate as Account.Phone and Account.BillingAddress fields.

ServiceTitan

Customer Contact

maps to

Salesforce Sales Cloud

Contact

1:1
Fully supported

Each customer in ServiceTitan can have multiple named contacts (homeowner, property manager, billing contact). These map to Salesforce Contact records linked via AccountId to the parent Account. Phone, email, and role fields migrate directly. No contact-role equivalent exists for homeowner vs. property-manager distinction — we preserve this as a custom Role__c pick-list.

ServiceTitan

Service Location

maps to

Salesforce Sales Cloud

Account (child) or Address fields

1:1
Fully supported

ServiceTitan service locations are address-specific job destinations attached to a customer. For residential customers, location address fields migrate as Account.BillingAddress. For commercial multi-location customers, each location becomes a child Account with its own address and a ParentId linking to the primary Account — your admin decides the hierarchy rule before migration.

ServiceTitan

Job (Work Order)

maps to

Salesforce Sales Cloud

Case

1:1
Fully supported

ServiceTitan jobs map to Salesforce Cases for service-history tracking. Case.Status maps from Job.Status (e.g., Scheduled → Open, Completed → Closed). Case.Description carries the job summary. Original job number stored as an external ID field (ST_Job_ID__c) for traceability. Jobs with no invoice component stay as Cases only.

ServiceTitan

Job (with Invoice)

maps to

Salesforce Sales Cloud

Case + Opportunity

many:1
Fully supported

Jobs that generated an invoice in ServiceTitan require a two-object strategy: the service record lands as a Salesforce Case, and the invoice data (total amount, line items) creates an Opportunity record. The Opportunity links back to the Account and carries the Case number as a custom reference field. Your admin decides whether to consolidate this into a single reporting object post-migration.

ServiceTitan

Technician

maps to

Salesforce Sales Cloud

User or Contact

1:1
Fully supported

ServiceTitan technicians are platform users with dispatch-board presence. In Salesforce, CRM users require full Salesforce licenses. For read-only or field-only users, we map technicians to Contact records in a designated Technicians account, preserving name, phone, certifications, and skill tags as custom fields. If you have Field Service Lightning licensing, technicians map to ServiceResource objects instead.

ServiceTitan

Maintenance Agreement

maps to

Salesforce Sales Cloud

Contract or Custom Agreement__c object

1:1
Fully supported

ServiceTitan maintenance agreements store coverage scope, contract start/end dates, and included service types. Salesforce Contract is the native equivalent but lacks built-in coverage-scope tracking. We create a custom Agreement__c object with fields for Coverage_Scope__c (multi-select pick-list), Recurrence_Frequency__c, and Included_Service_Types__c, linked to Account via AccountId.

ServiceTitan

Invoice

maps to

Salesforce Sales Cloud

Opportunity with Products or Custom Invoice__c object

1:1
Fully supported

ServiceTitan invoices carry line items, tax, payments applied, and balance due. For reporting continuity, we map invoice totals to Opportunity.Amount and invoice line items to OpportunityLineItems (requires Pricebook entry setup). Alternatively, for invoice-level detail, we create a custom Invoice__c object with Invoice_Line_Items__c as a related list — your admin chooses the model before migration.

ServiceTitan

Payment

maps to

Salesforce Sales Cloud

Custom Payment__c object or Opportunity Payment fields

1:1
Fully supported

ServiceTitan payment records (method, amount, date, applied-to invoice) have no Salesforce standard equivalent. We create a custom Payment__c object linked to Account and optionally to the related Invoice__c or Opportunity. Fields include Payment_Method__c, Amount_Paid__c, Payment_Date__c, and Applied_To_Invoice__c lookup. Each Payment__c record can be linked to the corresponding Invoice__c or Opportunity for straightforward reference and reporting.

ServiceTitan

Custom Fields (Customer/Location/Job)

maps to

Salesforce Sales Cloud

Custom Fields (__c)

1:1
Fully supported

ServiceTitan custom fields on any object (Customer, Location, Job, Technician) require Salesforce custom fields created before migration. We prefix them with ST_ to indicate source system and match ServiceTitan field types to Salesforce equivalents: text → Text(255), number → Number, date → Date, picklist → Picklist. Custom fields on Job that reference inventory parts map to a custom Inventory_Reference__c text field.

ServiceTitan

Parts/Inventory used on Job

maps to

Salesforce Sales Cloud

Custom Job_Part__c junction object or OpportunityLineItem

1:1
Fully supported

ServiceTitan jobs track parts used with quantity, unit cost, and markup. Salesforce has no native job-parts model. We create a custom Job_Part__c object linked to the Case and to a Product2 record, capturing Part_Name__c, Quantity__c, Unit_Cost__c, and Markup__c. If your team uses CPQ, parts can map to OpportunityLineItems via a pricebook entry.

ServiceTitan

Job Attachments/Files

maps to

Salesforce Sales Cloud

ContentDocument / Salesforce Files

1:1
Fully supported

ServiceTitan file attachments on jobs (photos, signed documents, diagnostic reports) migrate as Salesforce Files attached to the related Case record. File size limits per Salesforce (25MB default) apply — larger files flagged for chunked upload or alternate storage link. This approach preserves file metadata and ensures attachments are accessible within Salesforce's native file viewer.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

ServiceTitan logo

ServiceTitan gotchas

High

Per-technician pricing masks true cost for mixed teams

High

No publicly documented bulk export API endpoint

Medium

Address validation required for Service Locations to enable routing

Medium

Purchasing migration can permanently stall

Low

QuickBooks mapping assumes QBD desktop edition field conventions

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • ServiceTitan job model conflates service record and invoice — Salesforce needs both

    ServiceTitan stores job and invoice data in a single job record. Salesforce separates service tracking (Case) from financial records (Opportunity). Migrating a job that generated $4,200 in revenue requires FlitStack to create both a Case and an Opportunity, then link them via a custom reference field. Your admin needs to decide upfront whether Opportunity naming follows invoice-number convention or job-number convention — this affects report continuity. We surface this decision point in the pre-migration mapping plan.

  • ServiceTitan dispatch board has no Salesforce equivalent without Field Service Lightning

    ServiceTitan's native drag-and-drop dispatch board — with technician availability windows, skill matching, and real-time route optimization — does not exist in standard Salesforce Sales Cloud. Salesforce Field Service Lightning (FSL) provides the matching functionality but requires separate licensing and configuration. We map technician availability data into a custom ServiceResource model so the raw data is present for FSL setup. Dispatch workflow logic (e.g., nearest-technician routing rules) must be rebuilt as Flow or Apex triggers — we export the ServiceTitan automation definitions as a reference document.

  • Multi-location customers require Account hierarchy decisions before migration

    ServiceTitan allows a customer to have multiple service locations with no enforced hierarchy. Salesforce Accounts enforce a parent-child model for multi-location organizations. Before migration, your admin must decide whether each location becomes a child Account (with ParentId pointing to the primary Account) or whether all addresses collapse into the primary Account record with address fields serving as a location list. The choice affects reporting on service history per location and territory-based sharing rules. FlitStack generates both mapping variants in the pre-migration diff so your admin can validate before the full run.

  • Maintenance agreement renewal dates need Entitlement setup in Salesforce

    ServiceTitan maintenance agreements carry renewal logic and coverage scope that are integral to job scheduling and customer communication. Salesforce's closest native object is Contract, but entitlement-based renewal tracking requires Salesforce Entitlement Management (available in Service Cloud or as a add-on). We create a custom Agreement__c object to preserve agreement terms, but your admin needs to configure whether entitlement records are created per agreement and how they trigger service eligibility checks on Cases. This is a Salesforce-admin task that falls outside pure data migration.

  • ServiceTitan API rate limits can throttle large exports

    ServiceTitan's standard API rate limit is 60 calls per second per application per tenant, with reporting APIs capped at 1 report per minute. For migrations exceeding 100,000 records, FlitStack throttles extraction to respect this limit and uses bulk export endpoints where available. If your ServiceTitan instance has unusually high concurrent API usage (common in large dispatch teams), extraction may take longer than the typical 48–72 hour window. We run a pre-migration API probe to measure your instance's export throughput and adjust the migration schedule accordingly.

Migration approach

Six steps for a successful ServiceTitan to Salesforce Sales Cloud data migration

  1. Inventory ServiceTitan objects and map to Salesforce schema

    FlitStack connects to ServiceTitan via API and inventories all customer, location, job, technician, invoice, and payment records. We generate a mapping plan that assigns each ServiceTitan object to its Salesforce equivalent — identifying which jobs need dual Case+Opportunity creation, which customers require Account hierarchy decisions, and which custom fields need Salesforce __c fields created. Your Salesforce admin reviews and approves the plan before any objects are created in your org.

  2. Create Salesforce custom objects and fields

    Before data loads, FlitStack creates all required Salesforce custom objects (Agreement__c, Payment__c, Job_Part__c) and custom fields (__c suffix) on standard objects (Account, Contact, Case). We apply field-level security defaults and add the ST_ prefix to custom fields for source traceability. This step requires a Salesforce admin to validate field-level security settings per profile before migration runs. We also set up field-level security profiles, assign the appropriate field-level access for each profile, and document the field mapping in the pre-migration diff for admin sign-off.

  3. Resolve technician and owner mappings by email

    ServiceTitan technicians and job owners are matched to Salesforce Users by email address. Unmatched technicians are flagged and held — your team either creates Salesforce User accounts for them before migration or approves a fallback Contact-based mapping. No job record lands in Salesforce without an owner resolved; this prevents orphaned Cases that nobody can see. Additionally, we record the original ServiceTitan technician ID in a custom field on the matched User or Contact record to maintain traceability across systems.

  4. Run a sample migration with field-level diff

    A representative slice of 100–500 records migrates first: a mix of customers, service locations, contacts, jobs (with and without invoices), and maintenance agreements. FlitStack generates a field-level diff showing every source value and its destination equivalent. You verify that job-to-Case mapping preserves status, that invoice totals land correctly in Opportunity.Amount, and that technician assignments resolve correctly. Sample validation typically takes one business day.

  5. Execute full migration with delta-pickup window

    Full migration runs against your Salesforce production org using the mapping plan approved during the sample phase. A delta-pickup window (typically 24–48 hours) runs concurrently — any ServiceTitan records created or modified during the cutover window are captured and applied to Salesforce before go-live. FlitStack generates an audit log of every record inserted, updated, or skipped. One-click rollback reverts the Salesforce org to its pre-migration state if reconciliation reveals data quality issues.

  6. Deliver export of ServiceTitan workflow and dispatch definitions

    FlitStack exports your ServiceTitan automation definitions — dispatch rules, notification triggers, and renewal alerts — as a structured reference document. These definitions do not migrate (no platform translates ServiceTitan's automation logic to Salesforce Flow automatically), but the export gives your Salesforce admin a rebuild checklist organized by object. We do not rebuild automations; that scope requires a separate discovery and configuration engagement.

Platform deep dives

Context on both ends of the pair

ServiceTitan logo

ServiceTitan

Source

Strengths

  • Cloud-based, mobile-first platform accessible from the field eliminates downtime and desk-bound bottlenecks reported by G2 reviewers.
  • Per-technician pricing model aligns software cost directly with field capacity for growing HVAC and plumbing businesses.
  • Deep QuickBooks Desktop integration with documented field mapping handles accounting sync natively for migrating customers.
  • Automated customer communications — reminders, follow-ups, marketing — reduce no-show rates and CSR administrative overhead.
  • Comprehensive job tracking across customer history, technician activity, and performance reporting creates a single operational record.

Weaknesses

  • Pricing is not publicly disclosed, requiring a sales call to obtain a quote, and implementation fees and multi-year contracts add significant cost beyond the per-technician subscription.
  • The learning curve is steep — pricebooks, custom reports, and advanced features require dedicated training and a strong CSM to use effectively.
  • Poor or unreachable customer support during onboarding and troubleshooting is cited by multiple G2 and Capterra reviewers as a consistent frustration.
  • New product releases sometimes ship before existing features are fully refined, occasionally breaking established workflows.
  • Exit process is described as difficult due to long-term contract commitments and limited data portability options.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across ServiceTitan and Salesforce Sales Cloud.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    ServiceTitan: 60 requests per second per application per tenant for regular APIs; reporting APIs limited to 1 of the same report per minute.

  • Data volume sensitivity

    B

    ServiceTitan doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your ServiceTitan to Salesforce Sales Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about ServiceTitan to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during ServiceTitan to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your ServiceTitan to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most ServiceTitan-to-Salesforce migrations complete in 48–72 hours of clock time for under 50,000 records. Larger setups with 500,000+ records, complex Account hierarchies, or jobs that require Case+Opportunity dual creation extend to 7–12 days. Pre-migration object mapping and Salesforce custom-field creation add 3–5 business days of planning and configuration before data moves, ensuring all custom objects and fields are ready for the load.

Adjacent paths

Related migrations to explore

Ready when you are

Move from ServiceTitan.
Land in Salesforce Sales Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day