CRM migration

Migrate from Splio to Freshsales

Field-level mapping, validation, and rollback between Splio and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

Splio logo

Splio

Source

Freshsales

Destination

Freshsales logo

Compatibility

38%

3 of 8

objects map 1:1 between Splio and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Splio and Freshsales serve different operational functions, and that mismatch shapes every migration. Splio is a retail-centric marketing automation and loyalty platform whose primary objects are Contacts, Orders, Products, Loyalty memberships, Rewards, Stores, and custom Interactions. Freshsales is a sales CRM built on the Leads-Contacts-Accounts-Deals-Activities model from the Freshworks suite. The migration is a structural translation: loyalty point balances, tier names, and card codes have no native Freshsales equivalent and migrate as custom fields on the Contact record; Splio Orders map to Deals with line-item Tasks to preserve purchase history; and Splio Interactions (custom events) map to Freshsales Tasks or Events depending on whether they represent point-in-time activities or tracked engagements. Splio's silent exclusion of contacts without list membership is the highest-severity gotcha in this pair—without a pre-export list-membership audit, a significant portion of the contact database is silently dropped. We do not migrate Splio campaigns, automation filters, or loyalty program rules as code; we deliver a written inventory of these for your admin to rebuild in Freshsales Workflows after cutover.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Splio logo

Splio

What's pushing teams away

  • Steep onboarding curve—multiple users report it took significant time to train team members, especially for advanced features beyond basic automation.
  • Data integration complexity—contacts and sales data require list membership to be included in exports, which is not immediately obvious and causes unexpected data gaps.
  • Social media integration is limited compared to dedicated social tools, making cross-channel social posting and monitoring difficult within Splio.
  • Limited B2B functionality since the platform is primarily designed for retail and DTC brands, making it a poor fit for companies with complex B2B sales cycles.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How Splio objects map to Freshsales

Each row shows how a Splio 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.

Splio

Contact

maps to

Freshsales

Lead and Contact (split required)

1:many
Fully supported

Splio Contacts map to Freshsales Lead for unqualified prospects and Contact for qualified buyers or existing customers. We resolve the split using Splio's loyalty tier (if set) and order history presence as proxies: contacts with prior orders or loyalty memberships become Contacts attached to an Account; contacts without either become Leads. The original Splio contact_id is preserved in a custom field splio_contact_id__c on both objects. Pre-migration, we audit list membership and assign orphan contacts (those with no list) to a catch-all segment before export to avoid the silent exclusion gap.

Splio

Order

maps to

Freshsales

Deal (Opportunity)

1:1
Fully supported

Splio Orders map to Freshsales Deal records. The Splio order_id becomes a custom field splio_order_id__c on the Deal for audit traceability. Order date becomes Deal Created Date; order total maps to Deal Amount; order status (pending, completed, cancelled) maps to a custom picklist field order_status__c. Splio supports order replacement on re-import with the same order_id; Freshsales Deals are unique by external_id__c so we use splio_order_id__c as the external_id to prevent duplication.

Splio

Order_item

maps to

Freshsales

Task or Product2 line

lossy
Fully supported

Order items (line items within a Splio Order) do not have a direct Freshsales equivalent. For migrations where line-item detail is critical for reporting, we create a Task per order item with a custom order_item_detail__c field carrying the product name, quantity, and price as a formatted string, or we map products to Freshsales Product2 records and link them via a Deal Product association if the customer is on a Freshsales plan that supports Products. The mapping strategy is confirmed during scoping.

Splio

Product

maps to

Freshsales

Product2

1:1
Fully supported

Splio Products map to Freshsales Product2 records. Product code, name, and price migrate directly. Products must exist in Freshsales before any order item that references them, so we sequence Product migration before Order migration. Custom fields on Splio products (products scope) migrate as custom fields on Product2.

Splio

Loyalty membership

maps to

Freshsales

Contact custom fields + Loyalty lookup object

lossy
Fully supported

Loyalty membership data (card_code, nq_points, q_points, tier, membership_start_date) has no native Freshsales equivalent and migrates as custom Contact fields: loyalty_card_code__c, loyalty_nq_points__c, loyalty_q_points__c, loyalty_tier__c, loyalty_start_date__c. If the customer requires a queryable loyalty history (reward attributions over time), we create a Loyalty_Activity__c custom object with a lookup to Contact and fields for activity_type, points_delta, and timestamp. We do not migrate loyalty program rules or tier logic as code; these are documented for admin rebuild in Freshsales Workflows.

