CRM migration
Field-level mapping, validation, and rollback between Daylite and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Daylite
Source
Freshsales
Destination
Compatibility
6 of 10
objects map 1:1 between Daylite and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Daylite to Freshsales means leaving an Apple-native CRM with bundled project management for a web-first, cross-platform CRM with a more structured data model. Daylite exports its full object graph as a compressed archive of CSVs covering People, Companies, Opportunities, Projects, Appointments, Tasks, Notes, and Groups with foreign-key columns linking records together. Freshsales uses a Lead-to-Contact-to-Account-to-Deal model (Leads for unqualified prospects, Contacts for qualified buyers, Accounts for organizations, Deals for opportunities) that differs from Daylite's unified People object. We resolve that distinction during scoping, normalize Daylite's freeform Opportunity stage names into Freshsales stage definitions, and preserve Daylite Projects as Deal records with Notes attachments since Freshsales has no native project object. We do not migrate Billings Pro data, iOSXpert plugin data that is absent from the export, or Daylite's workflows, automations, or Apple-native integrations as these live in the source platform, not the database.
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 Daylite 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.
Daylite
People
Freshsales
Lead or Contact (split required)
1:manyDaylite's single People object maps to Freshsales Lead for unqualified or new-source contacts and to Contact for qualified buyers. We split based on criteria defined during scoping: contacts with an active Opportunity in Daylite become Contacts in Freshsales; contacts without any Opportunity become Leads. Each Person's email, phone, address, and custom fields map to Freshsales equivalent fields. The original Person record type is preserved in a custom field daylite_person_type__c for audit.
Daylite
Companies
Freshsales
Account
1:1Daylite Company records map directly to Freshsales Account. Every Daylite Person can link to one Company via the Company foreign key in the People CSV; we resolve this relationship at migration time so each Contact in Freshsales lands with the correct AccountId lookup. The Daylite Company industry, address, and custom fields map to Freshsales Account fields. Account is imported before Contact to satisfy the lookup dependency.
Daylite
Opportunities
Freshsales
Deal
1:1Daylite Opportunities map to Freshsales Deals. The Opportunity's Person and Company foreign keys resolve to ContactId and AccountId in Freshsales. Stage, value, probability, and close date transfer directly. Daylite's freeform stage text (plain strings with possible typos and variants) is deduplicated and presented as a stage normalization table during scoping before we create Freshsales stage definitions.
Daylite
Pipeline Stages
Freshsales
Deal Stage (Sales Process)
lossyDaylite Opportunity stage names are not a centrally managed taxonomy; they are stored per record. We extract all unique stage strings from the Opportunities CSV, deduplicate them, and present a mapping worksheet so the customer maps each Daylite stage name to a Freshsales Sales Process stage. Stage probabilities migrate from Daylite where present or are assigned defaults during mapping. Typos and variant spellings in historical records are normalized per the agreed mapping.
Daylite
Projects
Freshsales
Deal + Note attachment
1:manyDaylite Projects have no native equivalent in Freshsales. We map each Project to a Freshsales Deal with the Project name and status, and attach the Project's Tasks and Appointments as Notes to that Deal for reference. If the Time&Budget plugin was active, we include budget fields and cost thresholds as custom fields on the Deal. Customers who need full project management in Freshsales should pair this with a dedicated project tool post-migration.
Daylite
Appointments
Freshsales
Task (Activity type)
1:1Daylite Appointments export with start/end UTC timestamps, timezone, all-day flag, location, and linked Person and Project IDs. We create Freshsales Tasks of type Appointment (or Event if the customer enables Freshsales calendar features) with the original timestamps, location, and description preserved. The linked Person resolves to ContactId or LeadId; linked Project resolves to the Deal record we created from the Project mapping.
Daylite
Tasks
Freshsales
Task
1:1Daylite Tasks (standalone and sub-tasks) export with status, due date, priority, and assignee. Tasks linked to Projects carry a Project foreign key that resolves to the Deal we created during the Project mapping. Sub-tasks become child Tasks with a parent TaskId reference. Task assignment resolves by matching Daylite assignee email to Freshsales User email.
Daylite
Notes
Freshsales
Note or Comment
1:1Daylite Notes attached to any object export with the target object type and ID. We create Freshsales Notes linked via the appropriate lookup (Contact, Account, Deal, or Lead) and preserve the note body text and original timestamp. Notes on Projects land on the corresponding Deal record.
Daylite
Groups
Freshsales
Tags or Segment
lossyDaylite Groups are static groupings of People or Companies. We export the group membership mapping table and recreate each Group as a Freshsales Tag applied to the corresponding Contacts, Leads, or Accounts. The customer chooses during scoping whether Groups map to Tags (flat) or Segments (filter-based). If Daylite Groups are used for segment-based campaigns, we document the segment criteria for recreation in Freshsales.
Daylite
Custom Fields
Freshsales
Custom Fields
1:1Daylite custom fields on People, Companies, Opportunities, Projects, Tasks, and Appointments are defined in a separate metadata table and values stored in record tables. We extract both, then present a mapping worksheet to match each Daylite custom field to a Freshsales custom field of equivalent type (text, number, date, picklist, checkbox). Custom field definitions are created in Freshsales before data import so values load into typed fields rather than falling into a catch-all.
| Daylite | Freshsales | Compatibility | |
|---|---|---|---|
| People | Lead or Contact (split required)1:many | Fully supported | |
| Companies | Account1:1 | Fully supported | |
| Opportunities | Deal1:1 | Fully supported | |
| Pipeline Stages | Deal Stage (Sales Process)lossy | Mapping required | |
| Projects | Deal + Note attachment1:many | Fully supported | |
| Appointments | Task (Activity type)1:1 | Fully supported | |
| Tasks | Task1:1 | Fully supported | |
| Notes | Note or Comment1:1 | Fully supported | |
| Groups | Tags or Segmentlossy | Fully supported | |
| Custom Fields | Custom Fields1:1 | Mapping required |
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.
Daylite gotchas
Database export download expires after 14 days
Billings Pro self-serve is discontinued, cloud migration required
Plugin-stored data is only exportable if the plugin is installed
Custom field definitions must be manually mapped
Pipeline stage names are plain text, not a managed taxonomy
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
Export validation and scoping audit
We confirm the Daylite export download link is still active and download the full compressed archive. We inspect the CSV table list against Daylite's documented schema to identify which objects are present, check for any missing plugin tables (iOSXpert signatures), and count records across People, Companies, Opportunities, Projects, Appointments, Tasks, Notes, and Groups. We also confirm whether any custom fields exist and whether the Time&Budget plugin data is included. The output is a scoping document with record counts, a list of any missing tables, and a request for any plugin data that may need to be re-exported.
Stage normalization and schema mapping worksheet
We extract all unique Opportunity stage strings from the Opportunities CSV, deduplicate them, and present a stage normalization table. The customer maps each Daylite stage name to a Freshsales Sales Process stage with the correct probability. We also present the custom field mapping worksheet so the customer explicitly matches each Daylite custom field to a Freshsales custom field type. Group-to-Tag or Group-to-Segment strategy is chosen at this stage. The mapping worksheet must be signed off before we begin destination schema setup.
Destination schema setup in Freshsales
We configure the Freshsales destination schema before any data loads. This includes creating any custom fields (matched to Daylite types), setting up Sales Process stage definitions per the normalized stage mapping, enabling the Contacts, Deals, and Leads modules, and creating Tags corresponding to Daylite Groups. We create the migration user with appropriate permissions and verify API access. The schema is set up in the customer's live Freshsales environment with a full data backup triggered before migration begins.
Account and Project-Deal import
We import in dependency order. Companies from Daylite become Freshsales Accounts first (the root lookup object). Projects become Freshsales Deals with the project name, status, and any budget fields from the Time&Budget plugin carried as custom fields. Notes attached to Projects in Daylite are attached to the corresponding Deal record in Freshsales. This phase establishes the parent record hierarchy before any child records load.
Contact and Lead import with Person-Company resolution
People from Daylite are split into Leads and Contacts based on the scoping rule (Contacts with active Opportunities become Contacts; all others become Leads). Each Person's Company foreign key resolves to the AccountId we set during the Account import phase. Tasks and Appointments linked to a Person resolve to the corresponding ContactId or LeadId. Standalone Tasks and Appointments load with no parent contact reference. Notes attached to People load as Notes on the corresponding Contact or Lead.
Final delta load, reconciliation, and handoff
We run a final delta load of any records modified during the migration window, then reconcile record counts across all objects against the Daylite export totals. We spot-check 25-50 records for field-level accuracy and confirm relationship integrity (Contacts with correct AccountId, Deals with correct ContactId and AccountId). We deliver a written inventory of any Daylite data that was not migrated (Billings Pro records, absent plugin tables, unresolvable stage variants) and a written map of Daylite Groups mapped to Freshsales Tags for the customer's admin to verify. We do not rebuild Daylite workflows or automations; that inventory is delivered separately.
Platform deep dives
Daylite
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 Daylite 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
Daylite: Not publicly documented as specific numeric quotas; standard SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
Daylite exposes a bulk API — large-volume migrations stream efficiently.
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 Daylite to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Daylite 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 Daylite
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.