CRM migration
Field-level mapping, validation, and rollback between Iterable and Zoho CRM. We move data and schema; workflows are rebuilt natively in Zoho CRM.
Iterable
Source
Zoho CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Iterable and Zoho CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Iterable to Zoho CRM is a platform-type transition: Iterable organizes data around user profiles, campaigns, and multi-step journey automations for cross-channel marketing; Zoho CRM organizes data around Leads, Accounts, Contacts, and Deals for sales pipeline management. These are fundamentally different data models with no automatic equivalence. We migrate User Profiles to a Zoho Leads and Contacts split based on subscription status and behavioral recency, preserve Custom Event history as custom activity fields, and carry Subscription preferences into Zoho contact-level opt-in fields. We do not migrate Journeys or Campaigns as automation logic because Zoho Workflows and Iterable Journeys use incompatible trigger-and-action models. We deliver a written inventory of every active Journey, Campaign, and Template with recommended Zoho equivalents for the customer's admin to rebuild 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 Iterable 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.
Iterable
User Profile
Zoho CRM
Lead or Contact (split based on lifecycle stage)
1:manyIterable User Profiles with email, phone, and behavioral data map to Zoho Leads for prospects and Contacts for qualified buyers. We use Iterables subscription status, last engaged date, and custom lifecycle stage fields to determine the split: subscribed prospects with no purchase history go to Zoho Lead; users with purchase events or subscription-paid status go to Zoho Contact attached to an Account. The original Iterable dataId and email hash migrate to custom fields iter_data_id__c and iter_email_hash__c for reconciliation.
Iterable
Company
Zoho CRM
Account
1:1Iterable does not have a native Company object but Company data stored within User Profile fields (company name, domain, industry) extracts to Zoho Account records. The Account Name maps from the company field; domain extracts to the Website field. Account is created before any Contact or Lead import so that the Account-Contact lookup relationship is satisfied at insert time.
Iterable
Custom Event
Zoho CRM
Task (custom field payload)
lossyIterable Custom Events carry behavioral data (event name, timestamp, user identification, arbitrary metadata). Zoho CRM has no native equivalent for arbitrary event payloads. We transform each event name and its key metadata into Zoho Task records with custom fields capturing event_name__c, event_timestamp__c, and serialized JSON payload in event_data__c for reporting queries. The Task links to the corresponding Lead or Contact via WhoId. Events without a matching user go to a dead-letter queue.
Iterable
List
Zoho CRM
Zoho CRM List or Tag
lossyIterable Lists are audience segments used for campaign targeting. We map list memberships as Zoho CRM Tags on Lead and Contact records (using Zohos native tagging feature). List names preserve as tag values prefixed with iter_list_. For lists used as suppression audiences, we set HasOptedOutOfEmail = true on the corresponding Zoho records. If the customer uses lists as static audience groups rather than tags, we can create a custom module for list management during migration scoping.
Iterable
Campaign
Zoho CRM
Zoho Campaign
1:1Iterable Campaigns (email, SMS, push) with metadata (name, channel, status, schedule, template reference) map to Zoho CRM Campaigns. Campaign type from Iterable maps to Zoho Campaign Type; campaign ID preserves in custom field iter_campaign_id__c. Note that Zoho Campaigns track marketing campaign performance but do not execute sends natively. The customer's admin configures the send mechanism post-migration using Zoho Email Templates and mass email actions.
Iterable
Template
Zoho CRM
Email Template
1:1Iterable Templates (HTML email, plain text, dynamic personalization via Handlebars syntax) export as content files with metadata. We import the template content into Zoho CRM Email Templates, preserving HTML structure and Handlebars-style placeholders where the Zoho template syntax supports them. Where Handlebars syntax is incompatible, we document the personalization tokens for the admin to re-implement using Zohos merge field syntax.
Iterable
Catalog Item
Zoho CRM
Product
1:1Iterable Catalog items (product data for dynamic content insertion) map to Zoho CRM Products. The catalog schema fields map to Product fields: name, SKU (from catalog item id), price, description, and custom fields. Inventory quantities map to the Quantity field. We preserve catalog-to-Journey associations in a custom field iter_catalog_journey__c so the admin can relink after rebuilding Journeys in Zoho Workflows.
Iterable
Purchase
Zoho CRM
Potentials (Deals)
1:1Iterable Purchase events (orderId, total, items, associated user) map to Zoho CRM Potentials when the customer uses Zoho for sales pipeline tracking. The purchase total maps to Potential Amount; purchase date maps to Closing Date; orderId maps to a custom field iter_order_id__c. Line items from the purchase attach to the Potential via Products linkage. If the customer does not use Zoho Deals, purchases migrate as custom fields on the Contact record.
Iterable
Subscription
Zoho CRM
Contact preferences (custom fields)
lossyIterable subscription status tracks opt-in and opt-out per channel (email, SMS, push). We map each channel status to Zoho CRM Contact-level fields: Email Opt-out (HasOptedOutOfEmail), SMS Opt-out, and Push Opt-out as custom Boolean fields with iter_email_subscription__c, iter_sms_subscription__c, and iter_push_subscription__c storing the original Iterable values. Subscription event history migrates as Task records for audit trail.
Iterable
User Profile System Fields
Zoho CRM
Lead or Contact Standard Fields
1:1Iterables system fields (dataId, email, userId, createdAt, updatedAt, itery_user_id) map to Zoho standard fields: Email Address maps directly; dataId preserves in iter_data_id__c; createdAt maps to Created Time. Custom profile fields on Iterable map to Zoho custom fields of matching type (string to text, number to big integer, date to date picker, boolean to checkbox). We validate type compatibility during schema design before field creation.
Iterable
Journey
Zoho CRM
Workflow (inventory only)
1:1Iterables Journey definitions (multi-step, multi-channel automation paths with branching logic and AI decisioning) have no direct Zoho CRM equivalent. We export Journey metadata including trigger conditions, branching paths, associated templates, and wait-action configurations. This becomes a written inventory document delivered to the customer for manual rebuild in Zoho Workflows and Blueprint. We do not execute Journey logic during migration.
Iterable
Data Sync Records
Zoho CRM
Not migrated (requires CSM coordination)
1:1Iterable Data Sync is a warehouse export feature gated behind Customer Success requiring IP allowlisting. If the customer has active Data Sync records, we export the most recent snapshot but note that Data Sync requires CSM coordination to access and cannot be automated as a standard migration step. We recommend the customer export full Data Sync history before initiating the migration window.
| Iterable | Zoho CRM | Compatibility | |
|---|---|---|---|
| User Profile | Lead or Contact (split based on lifecycle stage)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Custom Event | Task (custom field payload)lossy | Fully supported | |
| List | Zoho CRM List or Taglossy | Fully supported | |
| Campaign | Zoho Campaign1:1 | Fully supported | |
| Template | Email Template1:1 | Fully supported | |
| Catalog Item | Product1:1 | Fully supported | |
| Purchase | Potentials (Deals)1:1 | Fully supported | |
| Subscription | Contact preferences (custom fields)lossy | Fully supported | |
| User Profile System Fields | Lead or Contact Standard Fields1:1 | Fully supported | |
| Journey | Workflow (inventory only)1:1 | Fully supported | |
| Data Sync Records | Not migrated (requires CSM coordination)1:1 | 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.
Iterable gotchas
Iterable does not allow field deletion
Separate API endpoints for US and EU data centers
Soft limit of 8,000 unique fields per project
Enterprise pricing is opaque and contract-based
Usage metrics lag by one calendar day
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 scoping
We audit the Iterable project across API key scope (US or EU data center), User Profile field count and data types, active Custom Event names and metadata schemas, List memberships and segment sizes, Campaign and Journey counts, Template content volumes, Catalog item count, and Purchase and Subscription event history. We pair this with a Zoho CRM edition assessment to confirm custom field limits, module availability, and workflow constraints. The discovery output is a written migration scope with object mapping, a Zoho edition recommendation, and a list of Journey and Campaign items requiring manual rebuild.
Schema design in Zoho Sandbox
We deploy the destination schema into a Zoho CRM Sandbox using the Zoho API or manual configuration. This includes provisioning custom fields on Lead and Contact modules (matching Iterable field types), configuring Tags or custom picklist fields for List membership, designing the Campaign structure, creating Product records from Catalog items, and setting up any custom modules needed for behavioral event storage. We validate the schema before any data loads to avoid field type mismatches and edition-limit violations.
Sandbox migration and reconciliation
We run a full migration into the Zoho Sandbox using production-equivalent data volume. The customer's team spot-checks 25-50 records against the Iterable source (User Profile fields, Subscription status, event history, Campaign associations) and validates that the split between Lead and Contact is correct. The customer signs off on the mapping before production migration begins. Any corrections to field mapping, split rules, or custom field design happen at this stage.
Contact and account import in dependency order
We run production migration in record-dependency order. Accounts import first (from Iterable Company data in User Profiles). Leads and Contacts import second, with the lifecycle-stage split applied at transform time and AccountId resolved via lookup. Subscription preferences and behavioral fields attach at import. Each phase emits a row-count reconciliation report before the next phase begins. Iterables dataId and email hash preserve in custom fields for cross-system reconciliation.
Behavioral event and purchase migration
Custom Events migrate as Task records with event metadata in custom fields and a WhoId pointing to the migrated Lead or Contact. Purchase records migrate as Zoho Potentials (Deals) with line items attached and order IDs preserved. Catalog items migrate as Zoho Products with pricing and inventory data. Subscription event history migrates as additional Task records for audit trail. All parent-record lookups resolve before the batch commits.
Cutover, validation, and automation rebuild handoff
We freeze Iterable writes during cutover, run a final delta migration of records modified during the migration window, then mark Zoho CRM as the system of record. We deliver the Journey, Campaign, and Template inventory document to the customer's admin team with recommended Zoho Workflow equivalents. We support a one-week hypercare window for reconciliation issues. We do not rebuild Iterables Journeys as Zoho Workflows inside the migration scope; that work requires a separate engagement or internal admin effort.
Platform deep dives
Iterable
Source
Strengths
Weaknesses
Zoho CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Iterable and Zoho CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Iterable and Zoho CRM.
Object compatibility
All 8 core objects map 1:1 between Iterable 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
Iterable: Not publicly documented; returns RateLimitExceeded code on limit.
Data volume sensitivity
Iterable exposes a bulk API — large-volume migrations stream efficiently.
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 Iterable to Zoho CRM migration scoping. Not seeing yours? Book a call.
Walk through your Iterable 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 Iterable
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.