CRM migration
Field-level mapping, validation, and rollback between InStream and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
InStream
Source
Freshsales
Destination
Compatibility
4 of 8
objects map 1:1 between InStream and Freshsales.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from InStream to Freshsales is a migration from a lightweight contact-management tool to a full CRM with built-in phone, email, and AI capabilities. InStream consolidates interactions from Gmail, Facebook, Twitter, and LinkedIn into a unified contact record, but its social enrichment is pulled live from external APIs rather than stored as independent fields. When migrating to Freshsales, we extract the social profile URLs from InStream and map them to Freshsales contact social-profile fields to preserve the reference. InStream's free-text pipeline stage names require explicit mapping against Freshsales stage values to preserve deal flow semantics. We do not migrate InStream Lists as functional segments, but we preserve their membership as Freshsales Tags. Workflow rules, Gmail sync configuration, and social integration settings do not migrate; we deliver a written inventory of any InStream list segments and pipeline configurations requiring manual rebuild in Freshsales.
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 InStream 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.
InStream
Contact
Freshsales
Lead or Contact
1:manyInStream Contacts map to either Freshsales Lead or Contact. InStream records without a company association and with no deal history map to Freshsales Lead. Contacts with an associated InStream Company and any deal activity map to Freshsales Contact tied to the corresponding Freshsales Account. We extract the contact's pipeline membership and deal count during scoping to determine the split. Any contact that represents a known buyer goes directly to Contact with Account linkage.
InStream
Company
Freshsales
Account
1:1InStream Company records map directly to Freshsales Account. The company domain or website URL becomes the Account's website field and serves as the dedupe key during import. Account records are created before Contact import so that the Account lookup relationship is satisfied at the moment of Contact insert. Company phone, address, and industry fields map directly to their Freshsales equivalents.
InStream
Deal
Freshsales
Deal
1:1InStream Deals map to Freshsales Deals with deal name, value, currency, expected close date, and owner preserved. The InStream pipeline stage assignment maps to the corresponding Freshsales Deal stage by name. Deals without an associated Company map to Freshsales Deals with no Account linkage and are flagged for the customer to associate manually post-migration if needed.
InStream
Pipeline Stage
Freshsales
Deal Stage
lossyInStream allows free-text pipeline stage names with no enforced taxonomy. We capture the full stage name-to-order mapping during discovery and explicitly configure matching Freshsales Deal stage values before migration. Probability percentages from InStream are not available as structured data, so we assign standard Freshsales stage probabilities unless the customer provides custom values. Each InStream pipeline maps to a separate Freshsales Sales Process.
InStream
List
Freshsales
Tag
lossyInStream Lists are used for contact segmentation and group management. We extract list membership for every Contact and preserve it in Freshsales as Tags. Each InStream List name becomes a Tag label. Freshsales does not replicate InStream Lists as functional segments, so the customer rebuilds segmentation using Freshsales static lists or dynamic views post-migration. We deliver a written inventory of all InStream Lists with their member counts and recommended Freshsales equivalent.
InStream
Activity (email, call, meeting, note)
Freshsales
Activity timeline
1:1InStream activity history attached to Contacts migrates to Freshsales activity timeline. Emails map to Freshsales Email records, calls to Task records with call subtype, meetings to Event records, and notes to Note records. Each activity retains its original timestamp for timeline ordering. We extract activity records from InStream export and map them to Freshsales activity objects via the Freshsales REST API.
InStream
Tag
Freshsales
Tag
1:1InStream Tags on Contacts migrate directly to Freshsales Tags. Tag labels are preserved as-is. Freshsales Tags are flat (no hierarchy), matching InStream's tag model. If InStream tags contain hierarchical information (e.g., Region:North America), we flatten them to single labels and note the structure for the customer to rebuild as Freshsales custom fields if needed.
InStream
Custom Field
Freshsales
Custom Field
lossyInStream's custom field schema is not publicly documented via API. We extract available field definitions from InStream UI exports and cross-reference them against Freshsales custom field types (string, number, date, picklist, multi-select picklist, phone, URL). InStream fields with no clear Freshsales equivalent are flagged in the discovery report for manual mapping. Any InStream custom field that cannot be matched is preserved in a JSON blob in a Freshsales long-text custom field with a naming convention noting it requires manual review.
| InStream | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Pipeline Stage | Deal Stagelossy | Fully supported | |
| List | Taglossy | Fully supported | |
| Activity (email, call, meeting, note) | Activity timeline1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | 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.
InStream gotchas
Free plan 100-contact cap applies to total contacts, not just active ones
Social profile enrichment does not migrate as raw data
Pipeline stage names are free-text and not normalized
Custom fields schema is not publicly documented
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 scope audit
We audit the source InStream account across plan tier, contact count, company count, deal count, pipeline stage names, list membership, tag usage, and activity history volume. We extract available custom field definitions from the InStream UI export and identify any social profile URL fields stored in contact records. We confirm the target Freshsales plan and verify that the required custom fields can be created in the destination account. The discovery output is a written migration scope with object counts, pipeline stage mapping table, and custom field reconciliation list.
Data cleansing and preparation
InStream data frequently contains formatting inconsistencies from social imports and free-text fields. We run a data quality pass on contact records to standardize phone number formats, deduplicate email addresses, and flag incomplete records. We remove any records that are hard-deleted in InStream but may still appear in exports. Freshsales documentation recommends data cleansing before migration to prevent dirty data from multiplying in the new system. We deliver a data quality report and resolve duplicates before any records are loaded into Freshsales.
Schema configuration in Freshsales
We configure the destination Freshsales schema before any data loads. This includes creating custom fields to match extracted InStream custom field definitions, configuring Deal stage values to match InStream pipeline stage names, setting up Sales Processes per InStream pipeline, and enabling any Freshsales features (e.g., products, quotes) required by the migration scope. Lead conversion settings are configured to prevent duplicate Account creation when migrated Leads are later converted. Schema is configured in a Freshsales sandbox or trial account first for validation.
Test migration and reconciliation
We run a full test migration into the Freshsales destination using production-like data volume. The customer reconciles record counts (Contacts in, Accounts in, Deals in, Activities in) against InStream source reports, spot-checks 20-30 random records field by field, and validates that pipeline stage mapping preserved deal flow semantics. Any mapping corrections, missing custom fields, or stage name adjustments happen at this stage. We do not proceed to production migration until the customer signs off on the test migration results.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from InStream Companies) first, then Contacts (with AccountId resolved from the Account import), then Leads for any contacts that did not have a Company association, then Deals (with stage names mapped via the configured stage table), then Tags, then activity history via Freshsales REST API. Each phase emits a row-count reconciliation report before the next phase begins. During cutover, InStream writes are frozen and a final delta migration captures any records modified during the migration window.
Cutover, validation, and inventory delivery
We validate the final Freshsales record counts against InStream source reports, confirm that pipeline stage mapping preserved deal ordering, and verify that all tags are present on the correct contacts. We deliver the List and pipeline configuration inventory to the customer's admin team for manual rebuild in Freshsales. We do not rebuild InStream list segments as Freshsales segments inside the migration scope; the inventory document provides the source list definitions and recommended Freshsales equivalents. We support a three-business-day post-cutover window for reconciliation issues raised by the customer's team.
Platform deep dives
InStream
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 InStream 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
InStream: Not publicly documented..
Data volume sensitivity
InStream 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 InStream to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your InStream 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 InStream
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.