CRM migration
Field-level mapping, validation, and rollback between Weave and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Weave
Source
Freshsales
Destination
Compatibility
11 of 12
objects map 1:1 between Weave and Freshsales.
Complexity
BStandard
Timeline
48–72 hours
Overview
Weave is a patient-experience and communications platform built for dental, veterinary, and medical practices. Its core objects are Patients (contacts), Locations (businesses), Appointments, Communications (calls, texts, emails), Payments, and Reviews. Freshsales is a sales CRM built on the Freshworks platform with native objects: Leads, Contacts, Accounts, Deals, Activities, Products, and Custom Modules. The two platforms share no common object schema, so every Weave entity maps through an intermediate transformation layer. We migrate Patients → Contacts with address and phone preservation, Locations → Accounts with industry tagging, Appointments → Tasks with original timestamps, and Communication history → Activity records. Weave's review and payment records require custom object creation in Freshsales or field-level custom fields on Contact. Any Weave automations, text templates, or scheduling rules have no Freshsales equivalent — we export them as JSON for admin reference and rebuild. The migration runs via Freshsales REST API (rate-limited per plan: Growth 1000/hr, Pro 2000/hr, Enterprise 5000/hr) with delta-pickup capturing in-flight records during cutover.
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 Weave 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.
Weave
Patient
Freshsales
Contact
1:1Weave Patients map directly to Freshsales Contacts. The patient's first name, last name, email, phone, address, and date of birth map to Freshsales Contact fields. We preserve the original Weave patient create date as a custom datetime field since Freshsales CreatedDate reflects the migration run date. Owner resolution uses email match against Freshsales users.
Weave
Patient
Freshsales
Lead
1:manyPatients with a lifecycle indicator of 'Prospect' or 'Referral' with no treatment history split to Freshsales Lead. Fully active patients with appointment history map to Contact. This split is driven by a Weave custom field flag or, if absent, by whether the patient record has at least one associated appointment.
Weave
Location
Freshsales
Account
1:1Weave Locations map to Freshsales Accounts. The location name, address, phone, and website fields map directly. We tag the Freshsales Account with a custom Industry pick-list value (e.g., 'Healthcare — Dental', 'Healthcare — Veterinary') since Weave's location type is not a standard Freshsales field. Parent-child location hierarchies in Weave map to Freshsales Account.ParentId.
Weave
Appointment
Freshsales
Task
1:1Weave Appointments map to Freshsales Tasks. The appointment subject, scheduled datetime, and status (Confirmed, Completed, Cancelled) map to Task fields. Duration calculates from Weave appointment length. The Task is linked to the Patient Contact record and the Location Account record via lookup. Cancelled appointments migrate as completed tasks with a custom status field to preserve history.
Weave
Communication (Call/Text/Email)
Freshsales
Activity (Task / Event)
1:1Weave communication records (calls, SMS, emails) map to Freshsales Tasks with Type = 'Call', 'SMS', or 'Email'. Original timestamps and communication direction (inbound/outbound) are preserved in custom fields. The content or transcription, if stored in Weave, migrates to the Task description. Unanswered calls from Weave preserve the missed-call flag.
Weave
Payment / Invoice
Freshsales
Custom Object or Deal Product Line
1:1Weave payment records have no native Freshsales equivalent. We create a Freshsales Custom Module called 'Payment_History__c' or, if the payment relates to a specific treatment plan, attach it as a custom field group on the Contact. Each payment's amount, date, method, and status migrate. Freshsales Pro plan or above is required for Custom Modules.
Weave
Review Request
Freshsales
Custom Field on Contact
1:1Weave's review-request workflow (Google/Facebook review invites) has no Freshsales equivalent. We preserve the fact that a review was requested and whether it was completed as custom fields on the Contact record: Review_Request_Date__c and Review_Completed__c. The actual review link is stored as a URL field for reference.
Weave
Staff / Team Member
Freshsales
User
1:1Weave staff members map to Freshsales users by email. We resolve each Weave staff email against Freshsales registered users. Unmatched staff are flagged before migration — the team either invites them to Freshsales or assigns their records to a fallback user. We preserve the staff role as a custom pick-list on the Contact record for context.
Weave
Custom Field (Patient-level)
Freshsales
Custom Field (Contact)
1:1Weave Pro/Elite custom fields on patient records (e.g., 'Insurance Provider', 'Last Cleaning Date', 'Treatment Plan Status') map to Freshsales custom fields on Contact. Field type is matched: pick-lists map to pick-lists, dates to dates, numbers to numbers. The Freshsales field limit per module applies — Growth (10 fields) may require a plan upgrade or field consolidation.
Weave
Treatment Plan / Case
Freshsales
Deal
1:1Weave treatment plans (patient-specific proposed procedures with estimated costs) map to Freshsales Deals. The treatment plan name becomes the Deal name; estimated value becomes Deal Amount; status maps to Freshsales Deal stage. We create a custom pick-list field Treatment_Plan_Status__c to track the plan lifecycle. Each treatment line item requires a separate Deal Product entry or a custom object.
Weave
Product / Service Item
Freshsales
Product
1:1Weave services and products are mapped to Freshsales Products for use within Deals. The product name, SKU (if present), unit price, and description all migrate. Products connect to Deals via the Deal Product association in Freshsales, enabling line-item tracking and revenue attribution per offering.
Weave
Note (Patient Note)
Freshsales
Note
1:1Weave patient notes including clinical notes and general comments migrate to Freshsales Notes attached to the Contact record. Both the original note timestamps and the author staff email are preserved during migration. Since Freshsales does not support HTML-formatted notes natively, any rich-text formatting is converted to plain text to ensure readability in the target system.
| Weave | Freshsales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Patient | Lead1:many | Fully supported | |
| Location | Account1:1 | Fully supported | |
| Appointment | Task1:1 | Fully supported | |
| Communication (Call/Text/Email) | Activity (Task / Event)1:1 | Fully supported | |
| Payment / Invoice | Custom Object or Deal Product Line1:1 | Fully supported | |
| Review Request | Custom Field on Contact1:1 | Fully supported | |
| Staff / Team Member | User1:1 | Fully supported | |
| Custom Field (Patient-level) | Custom Field (Contact)1:1 | Fully supported | |
| Treatment Plan / Case | Deal1:1 | Fully supported | |
| Product / Service Item | Product1:1 | Fully supported | |
| Note (Patient Note) | Note1: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.
Weave gotchas
Pricing hides setup, hardware, and addon costs
SMS and voicemail retention limits
Limited public API documentation
VoIP call records tied to phone service
Consolidated pricing tiers obscure feature availability
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
Pre-migration audit and Weave data extraction
FlitStack connects to Weave via scoped read access and exports all patient records, location records, appointments, communication history, payments, and custom fields. We build a data dictionary from the Weave export — identifying every custom field, pick-list value, and relationship. We cross-reference Weave staff emails against the target Freshsales user list to build the owner resolution map and flag unmatched users. This audit produces the field-mapping specification used in all subsequent steps.
Create Freshsales schema for custom fields and modules
Before any data is written, FlitStack creates all required custom fields in Freshsales — original create dates, source system IDs, lifecycle stages, payment fields, review fields — via the Freshsales API. If the Growth plan is in use and the custom field count exceeds 10 per module, we surface this as a blocker and recommend a plan upgrade or field prioritization. For Enterprise plans, we create the Payment_History__c and Review_Request__c custom modules. This step also establishes the mapping of Weave location types to Freshsales Account Industry pick-list values.
Migrate accounts and contacts in dependency order
Freshsales requires Account records to exist before Contacts can link via AccountId, and Contacts before Deals can link via ContactId. We sequence the migration: Locations → Accounts first, then Patients → Contacts with AccountId resolution, then Treatment Plans → Deals with ContactId resolution. Owner resolution runs concurrently — Weave staff emails map to Freshsales User IDs. Any Contacts or Deals with unresolved owners land with a flagged status for admin review. Timestamps are preserved via custom datetime fields.
Migrate activities and communication history with rate-limit pacing
Appointment and communication records migrate after Contacts are confirmed in Freshsales. We paginate through Weave communication history and write Freshsales Tasks in batches, throttling to stay within the Freshsales plan's API rate limit (1,000/hr on Growth, 2,000/hr on Pro). Each Task links to its parent Contact and retains the original timestamp in Original_Communication_Date__c. For Weave records with high activity volume (practices with heavy SMS history), we prioritize recent records first and flag the tail for a second migration pass.
Sample migration with field-level diff and admin sign-off
A representative sample — typically 100–500 records covering contacts, accounts, appointments, and communication types — migrates first. We generate a field-level diff report comparing source Weave values against destination Freshsales values. The admin reviews the diff: confirming lifecycle stage mapping, location-type-to-industry mapping, owner resolution, and deal stage values. FlitStack surfaces any mismatches (truncated text, pick-list value gaps, missing custom fields) before the full migration runs. No full run commits without admin sign-off on the sample diff.
Full migration run with delta-pickup and rollback readiness
The full migration writes all records to Freshsales in the validated sequence. A delta-pickup window of 24–48 hours runs concurrently, capturing any Weave records modified during the migration window (new appointments, updated patient details, payment records posted after the initial export snapshot). An audit log records every record written, the source value, and the destination ID. If reconciliation fails, one-click rollback reverts the Freshsales instance to its pre-migration state. The Weave account remains fully operational throughout — scoped read access does not interrupt daily practice operations.
Platform deep dives
Weave
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 Weave 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
Weave: Not publicly documented.
Data volume sensitivity
Weave 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 Weave to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Weave 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 Weave
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.