CRM migration
Field-level mapping, validation, and rollback between Act-On and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Act-On
Source
Freshsales
Destination
Compatibility
8 of 10
objects map 1:1 between Act-On and Freshsales.
Complexity
BStandard
Timeline
3-4 weeks
Overview
Moving from Act-On to Freshsales is a migration from a marketing automation platform to a full sales CRM. Act-On organises around Contacts and Companies with engagement scoring and Program-based nurture; Freshsales uses Leads, Contacts, Accounts, and Deals with Freddy AI scoring and built-in phone, email, and chat. The structural shift requires decisions about how Act-On's Contacts split into Freshsales Leads versus Contacts, how Companies map to Accounts, and how engagement scores and Program history are preserved as reference data. We extract all contact and company records via Act-On's API, transform the data model, import into a Freshsales Sandbox for validation, then migrate to production. Act-On Program builder logic and engagement score formulas do not transfer; we deliver a written blueprint of existing Programs and preserve the raw engagement score as a static custom field for Freddy AI to use as a training signal post-migration.
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 Act-On 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.
Act-On
Contact
Freshsales
Lead and Contact (split required)
1:manyAct-On Contacts do not map to a single Freshsales object. We split by lifecycle stage: Contacts with a qualified lifecycle stage (such as Sales Qualified Lead or Customer) map to Freshsales Contact tied to an Account. Contacts with an unqualified stage (such as Subscriber or Prospect) map to Freshsales Lead. The split rule is defined during scoping and applied as a transform during migration. The original Act-On lifecycle stage is preserved in a custom field for reference.
Act-On
Company
Freshsales
Account
1:1Act-On Companies map to Freshsales Accounts. Company name maps to Account Name, domain to Website, and address fields to the Billing Address composite. We import Accounts before Contacts so that the Contact-to-Account Lookup relationship is satisfied at insert time. Company tags from Act-On migrate as Freshsales Account tags.
Act-On
Deal
Freshsales
Deal
1:1Act-On Deals map to Freshsales Deals with a 1:1 correspondence. Deal name, amount, stage, close date, and owner transfer directly. The Act-On pipeline assignment maps to the Freshsales Deal pipeline and stage values. Closed-Lost and Closed-Won reasons from Act-On custom fields become Freshsales Loss Reason and Won Reason fields.
Act-On
Program (Automated Workflow)
Freshsales
Reference Blueprint (no automation transfer)
1:1Act-On Program builder defines multi-step nurture sequences stored server-side and not accessible via API. We do not migrate Programs as automation logic. We extract the sequence of steps, contact membership, branch conditions, and timing as a written reference blueprint that the customer uses to rebuild in Freshsales Workflows. This document is part of the standard migration deliverable.
Act-On
Engagement (Email, Call, Meeting, Task, Note)
Freshsales
Activity (Call, Email, Meeting, Task, Note)
1:1Act-On engagement history maps to Freshsales Activity records. Email engagements become Freshsales Email records; call engagements become Task records with a Call disposition; meetings become Event records; notes become Note records. All activities link to the parent Contact or Deal via the Who ID and Deal ID fields. We chunk large activity sets by date range and apply backoff logic for API throttling.
Act-On
List
Freshsales
Tag and Segment
1:1Act-On Lists are audience segments used for campaign targeting. We migrate List membership as Freshsales Tags on the Contact or Lead record. Static List membership transfers as a tag array; dynamic List logic does not transfer because it is a server-side definition. Customers recreate dynamic segments in Freshsales using the Filter builder or workflow conditions.
Act-On
Form
Freshsales
Form (reference only)
1:1Act-On web form definitions and submission records migrate. The form embed code does not transfer and must be re-implemented in Freshsales Web Forms or a third-party form tool. Form field definitions migrate as a reference document so that the customer can recreate fields in Freshsales with matching schema. Form submission data migrates as Contact or Lead records with a Form Source custom field.
Act-On
Custom Data Schema
Freshsales
Custom Field or Custom Object
1:1Act-On Custom Data schemas define user-extended fields on Contacts and Companies. We read the schema definition via Act-On's Custom Objects API, export the existing records, and translate the schema to Freshsales custom fields on Contact/Lead/Account/Deal or as Freshsales Custom Objects depending on the relationship structure. All custom field types are mapped to their nearest Freshsales equivalent before import.
Act-On
Engagement Score
Freshsales
Custom Field (hs_engagement_score__c)
lossyAct-On engagement score is a numeric property per Contact calculated using proprietary weighting. This score migrates as a static integer value in a custom field. The scoring formula itself does not export. We flag for the customer that Freddy AI scoring should be configured post-migration, optionally using the historical Act-On score as a calibration baseline.
Act-On
Tag
Freshsales
Tag
1:1Contact and company tags from Act-On export cleanly as label arrays. We map them to Freshsales Tags on the equivalent record type. Tags used for classification purposes carry over without transformation; tags used for campaign targeting are reviewed against the List migration to avoid duplication.
| Act-On | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead and Contact (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Program (Automated Workflow) | Reference Blueprint (no automation transfer)1:1 | Fully supported | |
| Engagement (Email, Call, Meeting, Task, Note) | Activity (Call, Email, Meeting, Task, Note)1:1 | Fully supported | |
| List | Tag and Segment1:1 | Fully supported | |
| Form | Form (reference only)1:1 | Fully supported | |
| Custom Data Schema | Custom Field or Custom Object1:1 | Fully supported | |
| Engagement Score | Custom Field (hs_engagement_score__c)lossy | Fully supported | |
| Tag | Tag1: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.
Act-On gotchas
ACT! desktop CRM and Act-On marketing automation are different products
Automated Program logic does not export
Engagement score formulas are not transferable
Bulk API 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 scoping
We audit the Act-On account across records (Contacts, Companies, Deals, Lists, Program memberships, Forms, Custom Data schemas, and engagement history volume). We confirm the product variant and subdomain during discovery to rule out an ACT! desktop or cloud CRM confusion. We document the existing Act-On lifecycle stages, Program list, and engagement score distribution. We pair this with a Freshsales edition review (Growth at $9/user covers most migrations; Pro at $39/user adds workflow automation and territory management; Enterprise at $59/user adds AI forecasting and advanced customisation) and deliver a written migration scope document.
Schema design and picklist mapping
We design the Freshsales destination schema. This includes creating any missing custom fields for Act-On properties that have no native Freshsales equivalent (such as the original lifecycle stage, source data, and engagement score), configuring the Deal pipeline and stage values to match the Act-On pipeline structure, and creating the Contact-to-Account Lookup relationships. We also define the Lead-versus-Contact split rule and the Activity-to-Contact/Deal linkage map. Schema is validated in a Freshsales Sandbox before production migration begins.
Data extraction and transformation
We extract all Act-On data via the REST API using Bearer JWT authentication. Records are pulled in dependency order: Companies first (because Contacts reference them), then Contacts with the lifecycle-stage split applied, then Deals, then Lists, then engagement history. Custom Data schema records are extracted with their field definitions so that the destination schema can be built before data insert. We flag any records with hard deletes in Act-On and remove them from the migration set before transformation. The transformation layer applies the picklist normalisation, email formatting, and the Contact-to-Lead/Contact routing decision.
Sandbox migration and reconciliation
We run a full migration into a Freshsales Sandbox using the extracted production data. The customer's RevOps lead validates record counts (Accounts in, Leads in, Contacts in, Deals in, Activities in), spot-checks 20-30 records field-by-field against Act-On, and reviews the Deal pipeline and stage mapping. Any mapping corrections are made at this stage. The sandbox migration must be signed off before we proceed to production. We also use this phase to confirm that Freshsales field-level security and validation rules do not block the import, and temporarily adjust them if they do.
Owner reconciliation and User provisioning
We extract every distinct Act-On Owner referenced on Contact, Company, and Deal records and match by email against the Freshsales destination User table. Any Owner without a matching Freshsales User goes to a reconciliation queue for the customer's admin to provision. Owner mapping must be complete before record import because OwnerId is a required reference on Deals and a recommended field on Contacts. Migration cannot proceed past this step without resolved owner mappings.
Production migration and cutover
We run production migration in dependency order: Accounts (from Companies), Leads, Contacts, Deals, Activity history (emails, calls, meetings, tasks via chunked API), Custom Data records, and Tags. Each phase emits a row-count reconciliation report before the next phase begins. We freeze Act-On write access during the cutover window, run a final delta migration for any records modified during the window, then enable Freshsales as the system of record. The Act-On account is placed in read-only maintenance mode post-migration.
Program blueprint delivery and post-migration support
We deliver the Program reference blueprint documenting every Act-On Program's trigger, steps, conditions, and contact membership. This is the handoff artifact for rebuilding in Freshsales Workflows. We deliver the engagement score calibration note recommending how to use the migrated historical score with Freddy AI. We provide a one-week hypercare window to resolve any record-level reconciliation issues raised by the team. We do not rebuild Programs as Freshsales Workflows or configure Freddy AI as standard scope; those are separate engagements.
Platform deep dives
Act-On
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 Act-On 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
Act-On: Not publicly documented.
Data volume sensitivity
Act-On 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 Act-On to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Act-On 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 Act-On
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.