Splio

Reward and reward attribution

maps to

Freshsales

Contact custom fields or Loyalty_Activity__c

lossy
Fully supported

Reward definitions at the program level are documented as a configuration inventory. Individual reward attributions (which contact received which reward and when) migrate as records in the Loyalty_Activity__c custom object with activity_type = 'Reward', points_delta (if points-based), reward_name__c, and attribution_date__c. The reward attribution history is preserved for reporting but does not trigger any automation in Freshsales without explicit workflow rebuild.

Splio

Store

maps to

Freshsales

Location or Account

1:1
Fully supported

Splio Store records (physical retail locations and e-commerce sites) map to Freshsales Location records if the destination account has the Locations feature enabled, or to a custom Account record with a store_type__c picklist set to 'Physical Store' or 'E-commerce'. Store attributes (address, location, custom fields in the stores scope) migrate as typed fields on the destination record.

Splio

Interaction (custom events)

maps to

Freshsales

Task or Event

lossy
Fully supported

Splio Interactions are custom events sent via API for loyalty credits, purchase triggers, and behavioral tracking. Each Interaction type maps to either Task (if it represents a discrete action with an outcome, such as a loyalty point credit) or Event (if it represents a meeting or appointment-like occurrence). The original Splio interaction_id is preserved in a custom field splio_interaction_id__c. High-volume interaction event logs may exceed CSV import limits; for accounts with more than 100,000 interaction records, we use the Freshsales REST API with pagination and exponential backoff rather than the CSV import path.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Splio logo

Splio gotchas

High

Contacts without list membership are silently excluded from exports

Medium

Filter preview counts differ from actual export counts

Medium

Campaign migration requires sequential data-then-filters ordering

Low

API rate limits are not publicly documented

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • Contacts without list membership are silently excluded from Splio exports

    Splio's standard export mechanism skips any Contact record that is not assigned to at least one list. This is documented behavior but catches most migration teams off guard, especially for recently created contacts, imported records, or B2B contacts that were not segmented into a marketing list. When we export from Splio, we run a list-membership audit during scoping, assign orphan contacts to a catch-all segment before export, and validate the post-export count against the full contact total reported in Splio. Without this step, 10-40% of the contact database can be silently dropped and only discovered after Freshsales is live.

  • Filter preview counts diverge from actual export counts in Splio

    Splio's Target section shows the total number of contacts matching filter criteria, but the actual export excludes contacts without list membership regardless of filter logic. A filter covering 50,000 contacts can export 30,000 if 20,000 are orphan records. We always validate the export manifest against the filter UI count before declaring export complete and before beginning Freshsales import. If the gap exceeds a defined threshold, we pause and run the list-membership remediation step before proceeding.

  • Loyalty point balances and tier names have no native Freshsales equivalent

    Freshsales does not have a loyalty or rewards object. Loyalty point balances (nq_points, q_points), tier names, and card codes migrate as custom Contact fields, and reward attribution history migrates as a custom object. However, Freshsales Workflows cannot natively evaluate loyalty tier logic or auto-credit points without explicit custom field triggers built by the customer's developer. We document the loyalty program rules and reward attribution logic as a configuration inventory for the admin or developer to implement post-migration.

  • Freshsales CSV import does not support duplicate detection across object types

    Freshsales' CSV import wizard uses email as the dedupe key for Leads and Contacts, and an external_id__c for Deals. If the migration runs with an existing Freshsales account that already contains records, the import will create duplicates rather than update existing records unless the external_id__c is explicitly set and matched. We coordinate with the customer during scoping to determine whether the Freshsales account is greenfield or has existing records, and we configure the import accordingly.

Migration approach

