CRM migration
Field-level mapping, validation, and rollback between Iterable and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
Iterable
Source
Nutshell
Destination
Compatibility
8 of 12
objects map 1:1 between Iterable and Nutshell.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Migrating from Iterable to Nutshell is a platform-type transition: Iterable organizes data around user profiles, campaigns, and journeys for cross-channel marketing; Nutshell organizes data around Leads, Contacts, Accounts, and Deals for sales pipeline management. There is no direct equivalent for Iterable Journeys, Campaigns, or Templates in Nutshell, and we do not migrate them as code. We deliver a written inventory of these marketing automation objects so the customer's admin can rebuild them. We map Iterable user profiles to Nutshell Contacts and Accounts, preserve engagement history (calls, emails, meetings, tasks) via Nutshell's JSON-RPC API with rate-limit-aware chunking, and flag behavioral event data that cannot be represented in a standard CRM field structure. Nutshell's JSON-RPC API rate-limits find requests and get requests but allows unlimited write operations, which shapes our import strategy: we write in large batches and query with pagination and stub responses to avoid throttling.
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 Nutshell, 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
Nutshell
Contact + Account
1:manyIterable User profiles (email, userId, dataId, and all custom fields) map to Nutshell Contact records, with the email address serving as the primary dedupe key. If the Iterable profile contains an account-level field (company name or domain), we also create a Nutshell Account record and link the Contact to it via the AccountId reference. We preserve all Iterable custom profile fields as Nutshell custom fields on Contact, flagging any field that contains behavioral or event-derived data (rather than factual contact attributes) for conversion to a notes field or a separate custom object.
Iterable
List Membership
Nutshell
Contact Tag or Custom Field
lossyIterable Lists are audience segments used for campaign targeting. We export list names and user membership and convert these to Nutshell Contact tags or a multi-select custom field on Contact, depending on whether the customer prefers a tagging model or a field-based model. List counts per user migrate as separate tag entries; list names with segment logic do not transfer as segments because Nutshell has no native segmentation engine equivalent to Iterable Lists.
Iterable
Subscription Status
Nutshell
Contact Custom Fields (per channel)
1:1Iterable tracks channel-level opt-in/opt-out status per user across email, SMS, and push. We map these to Nutshell Contact custom fields: email_opt_in (boolean), sms_opt_in (boolean), and push_opt_in (boolean). Subscription event history (the log of status changes) migrates as a multi-line text custom field or a linked notes record because Nutshell does not have a native subscription event log object. We preserve the last status change timestamp per channel.
Iterable
Custom Event
Nutshell
Note or Custom Object
lossyIterable custom events track behavioral data (purchase, registration, feature use, cart abandonment) with arbitrary metadata payloads. Nutshell has no native behavioral event model. We assess the customer's use of custom event data: if events are used for lead scoring or segmentation in Iterable Journeys, we document the event schema and recommended Nutshell custom field equivalents. If events are used for historical record keeping, we migrate them as Nutshell Notes attached to the Contact with the event name, timestamp, and key metadata fields in the note body. High-volume event streams (tens of thousands per user) may require a data dictionary rather than individual note records.
Iterable
Purchase Event
Nutshell
Contact Custom Fields or Opportunity Line Item
lossyIterable purchase events record transaction data (orderId, total, items, associated user). We map purchase data to Nutshell Contact custom fields for summary data (lifetime_value__c, last_purchase_date__c, order_count__c) and optionally to Opportunity Line Items on a Deal if the customer uses Nutshell Deals to track customer accounts. Purchase event history beyond summary fields migrates as Notes because Nutshell does not have a native purchase history object.
Iterable
Campaign
Nutshell
Not migrated
1:1Iterable Campaigns are sendable units with a channel type, template, and sending configuration. Nutshell has no campaign object. We export campaign metadata (name, channel, status, schedule, associated lists) to a written campaign inventory document that the customer's admin uses to plan rebuilds in Iterable (if retained) or in an alternative marketing automation tool. Template content migrates as HTML files saved to the customer's document store for reference.
Iterable
Journey
Nutshell
Not migrated
1:1Iterable Journeys are multi-step, multi-channel automation paths with trigger conditions, branching logic, and associated message actions. Nutshell has no workflow automation engine for cross-channel journeys. We export Journey definitions (trigger type, tiles, branching conditions, wait durations, associated templates and catalogs) to a written Journey inventory document that describes the logic in plain language so the customer's admin can rebuild in their chosen marketing automation tool. Journey re-trigger behavior is documented separately because it affects post-migration contact re-enrollment logic.
Iterable
Template
Nutshell
Not migrated (as files)
1:1Iterable Templates define message content with HTML, plain text, and Handlebars personalization syntax. Nutshell does not have a template management system. We export template content as HTML files with Handlebars syntax preserved, saved to a shared document location for the customer's marketing team to import into their chosen marketing automation tool. Template metadata (name, channel type, associated campaigns) migrates as a template inventory spreadsheet.
Iterable
Catalog Item
Nutshell
Not migrated
1:1Iterable Catalog is a product data store for dynamic content insertion in messages (product recommendations, pricing, inventory). Nutshell has no catalog or product content management system. We export catalog schemas and item records to a product inventory spreadsheet (CSV) that the customer's admin can import into a product information management system or map to Nutshell Products (standard object) if the customer uses Nutshell Deals for product line tracking.
Iterable
Engagement: Email
Nutshell
Note or Task
1:1Iterable email engagement records (sent, opened, clicked, bounced) migrate to Nutshell Notes attached to the Contact with email event type and timestamp in the note body. The email subject and body content migrate if the content is available in the engagement record payload. Nutshell does not have a native email engagement tracking object equivalent to Iterables event stream; Notes serve as the best-available historical record.
Iterable
Engagement: Call
Nutshell
Task (with note)
1:1Iterable call engagement records (disposition, duration, recording URL) migrate to Nutshell Tasks linked to the Contact, with the call outcome and duration stored in the Task description field and the recording URL stored as a custom field or note attachment. Nutshell Tasks do not have a dedicated call subtype field, so call metadata is stored in the Task description rather than a typed field.
Iterable
Engagement: Meeting
Nutshell
Task (with note)
1:1Iterable meeting engagement records (attendees, location, start time, end time) migrate to Nutshell Tasks linked to the Contact, with meeting details stored in the Task description field. Nutshell does not have a native calendar integration for meeting tracking; the Task description carries the meeting context.
| Iterable | Nutshell | Compatibility | |
|---|---|---|---|
| User Profile | Contact + Account1:many | Fully supported | |
| List Membership | Contact Tag or Custom Fieldlossy | Fully supported | |
| Subscription Status | Contact Custom Fields (per channel)1:1 | Fully supported | |
| Custom Event | Note or Custom Objectlossy | Fully supported | |
| Purchase Event | Contact Custom Fields or Opportunity Line Itemlossy | Fully supported | |
| Campaign | Not migrated1:1 | Fully supported | |
| Journey | Not migrated1:1 | Fully supported | |
| Template | Not migrated (as files)1:1 | Fully supported | |
| Catalog Item | Not migrated1:1 | Fully supported | |
| Engagement: Email | Note or Task1:1 | Fully supported | |
| Engagement: Call | Task (with note)1:1 | Fully supported | |
| Engagement: Meeting | Task (with note)1: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.
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
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Discovery and data audit
We audit the Iterable project across USDC versus EDC data center, total user profile count, custom field inventory (active and deprecated), list count and membership totals, custom event types and volumes, engagement history volume per type, and campaign and Journey inventory. We pair this with a Nutshell account review to confirm the destination plan tier and available custom field capacity. The discovery output is a written migration scope document with record counts per object, a field mapping spreadsheet, and a list of objects we cannot migrate (Journeys, Campaigns, Templates, Catalog) with a handoff inventory template.
Schema design in Nutshell
We design the destination schema in Nutshell before any data moves. This includes provisioning custom fields on Contact for profile attributes, subscription status per channel, purchase summary data, and engagement metadata. We define the tagging model for Iterable List membership if the customer prefers a tag-based approach. We configure Account creation logic: for each Iterable user profile with a company_name or domain field, we create a corresponding Nutshell Account and link the Contact. For profiles without company context, the Contact stands alone. Schema is validated in Nutshell staging before migration begins.
Iterables data export with API pagination
We export Iterable data using the correct data center base URL with pagination over user profiles, custom events, purchase events, subscription status records, list memberships, and engagement history. We use exponential backoff on API rate limit responses and chunk large exports into manageable batches. We audit deprecated fields and exclude them from the active field export unless they carry live data. We extract campaign and Journey definitions as JSON metadata for the handoff inventory document.
Transformation and field mapping
We transform the exported Iterable data against the target Nutshell schema. User profiles split into Contact records (with Account linkage where applicable). Custom events with low volume become Notes; high-volume event types become a data dictionary CSV. Subscription status maps to channel-specific custom fields on Contact. Engagement history (email, call, meeting) becomes Nutshell Tasks or Notes with type, timestamp, and metadata. Purchase data becomes Contact summary fields and optionally Opportunity Line Items. We flag any field that cannot map cleanly and escalate for customer decision before writing begins.
Nutshell import with JSON-RPC batch writes
We import into Nutshell via the JSON-RPC API using batch write operations (which are not rate-limited). We write Contacts first with Account resolution where applicable, then Tasks and Notes for engagement history. We use stub responses for any lookup queries to avoid the find-request rate limit. We emit a row-count reconciliation report after each phase showing records written, records skipped, and error codes for any failed inserts. Owner reconciliation resolves Iterable owner email references to Nutshell users where a match exists.
Cutover, validation, and automation handoff
We freeze Iterable writes during cutover, run a delta migration of any records modified during the migration window, then mark Nutshell as the system of record. We deliver the Campaign, Journey, Template, and Catalog inventory documents to the customer's admin team for rebuild in their chosen marketing automation tool. We support a one-week reconciliation window where we resolve any record mismatches raised by the customer's team. We do not rebuild Iterable Journeys or Campaigns as Nutshell workflows because Nutshell does not have a cross-channel automation engine; this work falls outside standard migration scope.
Platform deep dives
Iterable
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Iterable and Nutshell.
Object compatibility
1 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
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 Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your Iterable to Nutshell 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 Nutshell
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.