CRM migration
Field-level mapping, validation, and rollback between Agillic and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Agillic
Source
Freshsales
Destination
Compatibility
5 of 8
objects map 1:1 between Agillic and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Agillic and Freshsales serve different functions: Agillic is a Nordic omnichannel marketing automation platform built around a fully customisable Recipient data model with real-time audience activation across email, SMS, push, print, and paid media; Freshsales is a Sales CRM from the Freshworks suite, purpose-built for SMB sales teams with built-in phone, email, Freddy AI lead scoring, and deal pipeline management. The migration is not a like-for-like platform swap — it is a repositioning from a marketing-centric data model to a sales-cycle data model. We export Agillic Recipients and their Activity logs, enumerate every active custom recipient property during discovery (Agillic permits arbitrary schema with no fixed field list), and map each into Freshsales Contact custom fields. Agillic Flows (campaign automation) do not migrate as code; they require reimplementation in Freshsales Workflows. Global Data Tables from Agillic map to Freshsales custom objects if the destination plan supports them. We do not migrate Templates, Content Blocks, or paid media audience definitions as portable assets.
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 Agillic 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.
Agillic
Recipient
Freshsales
Contact
1:1Agillic Recipients map to Freshsales Contacts as the primary person record. Every standard field (email, first name, last name, phone, address) migrates directly. Custom recipient properties enumerate during discovery and map to Freshsales Contact custom fields, which we create before ingestion. Email address serves as the dedupe key during import.
Agillic
Recipient
Freshsales
Lead
1:manyRecipients that represent unqualified prospects (those flagged as marketing-acquired or without a closed deal in Agillic) map to Freshsales Lead. We define the split rule during scoping based on the customer's acquisition source fields and lifecycle flags. The original Agillic recipient properties preserve as custom fields on both Contact and Lead for audit.
Agillic
Activity Log
Freshsales
Task
1:1Agillic Activity records (email sends, opens, clicks, bounces, SMS deliveries) map to Freshsales Task records. Each Activity type becomes a Task with TaskSubtype set to Email or Call as appropriate, and the original Agillic Activity timestamp preserved as ActivityDate. We migrate Activity history via the Freshworks Bulk API to handle large volumes without timing out.
Agillic
Activity Log (Meeting/Event)
Freshsales
Event
1:1Agillic event-triggered Activity records with a timestamp map to Freshsales Event. StartDateTime and EndDateTime are set from the Agillic event timestamp. Attendees link to the corresponding Contact or Lead via EventRelation records.
Agillic
Flow
Freshsales
Workflow
lossyAgillic Flows (campaign automation logic) do not export as portable definitions. We export Flow names, associated trigger events, and Flow Execution IDs from Activity history, then deliver a written inventory of every active Flow with its trigger, conditions, and a recommended Freshsales Workflow equivalent. The customer's admin rebuilds the automation logic in Freshsales Workflows post-migration.
Agillic
Global Data Table
Freshsales
Custom Object
1:1Agillic Global Data Tables are custom relational data structures referenced within Flows. Each table's schema and all row data migrate to a Freshsales Custom Object (available on Growth plan and above). We create the custom object schema, including all fields and lookup relationships, before ingesting row data. The customer's admin configures any Freshsales Workflow triggers against the custom object post-migration.
Agillic
Profile
Freshsales
Contact
1:1Agillic Profiles aggregate all known data about a recipient across touchpoints. We treat Profile data as equivalent to the Recipient record enriched with Activity attributes and custom data. The enriched attributes land as custom fields on the Freshsales Contact.
Agillic
Export Settings
Freshsales
Freshsales Import Configuration
lossyAgillic Export Settings control file format (delimiter, date format, timestamp format). We document the client's current export format configuration and match it to Freshsales CSV import requirements during ingestion. Date format alignment is the most common adjustment point.
| Agillic | Freshsales | Compatibility | |
|---|---|---|---|
| Recipient | Contact1:1 | Fully supported | |
| Recipient | Lead1:many | Fully supported | |
| Activity Log | Task1:1 | Fully supported | |
| Activity Log (Meeting/Event) | Event1:1 | Fully supported | |
| Flow | Workflowlossy | Fully supported | |
| Global Data Table | Custom Object1:1 | Fully supported | |
| Profile | Contact1:1 | Fully supported | |
| Export Settings | Freshsales Import Configurationlossy | Mapping required |
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.
Agillic gotchas
Undocumented API rate limits complicate bulk migration planning
Fully custom schema requires mandatory field enumeration during discovery
Flows are not exportable as portable workflow definitions
Activity Export requires explicit Flow Execution ID enablement
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 recipient schema enumeration
We audit the Agillic instance: enumerate all active recipient properties via Recipient API and Recipients Export, confirm which custom fields are in use versus deprecated, extract Activity history spanning the customer's full data-retention window, list all active Flows with their triggers and conditions, and inventory Global Data Tables with schemas and row counts. We confirm whether Flow Execution ID is enabled in Export Settings. The discovery output is a complete recipient field catalogue, Activity export specification, and Global Data Table schema inventory.
Freshsales plan and custom field schema design
We confirm the destination Freshsales plan (Free/Growth/Pro/Enterprise) and design the Freshsales custom field schema to match the Agillic recipient field catalogue. Custom recipient properties map to Freshsales Contact custom fields of the equivalent type (text, number, date, checkbox, picklist). If Global Data Tables exist and the plan supports custom objects, we design the custom object schema with lookup relationships to Contact. Schema deploys into a Freshsales trial or sandbox for validation before production migration.
Custom field creation and Freshsales trial validation
We create all custom fields on the Contact object (and custom objects for Global Data Tables) in Freshsales. We run a sample migration of 50-100 Agillic Recipients into Freshsales Contacts to validate field type mappings, dedupe key behaviour, and custom field rendering. The customer spot-checks the sample data against the Agillic source before we proceed to full migration.
Full recipient and contact migration
We migrate all Agillic Recipients to Freshsales Contacts in dependency order. Accounts (derived from recipient company or domain fields) import first if the customer uses company-level segmentation. Contacts import second with the dedupe key (email) enforced to prevent duplicates. Any recipient-to-Lead split rule runs as the split transform at import time, creating Lead records for unqualified prospects. Custom fields populate from the Agillic custom recipient properties per the discovery enumeration.
Activity history migration via Bulk API
We migrate Agillic Activity history to Freshsales Tasks and Events via the Freshworks Bulk API. Each Activity record resolves its parent Contact by email match, creates the Task or Event with the original timestamp, and preserves the activity type and Flow Execution ID in custom fields. Large-volume Activity exports use batch chunking with exponential backoff to handle Freshworks API rate limits.
Cutover, validation, and Flow rebuild handoff
We freeze Agillic writes 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 the Flow inventory document listing every Agillic Flow with its trigger, conditions, and recommended Freshsales Workflow equivalent. We do not rebuild Agillic Flows as Freshsales Workflows inside the migration scope; that is a separate engagement for the customer's admin or a Freshsales partner.
Platform deep dives
Agillic
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 Agillic 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
Agillic: Not publicly documented — limited per production instance per day.
Data volume sensitivity
Agillic 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 Agillic to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Agillic 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 Agillic
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.