CRM migration
Field-level mapping, validation, and rollback between Dashly and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Dashly
Source
Freshsales
Destination
Compatibility
7 of 10
objects map 1:1 between Dashly and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Dashly to Freshsales is a model shift from a conversational marketing platform to a structured sales CRM. Dashly stores contacts as Leads attached to threaded Conversations with embedded Messages; Freshsales uses Contacts linked to Accounts with Deals and a native Activity timeline. We flatten Dashly conversation threads into Freshsales Tasks and Notes, preserving author attribution, timestamps, and channel metadata. The Dashly Company record maps to Freshsales Account, and any custom Lead properties map to Freshsales custom fields created before migration. Leadbots, triggered message rules, and knowledge base articles are exported as structured JSON configs; these do not auto-migrate because Freshsales Workflows use a different automation schema. We do not migrate visitor session data, UTM parameters, or behavioral analytics as these are aggregated metrics not stored as individual records in Dashly.
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 Dashly 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.
Dashly
Lead
Freshsales
Contact
1:1Dashly Leads map directly to Freshsales Contacts. Standard properties (name, email, phone) migrate to Freshsales Contact fields. Custom Lead properties are inventoried during discovery, typed (text, number, date, dropdown), and created as Freshsales custom fields before migration. Email is used as the dedupe key. Dashly tags on Leads map to Freshsales Contact tags.
Dashly
Conversation
Freshsales
Task
1:manyEach Dashly Conversation thread is decomposed into a Freshsales Task record holding conversation metadata (status, assignee, source channel, timestamps). The conversation's original status (open, resolved, pending) maps to Freshsales Task status values. The Dashly assignee maps to Freshsales Owner by email resolution. One Task is created per Conversation rather than one per message.
Dashly
Message
Freshsales
Note
1:manyIndividual Messages within a Conversation migrate as Freshsales Note records attached to the parent Task (via ContentDocumentLink). Each Note records sender (agent or visitor), body content, timestamp, and delivery channel as Note metadata. Author attribution is preserved in the Note title field. Message ordering is preserved by setting Note CreatedDate to the original Dashly timestamp.
Dashly
Company
Freshsales
Account
1:1Dashly Company records map directly to Freshsales Accounts. Standard fields (name, domain, industry) migrate to Account fields. Custom company properties are mapped to Freshsales custom Account fields. Dashly leads linked to a Company are associated to the migrated Account via Freshsales link_contact_to_account after Contact migration completes.
Dashly
User (Agent)
Freshsales
User
1:1Dashly agent and admin accounts map to Freshsales Users by email match. Role and permission data is exported as a configuration record. Any Dashly agent without a matching Freshsales User is held in a reconciliation queue for the customer's admin to provision before record import proceeds.
Dashly
Tag
Freshsales
Tag
1:1Dashly tags applied to Leads, Conversations, or Companies migrate as flat label arrays. Freshsales stores tags at the object level (Contact tags, Account tags, Deal tags) and we preserve all tag assignments per record. Tags used across multiple object types are exported separately per object type.
Dashly
Custom Properties
Freshsales
Custom Fields
lossyDashly custom fields on Leads and Companies are inventoried during discovery with their data types and value distributions. We create matching Freshsales custom fields (custom_contact_fields, custom_account_fields) before migration, then map values during import. Custom properties with picklist-style values are created as Freshsales dropdown fields; multi-value properties become multi-select picklists.
Dashly
Leadbot
Freshsales
Workflow (manual rebuild)
1:1Dashly Leadbots are exported as structured JSON configs containing trigger conditions, dialogue trees, and action sequences. We provide the exported config file and a mapping guide describing how each bot trigger and action maps to an equivalent Freshsales Workflow. The workflow rebuild is manual and outside automated migration scope.
Dashly
Triggered Message
Freshsales
Workflow (manual rebuild)
1:1Triggered message rules (behavior-based outbound sequences) are exported as JSON automation data. Freshsales Workflows use a different trigger-action model and must be rebuilt manually. We deliver the exported config and a step-by-step mapping guide for each triggered message sequence.
Dashly
Knowledge Base Article
Freshsales
Freshdesk Articles (if applicable)
1:1Dashly knowledge base articles (title, body, SEO settings, category) are exported as structured text with metadata. Freshsales does not include a native knowledge base; articles intended for agent reference should be migrated to Freshdesk if the customer licenses Freshdesk, or to a third-party knowledge base tool. We flag this decision during scoping.
| Dashly | Freshsales | Compatibility | |
|---|---|---|---|
| Lead | Contact1:1 | Fully supported | |
| Conversation | Task1:many | Fully supported | |
| Message | Note1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| User (Agent) | User1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Custom Properties | Custom Fieldslossy | Mapping required | |
| Leadbot | Workflow (manual rebuild)1:1 | Fully supported | |
| Triggered Message | Workflow (manual rebuild)1:1 | Fully supported | |
| Knowledge Base Article | Freshdesk Articles (if applicable)1: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.
Dashly gotchas
Visitor-based pricing affects migration scoping
No public bulk export endpoint
Leadbot and triggered message configs require manual rebuild
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
Discovery and field inventory
We audit the source Dashly account via paginated API: total Lead count, Company count, Conversation count, Message count, active Leadbot configs, triggered message rules, knowledge base article count, tag taxonomy, and all custom Lead and Company property definitions with data types and sample values. We check the current visitor plan tier to flag any customer approaching quota before migration begins. The discovery output is a written migration scope covering record counts, schema mapping, and a list of custom fields to create in Freshsales before migration.
Freshsales schema preparation
We create custom Contact and Account fields in Freshsales matching every Dashly custom property. We configure tags, set up the contact and account page layouts, and establish the owner assignment rules. If the customer uses Freshdesk, we confirm the knowledge base migration path. The Freshsales schema is validated in the customer's target account before any data extraction begins.
Extraction and data cleansing
We extract Leads, Companies, Conversations, Messages, Tags, and User records from Dashly using paginated API requests. We apply field-level inclusion parameters to pull only relevant fields, chunking per endpoint to handle rate limits. We flag duplicate emails, orphaned company associations, and records with missing required fields. Data cleansing runs as a separate phase before transformation, allowing the customer to review and remove junk records.
Transformation and conversation flattening
We transform extracted data to match Freshsales schema: Leads to Contacts, Companies to Accounts, Conversations to Tasks, Messages to Notes. Tags are mapped to Freshsales tag fields. Custom property values are mapped to their corresponding Freshsales custom fields. The company-lead association is preserved in a staging lookup table for post-import linking. Owner email addresses are resolved against the Freshsales User table.
Import and parent-record linking
We import in dependency order: Accounts (from Companies), Users (validated), Contacts (with tag mapping), Tasks (one per Conversation), Notes (attached to Tasks), then post-import linking of Contacts to Accounts. Each phase emits a row-count reconciliation report. We use Freshsales REST API or CSV import depending on record volume, with bulk import for large datasets.
Cutover and automation rebuild handoff
We freeze Dashly writes during cutover, run a final delta pass for any records modified during the migration window, then deliver the Leadbot and triggered-message JSON configs with Freshsales Workflow mapping guides. We provide a written inventory of every active automation requiring rebuild. We do not rebuild automations as part of the migration scope; that work is handled by the customer's admin or a Freshsales partner post-migration.
Platform deep dives
Dashly
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 Dashly 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
Dashly: Not publicly documented.
Data volume sensitivity
Dashly 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 Dashly to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Dashly 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 Dashly
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.