CRM migration
Field-level mapping, validation, and rollback between ServiceTitan and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
ServiceTitan
Source
Freshsales
Destination
Compatibility
14 of 14
objects map 1:1 between ServiceTitan and Freshsales.
Complexity
BStandard
Timeline
48–72 hours
Overview
ServiceTitan and Freshsales serve fundamentally different operational roles. ServiceTitan is a field service management platform built around jobs, dispatching, scheduling, and technician productivity for HVAC, plumbing, and electrical contractors. Freshsales is a sales CRM built around lead capture, pipeline management, and revenue tracking. When migrating from ServiceTitan to Freshsales, the primary challenge is translating field service records — customers, service locations, job history, and custom properties — into CRM-native objects: Contacts, Accounts, and Deals. FlitStack AI extracts customer records, location data, job summaries, and custom fields from ServiceTitan via its REST API (60 calls per second rate limit). We map each customer to a Freshsales Contact, each service location to an Account with address data, and job history as activity notes or deal records depending on revenue tracking needs. ServiceTitan's custom fields on customers and jobs migrate as Freshsales custom fields on the corresponding modules. Technicians and office staff map to Freshsales Users by email match. Workflows, dispatch rules, and scheduling automations do not migrate — they require manual rebuild in Freshsales or a separate scheduling tool. Our migration uses scoped read access on ServiceTitan so your team continues working during the cutover window. A 24–48 hour delta pickup captures in-flight records at go-live.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a ServiceTitan object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
ServiceTitan
Customer
Freshsales
Contact
1:1ServiceTitan customers map to Freshsales Contacts. Name, phone, email, and contact details transfer directly via field-level mapping. Customers without email receive a placeholder email address generated from [email protected] to satisfy Freshsales validation requirements. The generated placeholder ensures data integrity checks pass while preserving a reference back to the original ServiceTitan record for reconciliation purposes.
ServiceTitan
Customer (business type)
Freshsales
Account
1:1ServiceTitan customers flagged as commercial or business-type map to Freshsales Accounts instead of Contacts. The business name populates the Account Name field, industry defaults based on ServiceTitan trade classification, and the primary contact person becomes a linked Contact record under the Account. This preserves the business-to-person relationship hierarchy in Freshsales that mirrors the original ServiceTitan structure.
ServiceTitan
Service Location
Freshsales
Account
1:1Each ServiceTitan service location becomes a Freshsales Account record. Address fields including street, city, state, zip, and country map directly to corresponding Freshsales billing address fields. Service location records without a parent customer link are preserved as standalone Accounts with location type set via custom field to distinguish them from business Accounts.
ServiceTitan
Job
Freshsales
Deal + Sales Activity
1:1Jobs with associated revenue map to Freshsales Deals where the deal amount reflects invoice total. Job description, job type, and status transfer as deal custom fields. Job activity including technician notes, parts used, and timestamps migrates as Sales Activity records linked to the corresponding Contact or Account.
ServiceTitan
Job (no revenue)
Freshsales
Sales Activity
1:1Jobs that generated no invoice such as estimates, diagnostic visits, or quote-only interactions map as standalone Sales Activity records rather than Deals. The activity captures job type, description, and technician assignment without creating a Freshsales deal record, preserving the service history without cluttering the pipeline with zero-value opportunities.
ServiceTitan
Invoice
Freshsales
Deal Products / Note
1:1ServiceTitan invoices with line items migrate as Deal Products on the corresponding Freshsales Deal, preserving itemized detail within the deal record. Invoice number and payment status preserve as custom fields on the Deal. Fully paid invoices automatically set the Deal to Closed Won status, while outstanding balances preserve the appropriate payment status in a dedicated custom field.
ServiceTitan
Employee (Technician)
Freshsales
User
1:1ServiceTitan technicians and office staff resolve to Freshsales Users by email match on the employee email field. Unmatched employees are flagged before migration begins, requiring either an invitation to Freshsales first or assignment as inactive users with records re-assigned to a fallback owner based on territory assignment in Freshsales.
ServiceTitan
Custom Field (Customer-level)
Freshsales
Custom Field on Contact
1:1ServiceTitan custom fields on customer records create matching custom fields in Freshsales on the Contact module. Field type maps appropriately: text fields stay text, pick-list fields become dropdowns, date fields become date fields, and numeric fields preserve their type. Custom field visibility is set to match the original ServiceTitan permission scope for consistent access control across the migrated data.
ServiceTitan
Custom Field (Location-level)
Freshsales
Custom Field on Account
1:1ServiceTitan custom fields on service location records migrate as Freshsales custom fields on the Account module representing each location. Equipment-related custom fields such as system age, manufacturer, model number, and installation date map as text or number fields on the Account, preserving all operational equipment data associated with each service location for future reference and service scheduling.
ServiceTitan
Custom Field (Job-level)
Freshsales
Custom Field on Deal
1:1Job-level custom fields in ServiceTitan including job priority, job source, warranty flag, warranty expiration, and service category create corresponding custom fields on the Freshsales Deal module. These fields preserve the complete operational context from the original field service record within the migrated deal record for full historical continuity and reporting accuracy.
ServiceTitan
Tag / Category
Freshsales
Tag
1:1ServiceTitan tags applied to customers and service locations transfer to Freshsales Tags associated with the corresponding Contact or Account record depending on the source object. Tags used for marketing segmentation in ServiceTitan require rebuilding in Freshsales using Smart Lists, as Freshsales handles marketing segmentation differently through its list-based approach rather than tag-based filtering.
ServiceTitan
Forms / Estimates
Freshsales
Deal / Custom Field
1:1ServiceTitan estimate forms and proposal templates have no direct Freshsales equivalent as native constructs. Estimate data including line items, pricing, and quantities migrates as deal product records within Freshsales Deals. The form layout and template structure itself must be manually rebuilt in Freshsales using custom modules or evaluated separately through a dedicated CPQ tool integration for complex pricing scenarios.
ServiceTitan
Dispatch Rules / Scheduling
Freshsales
Not Migrated
1:1ServiceTitan dispatch rules, scheduling automations, and call booking workflows do not migrate. These are field-service-specific constructs with no Freshsales equivalent. FlitStack exports the rule definitions as a configuration reference document for your admin to rebuild in Freshsales workflows or a dedicated scheduling tool.
ServiceTitan
Attachments / Files
Freshsales
Files on Contact/Account/Deal
1:1ServiceTitan file attachments on customer records, service locations, and jobs re-upload to Freshsales Files associated with the corresponding Contact, Account, or Deal record. File size and type limits apply based on Freshsales plan tier. Freshsales Enterprise plan supports up to 100GB per user storage capacity for file attachments and document management within the CRM.
| ServiceTitan | Freshsales | Compatibility | |
|---|---|---|---|
| Customer | Contact1:1 | Fully supported | |
| Customer (business type) | Account1:1 | Fully supported | |
| Service Location | Account1:1 | Fully supported | |
| Job | Deal + Sales Activity1:1 | Fully supported | |
| Job (no revenue) | Sales Activity1:1 | Fully supported | |
| Invoice | Deal Products / Note1:1 | Fully supported | |
| Employee (Technician) | User1:1 | Fully supported | |
| Custom Field (Customer-level) | Custom Field on Contact1:1 | Fully supported | |
| Custom Field (Location-level) | Custom Field on Account1:1 | Fully supported | |
| Custom Field (Job-level) | Custom Field on Deal1:1 | Fully supported | |
| Tag / Category | Tag1:1 | Fully supported | |
| Forms / Estimates | Deal / Custom Field1:1 | Fully supported | |
| Dispatch Rules / Scheduling | Not Migrated1:1 | Fully supported | |
| Attachments / Files | Files on Contact/Account/Deal1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Per-technician pricing masks true cost for mixed teams
No publicly documented bulk export API endpoint
Address validation required for Service Locations to enable routing
Purchasing migration can permanently stall
QuickBooks mapping assumes QBD desktop edition field conventions
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Audit ServiceTitan schema and extract record counts
FlitStack connects to your ServiceTitan account via scoped read-access API credentials. We pull a full schema inventory: customer records, location records, job records, employee records, invoice records, and all custom fields by object. This audit identifies record volumes, custom field data types, and any location-without-customer orphan records that need resolution before mapping begins. The audit also surfaces ServiceTitan API rate limit consumption so we can plan extraction batching accordingly.
Map ServiceTitan objects to Freshsales modules and resolve owner assignments
Based on the schema audit, FlitStack builds an object mapping plan: Customer to Contact or Account, Location to Account, Job to Deal plus Sales Activity, Invoice to Deal Products, Employee to User. Owner resolution happens by email match — ServiceTitan employee emails are matched against Freshsales users. Unmatched employees are flagged for your team to either invite to Freshsales or assign to a fallback owner before migration day. Custom field type mapping (text, pick-list, date, number) is documented per field.
Configure Freshsales custom fields to match ServiceTitan schema
Before data lands, FlitStack creates all required custom fields in Freshsales on the Contact, Account, and Deal modules. Custom field names are prefixed with the original ServiceTitan label for admin traceability. Pick-list fields get the same value options as ServiceTitan so value-mapping is clean. If your Freshsales plan limits custom fields (Growth caps at basic custom fields; Pro adds advanced custom fields), we surface any plan-gated fields before migration runs so you can upgrade if needed.
Run sample migration with field-level diff
A representative slice migrates first — typically 200–500 records spanning customers, locations, jobs, and a few invoices. FlitStack generates a field-level diff report comparing source ServiceTitan values against Freshsales destination values so you can verify custom field mapping, owner resolution, and stage assignment before the full run commits. You review the diff, flag any adjustments, and FlitStack updates the mapping configuration before proceeding.
Execute full migration with delta-pickup cutover window
The full migration runs against Freshsales using scoped read access on ServiceTitan — your team continues working in ServiceTitan throughout. A 24–48 hour delta-pickup window after the initial run captures any records created or modified during the migration window. Audit log documents every record touched, and one-click rollback is available if reconciliation reveals unexpected data shape issues. Post-migration, FlitStack delivers a record-count verification report showing total migrated vs. source counts per object.
Platform deep dives
ServiceTitan
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ServiceTitan and Freshsales.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
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
ServiceTitan doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during ServiceTitan to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your ServiceTitan to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ServiceTitan
Other ways to arrive at Freshsales
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.