Six steps for a successful Splio to Freshsales data migration

  1. Discovery and list-membership audit

    We audit the Splio account across all scopes (contacts, stores, products, orders, loyalty, rewards, interactions) and assess record volumes for each object. The first data-specific step is the list-membership audit: we pull the full contact list, cross-reference against list assignments, and identify orphan contacts. These are assigned to a catch-all segment or flagged explicitly before any export. We pair this with a Freshsales account assessment to confirm whether the destination is greenfield or has existing records, and we review the Freshsales plan tier to determine which features (Products, Locations, custom objects) are available for the migration mapping.

  2. Schema design and custom field creation

    We design the destination Freshsales schema before any data moves. This includes creating all custom fields on Contact (loyalty fields: loyalty_card_code__c, loyalty_nq_points__c, loyalty_q_points__c, loyalty_tier__c, loyalty_start_date__c), creating the Loyalty_Activity__c custom object if reward attribution history is in scope, configuring the Deals pipeline with stages mapped from Splio order status, and setting up Account Record Types if multiple business lines are present. Custom fields are created in Freshsales Admin Settings before migration begins and validated against the Splio field inventory.

  3. Data export sequencing from Splio

    We export from Splio in dependency order: Products first (required by order_items), then Stores, then Contacts (with list-membership remediation confirmed), then Orders (with order_id preserved), then Loyalty memberships and reward attributions, then Interaction event logs. Each export is validated against the Splio UI count before the next object begins. For Splio's undocumented API rate limits, we batch export requests and confirm ceiling behavior during the first export run. Filter exports follow the same validation protocol: manifest count versus UI count, with remediation triggered if the gap exceeds 2%.

  4. Sandbox migration and reconciliation

    We run a full migration into a Freshsales sandbox (or a parallel Freshsales account if the customer does not have sandbox enabled) using the same record volumes as production. The customer's RevOps or admin lead spot-checks 25-50 random records against the Splio source, verifies loyalty field accuracy, confirms order-Deal mapping, and validates interaction-to-Task mapping. Any field mapping corrections, type mismatches, or missing custom field additions are resolved in the sandbox before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: custom fields and schema (already validated in sandbox), Products, Stores or Locations, Accounts (derived from Stores if mapping to Accounts), Contacts (with the list-membership audit applied and the loyalty split resolved), Leads (for contacts without order history or loyalty membership), Deals (with splio_order_id__c as external_id), Loyalty_Activity__c records, and Interaction event logs via paginated REST API for high-volume histories. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, delta sync, and automation handoff

    We freeze writes in Splio during cutover, run a final delta migration of any records created or modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of every Splio campaign, triggered automation, and loyalty rule requiring rebuild in Freshsales Workflows. The inventory includes trigger conditions, filter logic, and recommended Freshsales Workflow equivalent. We do not rebuild Splio campaigns, automation filters, or loyalty program logic as code inside the migration scope. We support a one-week post-cutover window for reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Splio logo

Splio

Source

Strengths

  • Native loyalty engine combining points, tiers, and rewards with campaign automation in a single platform.
  • Acquired Tinyclues AI for predictive targeting and product recommendation within the campaign builder.
  • Omnichannel reach across email, SMS, push notifications, and mobile wallet passes.
  • GDPR and consent management tooling built into the platform for EU market compliance.
  • Managed migration services available for campaign design, filter creation, and responsive email coding.

Weaknesses

  • Requires significant onboarding investment; advanced features require technical knowledge beyond the standard UI.
  • Export behavior silently excludes contacts without list membership, causing unexpected data gaps during migration.
  • Social media integration is limited and not competitive with dedicated social management tools.
  • Primarily designed for B2C retail; B2B use cases require significant customization and may not fit well.
  • Pricing is not publicly documented, making budget planning and vendor comparison difficult without direct sales engagement.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Splio and Freshsales.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Splio: Not publicly documented in the developer hub — confirmed per integration during scoping.

  • Data volume sensitivity

    A

    Splio exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Splio to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Splio to Freshsales data migrations

Answers to the questions buyers ask most during Splio to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Splio to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 15,000 Contacts, 3,000 Orders, and no loyalty attribution history. Migrations with loyalty point migration, custom Interaction event histories exceeding 100,000 records, multi-store data, or an existing Freshsales account requiring duplicate resolution move to five to eight weeks because of schema design, loyalty field mapping, and interaction event API sequencing. The list-membership audit adds one to two days to scoping but prevents the most costly post-migration data gap.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Splio.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day