CRM migration
Field-level mapping, validation, and rollback between Agillic and Zoho CRM. We move data and schema; workflows are rebuilt natively in Zoho CRM.
Agillic
Source
Zoho CRM
Destination
Compatibility
9 of 14
objects map 1:1 between Agillic and Zoho CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Agillic to Zoho CRM is a migration from a flexible Nordic marketing automation platform with a fully customisable recipient schema into a structured CRM with fixed module definitions. Agillic stores every contact as a Recipient record with client-defined custom properties and logs all engagement events (sends, opens, clicks, SMS) as Activity records tied to a Flow Execution ID. Zoho CRM uses a Lead/Contact split model with Accounts, Opportunities, and Tasks as standard objects, plus Custom Modules for non-standard entities. The core migration challenge is enumerating every active custom recipient property in Agillic before writing a single field map, because there is no fixed Agillic field schema. We export Recipients via the REST API and Recipients Export feature, reconcile the schema against the client's active fields, then map each to Zoho standard or custom fields. Activity history migrates as Zoho Tasks with custom fields holding the channel, Flow Execution ID, and engagement attributes. Flows, Templates, and Global Data Table configurations do not migrate as portable logic; we deliver a written inventory of every active Flow and data table for manual rebuild in Zoho.
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 Zoho CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Agillic
Recipient
Zoho CRM
Lead or Contact
1:manyAgillic Recipients are the primary person record and may represent both prospects and customers depending on the client's segmentation. We split Recipients into Zoho CRM Lead (for unqualified or marketing-stage records identified by communication-preference flags) and Contact (for records that have entered a sales process). The split rule is defined during discovery against the client's recipient lifecycle stages. We preserve the original Recipient ID and any lifecycle stage identifier in custom fields agillic_recipient_id__c and agillic_lifecycle_stage__c for audit traceability.
Agillic
Recipient Export
Zoho CRM
Lead or Contact
1:1The Recipients Export file generated from Agillic (a full snapshot of all recipient records and current field values) serves as the authoritative baseline for the migration. We cross-reference it against the REST API export to identify records with missing or null values that need reconciliation before Zoho import.
Agillic
Recipient (standard fields)
Zoho CRM
Lead
1:1Standard recipient fields that map to Zoho Lead include: First Name, Last Name, Email, Phone, Mobile, Title, Company, Address, City, State, Country, Postal Code, and Source. These map directly to the corresponding Zoho Lead standard fields. The agillic_recipient_id__c custom field holds the original Agillic Recipient ID for record matching and reconciliation.
Agillic
Recipient (standard fields)
Zoho CRM
Contact + Account
1:manyAgillic Recipients with a company association map to a Zoho Contact linked to an Account. We extract the company name from the Recipient's organisation property, create or match the Zoho Account by name, then insert the Contact with AccountId resolved. This ensures the Account-Contact hierarchy required by Zoho CRM is satisfied at insert time.
Agillic
Recipient (custom properties)
Zoho CRM
Lead / Contact custom fields
lossyEvery Agillic custom recipient property enumerated during discovery is created as a Zoho CRM custom field on either Lead or Contact before migration begins. Field types are mapped: string properties become Single Line fields; multi-value properties become Multi-Select; date/datetime properties become Date or DateTime fields; boolean properties become Checkbox fields. The full list of custom fields and their Zoho field IDs is documented in the field mapping appendix delivered before production migration.
Agillic
Global Data Tables
Zoho CRM
Custom Modules
lossyAgillic Global Data Tables are custom relational structures referenced within Flows. We export table schemas (column names, data types, relationships) and all row data. In Zoho CRM we create Custom Modules with matching field definitions, then populate the rows. Custom Modules in Zoho support lookup relationships to standard modules (Accounts, Contacts, Deals) so the table-recipient relationship is preserved.
Agillic
Activity Logs (Email)
Zoho CRM
Task (TaskSubtype: Email)
1:1Agillic email Activity records (send, open, click, bounce, delivery confirm) migrate to Zoho CRM Tasks with TaskSubtype = Email. The activity type (sends, opens, clicks) is stored in a custom field activity_type__c. Email subject and body content migrate to the Task Subject and Description fields respectively. The Flow Execution ID is stored in a custom field flow_execution_id__c for campaign attribution.
Agillic
Activity Logs (SMS)
Zoho CRM
Task (TaskSubtype: Other) + custom fields
1:1Agillic SMS Activity records (send, delivery, reply, opt-out) migrate to Zoho Task records with a custom field sms_status__c holding the delivery state and sms_content__c holding the message body. The recipient is linked via the WhoId pointing to the migrated Contact or Lead.
Agillic
Activity Logs (Event)
Zoho CRM
Task + custom fields
1:1Agillic event-triggered Activity records (behavioural triggers, webhook events, point-of-sale events) have no direct Zoho equivalent. We migrate these as Zoho Tasks with a custom field event_type__c holding the Agillic event name and event_payload__c holding a JSON representation of the event attributes. This preserves the event context for audit and journey reconstruction.
Agillic
Flow Execution History
Zoho CRM
Custom Module (Flow Execution Audit)
1:1Agillic Flow Execution IDs uniquely identify each campaign run and are appended to Activity Exports when the Flow Execution ID setting is enabled. We create a Zoho Custom Module called Flow Execution Audit with fields: Flow Name, Flow Execution ID, Trigger Event, Start Timestamp, End Timestamp, Recipient Count, and Status. Each Activity record in Zoho links back to this module via the flow_execution_id__c custom field.
Agillic
Profile (aggregated data)
Zoho CRM
Contact
1:1Agillic Profiles aggregate all known data about a recipient across touchpoints and are equivalent to the enriched Recipient record. We treat Profile data as the Recipient with enriched attributes from Activity and custom data tables, mapping to the Zoho Contact record with all aggregated properties stored as custom fields on the Contact.
Agillic
Audience Data (Google/Meta)
Zoho CRM
Custom Module (Audience Segments)
1:1Agillic audience segments exported to Google and Meta contain member lists and segment logic. We export the segment definitions (segment name, filter criteria, and member count) into a Zoho Custom Module called Audience Segments. Member-to-contact linkage is preserved via the recipient email address. The segment filter logic is documented in the handoff for manual rebuild in Google Audience Manager or Meta Business Manager.
Agillic
Owner
Zoho CRM
User
1:1Agillic Recipients store an owner reference. We resolve Agillic owner email addresses against Zoho CRM Users. Owners without a matching Zoho User are held in a reconciliation queue for the customer's admin to provision before record import resumes. Active status of the Zoho User determines whether the OwnerId is set to an active or inactive Zoho User.
Agillic
Export Settings
Zoho CRM
Zoho Import Configuration
lossyAgillic export format settings (delimiter type, date format, timestamp timezone, file extension) are documented from the client's Settings > System Settings > Export configuration. These inform the CSV format we produce for Zoho's native import wizard or API ingestion, ensuring field delimiters and date formats match Zoho's expected import format.
| Agillic | Zoho CRM | Compatibility | |
|---|---|---|---|
| Recipient | Lead or Contact1:many | Fully supported | |
| Recipient Export | Lead or Contact1:1 | Fully supported | |
| Recipient (standard fields) | Lead1:1 | Fully supported | |
| Recipient (standard fields) | Contact + Account1:many | Fully supported | |
| Recipient (custom properties) | Lead / Contact custom fieldslossy | Fully supported | |
| Global Data Tables | Custom Moduleslossy | Mapping required | |
| Activity Logs (Email) | Task (TaskSubtype: Email)1:1 | Fully supported | |
| Activity Logs (SMS) | Task (TaskSubtype: Other) + custom fields1:1 | Fully supported | |
| Activity Logs (Event) | Task + custom fields1:1 | Fully supported | |
| Flow Execution History | Custom Module (Flow Execution Audit)1:1 | Fully supported | |
| Profile (aggregated data) | Contact1:1 | Fully supported | |
| Audience Data (Google/Meta) | Custom Module (Audience Segments)1:1 | Mapping required | |
| Owner | User1:1 | Fully supported | |
| Export Settings | Zoho 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
Zoho CRM gotchas
API access requires Professional tier or above
Subform fields do not export cleanly via CSV
API credit consumption is non-linear
Export download links expire in 7 days
Owner (User) assignments require pre-mapped user IDs
Pair-specific challenges
Migration approach
Discovery and Agillic schema enumeration
We audit the source Agillic instance: enumerate every active recipient property via a full Recipients Export, extract Activity data for the full history window, list all Global Data Tables with column definitions, and document every active Flow with its trigger and action summary. We check the Flow Execution ID export setting and request the client enables it before Activity extraction if it is off. We also extract Owner records and map them to placeholder Zoho User entries. The discovery output is a complete Agillic field inventory and a draft field mapping document for client review.
Zoho schema provisioning and custom field creation
We provision the Zoho CRM destination schema before any data moves. This includes creating all required Custom Modules (Flow Execution Audit, Audience Segments, and any module equivalents for Global Data Tables), creating all custom fields on Lead and Contact with the correct field types and picklist values, configuring Record Types if multiple pipeline types are required, and setting up the lookup relationships from custom modules to standard Lead, Contact, and Account modules. Schema is deployed into the destination Zoho org via the Zoho CRM API or manually confirmed by the customer's Zoho admin. Custom field API names are captured for the field mapping appendix.
Owner reconciliation and User provisioning
We extract every distinct Agillic Owner referenced on Recipient records and match by email against the Zoho CRM User table. Any Agillic Owner without a matching Zoho User is added to a reconciliation queue. The customer's Zoho admin provisions the missing Users (active or inactive based on whether the original Agillic owner is still active). Migration cannot proceed past this step because OwnerId references on Lead, Contact, and custom module records must be satisfied at insert time.
Data cleansing and CSV preparation
We clean the Agillic export data before Zoho import: we normalise phone number formatting, resolve country and state picklist values against Zoho's allowed picklists, handle duplicate detection using email as the dedupe key, and flag records with missing required fields (Last Name, Email) for client resolution before import. The split between Lead and Contact is applied at this stage using the lifecycle stage rule defined during discovery. The cleansed CSV is validated against the Zoho import format (field delimiters, encoding, date format) matching the Export Settings documented from Agillic.
Production migration in dependency order
We run production migration in this order: Accounts (from Agillic Organisation), Contacts (with AccountId resolved), Leads (routed by lifecycle stage), Activity history as Tasks (with Flow Execution ID and channel type in custom fields), Flow Execution Audit records, Custom Module data (from Global Data Tables), Audience Segment definitions, and Recipient custom property values as field updates on the migrated Lead and Contact records. Each phase emits a row-count reconciliation report before the next phase begins. API throttling and backoff are applied throughout.
Cutover, validation, and Flow rebuild handoff
We freeze Agillic writes during cutover, run a final delta migration of records modified during the migration window, then enable Zoho CRM as the system of record. We deliver the Flow inventory document (every active Agillic Flow with its name, trigger type, conditions, actions, and recommended Zoho Workflow Rule equivalent) and the Global Data Table schema with Zoho Custom Module mapping to the customer's admin team. We support a one-week hypercare window for reconciliation issues. We do not rebuild Agillic Flows as Zoho Workflow Rules or Blueprints inside the migration scope — that is a separate engagement.
Platform deep dives
Agillic
Source
Strengths
Weaknesses
Zoho CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Agillic and Zoho CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Agillic and Zoho CRM.
Object compatibility
All 8 core objects map 1:1 between Agillic and Zoho CRM.
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 Zoho CRM migration scoping. Not seeing yours? Book a call.
Walk through your Agillic to Zoho CRM 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 Zoho CRM
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.