CRM migration
Field-level mapping, validation, and rollback between Referrizer and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Referrizer
Source
Freshsales
Destination
Compatibility
6 of 12
objects map 1:1 between Referrizer and Freshsales.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Referrizer is a referral-first CRM that bundles SMS marketing, loyalty automation, reputation management, and review requests into a single flat-rate subscription for small multi-location businesses. Freshsales is an AI-powered CRM from Freshworks that structures data into Leads, Contacts, Accounts, Deals, and Tasks with Freddy AI contact scoring and a per-user pricing model. The two platforms share a Contact-centric model but diverge significantly on object vocabulary and export capability. Referrizer has no bulk export API — migration relies on paginated CSV reads stitched together — and the Smart Inbox is not accessible via API at all, meaning conversational message history cannot be migrated programmatically. We flag both gaps during scoping. Loyalty points survive as custom number fields on Freshsales Contacts, and Campaigns and Offers are preserved as Notes with structured metadata rather than as native objects. Workflows, review-request automations, and Smart Inbox message threads do not migrate; we deliver a written inventory for the customer's admin to rebuild or manually export.
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 Referrizer 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.
Referrizer
Contact
Freshsales
Lead or Contact (split based on qualification)
1:1Referrizer Contacts map to Freshsales Leads for records that are prospect or early-stage, and to Freshsales Contacts for records that have moved into an active pipeline or have deal associations. We inspect the Referrizer contact record's pipeline association and stage property at migration time to determine the split. All contact fields — name, phone, email, address, custom fields — transfer directly. A custom text field ref_referrizer_id__c preserves the original Referrizer contact ID for audit and reconciliation.
Referrizer
Company
Freshsales
Account
1:1Referrizer does not have a dedicated Company object, but contact records often carry business name in a custom field or label. We extract business name data during extraction and create Freshsales Account records from the extracted values, then link the Contact to the Account via the Business Account lookup. If no business name exists on a contact, the contact migrates without an Account association, which the customer's admin resolves post-migration.
Referrizer
Deal
Freshsales
Deal
1:1Referrizer Pipeline deals map directly to Freshsales Deal records. The Referrizer deal stage name maps to Freshsales Deal Status, the pipeline name maps to a Freshsales Deal Type or custom field, and the deal amount, close date, and owner transfer as-is. We create the Freshsales Deal Status values and types to match the Referrizer stage names before migration so that no stage values are rejected on import.
Referrizer
Pipeline / Stage
Freshsales
Deal Status + Deal Type
lossyReferrizer pipeline stages become Freshsales Deal Status picklist values. Each Referrizer pipeline also becomes a Freshsales Deal Type, allowing the customer to maintain separate deal categorization. We enumerate all Referrizer pipeline stages during discovery, create matching status values in Freshsales Admin Settings, and validate that no deal is rejected during test migration due to unknown stage values.
Referrizer
Campaign
Freshsales
Note (structured)
lossyReferrizer Campaigns (Regular and Automated modes) have no native equivalent in Freshsales CRM, which lacks a campaign management object at the base tier. We export campaign records with name, type, status, and associated contact IDs, then write them as Freshsales Notes with a structured body that preserves campaign type, send date, and contact count. The customer's admin receives the campaign inventory as a reference document for manual recreation in Freshsales or Freshmarketer.
Referrizer
Offer
Freshsales
Note (structured)
lossyReferrizer Offers and referral codes are promotional entities without a Freshsales equivalent. We export offer codes, reward structures, validity dates, and referral link associations as structured metadata, then create Freshsales Note records with the offer data in a parseable format. Any contacts associated with specific offers carry that context as a custom text field offer_codes__c rather than as a native relationship.
Referrizer
Loyalty Program (points as property)
Freshsales
Custom Number Field on Contact
lossyReferrizer stores loyalty point balances as numeric custom fields on contact records, not as a distinct object. We flag all loyalty-related custom field names during discovery, then create matching custom number fields in Freshsales Contacts (e.g., loyalty_points_balance__c) before migration. Redemption history and program tier status are not transferable as native objects; we document the program structure in a handoff note for the customer's admin to determine a manual or integration-based resolution.
Referrizer
Review Request
Freshsales
Custom Fields on Contact
lossyReferrizer tracks review request history — which contacts received requests, when, and to which platform (Google, Yelp, Facebook) — as activity properties on contact records. We extract review request metadata and write it to Freshsales Contact custom fields (e.g., last_review_request_date__c, review_request_platform__c). The full review request log is not transferable as a native history object; it is preserved in the extraction CSV as a reference for the customer.
Referrizer
Label
Freshsales
Contact Tag
1:1Referrizer contact labels map to Freshsales Contact Tags. Labels are exported as string arrays per contact and inserted as Tag records linked to each Contact. Freshsales supports multiple tags per contact, matching Referrizer's label capability. Tag names transfer verbatim; the customer renames or consolidates tags post-migration if needed.
Referrizer
Activity / Engagement Feed
Freshsales
Task
1:1Referrizer contact activity feed events — including campaign opens, link clicks, and UTM tracking data — export as timestamped activity records. We map these to Freshsales Task records with the activity type preserved in a custom field (e.g., activity_type__c), the original timestamp as ActivityDate, and the contact linked via the WhoId. Note that Referrizer Smart Inbox message threads are not included because no API endpoint exposes that data.
Referrizer
User / Team Member
Freshsales
User
1:1Referrizer team members map to Freshsales Users by email address. We export all Referrizer users with name and email during extraction, then match against Freshsales User records in the destination. Any Referrizer owner without a matching Freshsales User is placed in a reconciliation queue for the customer's admin to provision before record import continues.
Referrizer
Location (multi-location)
Freshsales
Custom Field or Account association
lossyReferrizer multi-location contacts require explicit location-ID scoping during extraction to prevent cross-contamination between business locations. We scope exports by the Referrizer location account ID, then write location context to Freshsales as a custom text field (location_name__c) on the Contact or as an Account association depending on the customer's data model preference. The customer chooses the strategy during scoping.
| Referrizer | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split based on qualification)1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Pipeline / Stage | Deal Status + Deal Typelossy | Fully supported | |
| Campaign | Note (structured)lossy | Fully supported | |
| Offer | Note (structured)lossy | Fully supported | |
| Loyalty Program (points as property) | Custom Number Field on Contactlossy | Fully supported | |
| Review Request | Custom Fields on Contactlossy | Fully supported | |
| Label | Contact Tag1:1 | Fully supported | |
| Activity / Engagement Feed | Task1:1 | Fully supported | |
| User / Team Member | User1:1 | Fully supported | |
| Location (multi-location) | Custom Field or Account associationlossy | 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.
Referrizer gotchas
No bulk export API — migration relies on Zapier or CSV
Smart Inbox conversations are not accessible via API
Loyalty points stored as contact properties, not a distinct object
Rate limits not publicly documented
Multi-location scoping required to avoid cross-contamination
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 extraction planning
We audit the Referrizer account through the paginated API (GET /contacts with perPage=100 and page iteration) and enumerate all custom field names, label sets, pipeline stages, deal records, and user accounts. We confirm the location structure for multi-location accounts and decide on location scoping strategy. We also request manual confirmation from the customer about Smart Inbox data — whether it must be preserved and whether manual export has been performed. The discovery output is a written migration scope document and an extraction script parameterized for the customer's specific field schema.
Freshsales destination configuration
We configure the Freshsales destination account before any data import. This includes adding all required Users (matched by email to Referrizer owners), creating custom fields on the Contact and Deal modules that mirror the Referrizer custom field schema exactly (field names must match for auto-mapping during CSV import), configuring Deal Status values and Deal Types to match Referrizer pipeline stages, and setting up Lead conversion field mapping so that custom field data is preserved when a Lead converts to a Contact. Custom fields for loyalty points, review request history, and location context are created as number or text fields on the Contact module.
Test migration and reconciliation
We run a test migration using a sample of 100-500 records drawn from the customer's live Referrizer data into a staging Freshsales environment. The customer reconciles record counts, spot-checks field mapping accuracy, and validates that custom field data landed in the correct Freshsales fields. Any mapping corrections — wrong field type, missed custom field, stage value mismatch — are resolved in this phase before production migration begins. The customer signs off the test migration output before we proceed to full extraction.
Full extraction from Referrizer
We execute the full paginated extraction from Referrizer using automated pagination stitching. Each page of 100 records is fetched, appended to a consolidated CSV, and logged. We monitor for 429 responses and apply exponential backoff with reduced concurrency if throttling is detected. Location-ID scoping is applied throughout to prevent cross-contamination. The extraction produces a complete contact CSV, deal CSV, activity CSV, label CSV, and user CSV. Smart Inbox data is flagged as not extracted per the scope confirmation.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated), Accounts (from extracted business names), Contacts (with AccountId resolved and loyalty point fields populated), Leads (for unqualified records per the split rule), Deals (with OwnerId, Deal Status, and Deal Type resolved), Activity history (Tasks via CSV import with WhoId and ActivityDate preserved), and Labels (as Freshsales Contact Tags). Each phase emits a row-count reconciliation report. Large imports exceeding 25,000 records are split into batches and submitted as Freshsales support tickets for off-peak processing.
Cutover, delta migration, and handoff
We set a write-freeze window on Referrizer during cutover. Any new records created in Referrizer during the migration window are migrated as a delta pass. Freshsales is enabled as the active CRM. We deliver the campaign and offer inventory as structured Notes and a written handoff document listing the records that could not migrate natively (campaigns, offers, Smart Inbox, review request logs, loyalty redemption history). The customer's admin rebuilds Referrizer workflows and automations in Freshsales based on the inventory; we do not rebuild automations as part of the migration scope. We provide a one-week hypercare window for reconciliation issues.
Platform deep dives
Referrizer
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 Referrizer 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
Referrizer: Not publicly documented; API returns 429 TOO_MANY_REQUESTS on overages.
Data volume sensitivity
Referrizer 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 Referrizer to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Referrizer 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 Referrizer
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.