CRM migration

Migrate from Iterable to Nutshell

Field-level mapping, validation, and rollback between Iterable and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.

Iterable logo

Iterable

Source

Nutshell

Destination

Nutshell logo

Compatibility

67%

8 of 12

objects map 1:1 between Iterable and Nutshell.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Iterable logo

Iterable

What's pushing teams away

  • Steep learning curve with unclear documentation forces teams to rely heavily on support for tasks that should be self-service.
  • SMS deliverability issues with accounts blocked without clear accountability or transparent root-cause communication from Iterable.
  • Contract pricing increases when usage is reduced, creating a billing model that punishes customers who downscale usage.
  • Cluttered UI requiring multiple clicks through nested menus to access common functions, slowing down campaign creation and editing.
  • Inconsistent conversion tracking and reporting makes it difficult to reliably measure campaign performance and optimize spend.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Iterable objects map to Nutshell

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

maps to

Nutshell

Contact + Account

1:many
Fully supported

Iterable 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

maps to

Nutshell

Contact Tag or Custom Field

lossy
Fully supported

Iterable 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

maps to

Nutshell

Contact Custom Fields (per channel)

1:1
Fully supported

Iterable 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

maps to

Nutshell

Note or Custom Object

lossy
Fully supported

Iterable 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

maps to

Nutshell

Contact Custom Fields or Opportunity Line Item

lossy
Fully supported

Iterable 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

maps to

Nutshell

Not migrated

1:1
Fully supported

Iterable 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

maps to

Nutshell

Not migrated

1:1
Fully supported

Iterable 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

maps to

Nutshell

Not migrated (as files)

1:1
Fully supported

Iterable 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

maps to

Nutshell

Not migrated

1:1
Fully supported

Iterable 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

maps to

Nutshell

Note or Task

1:1
Fully supported

Iterable 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

maps to

Nutshell

Task (with note)

1:1
Fully supported

Iterable 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

maps to

Nutshell

Task (with note)

1:1
Fully supported

Iterable 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.

Gotchas + challenges

What specifically takes care here

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 logo

Iterable gotchas

Medium

Iterable does not allow field deletion

High

Separate API endpoints for US and EU data centers

Medium

Soft limit of 8,000 unique fields per project

High

Enterprise pricing is opaque and contract-based

Low

Usage metrics lag by one calendar day

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Iterables User model does not map to a Nutshell Contact model without schema redesign

    Iterable organizes all data around User profiles with unlimited custom fields, behavioral events, and subscription status per channel. Nutshell uses a traditional CRM model with Contacts (People) and Accounts (Companies) and deal pipeline tracking. Migrating Iterable user profiles into Nutshell requires deciding which custom fields carry over as Contact fields, which become Notes, and which behavioral event data is documented rather than individually imported. Custom event metadata that exceeds what can fit in a Note record may need to be summarized or exported as a data dictionary rather than individual records.

  • Nutshells JSON-RPC API rate-limits find and get requests

    Nutshells API documentation confirms that find requests with non-stub responses and excessive get requests are rate-limited. The degree of rate-limiting may change dependent on current conditions. We mitigate this by using stub responses for list queries, paginating large result sets, and batching writes without rate limiting. We confirm API key permissions during scoping to ensure the migration user has impersonation access if needed for owner reconciliation.

  • Iterables field deletion restriction means deprecated fields persist through migration

    Iterable does not allow field deletion once a custom field is created. During migration scoping, we audit the full field map including any fields marked deprecated in Iterables UI. These deprecated fields cannot be removed from Iterable before export, so we document them and flag which ones carry live data versus schema overhead. We do not create corresponding fields in Nutshell for deprecated Iterable fields that have no active data.

  • Iterables USDC and EDC data centers use separate API base URLs

    Iterable operates api.iterable.com for USDC projects and api.eu.iterable.com for EDC projects. API keys are scoped to a single data center and are not interchangeable. We confirm the customers data center during scoping and use the correct base URL for all extraction operations. Cross-region data mismatches caused by using the wrong data center URL result in authentication failures and empty export sets.

  • Iterables usage metrics lag by one calendar day

    Iterables Usage and Billing dashboard reflects data through yesterday, not the current day. For migrations requiring post-migration validation of contact counts and message volumes, we cannot confirm final numbers until 24 hours after cutover. We schedule validation reviews with this lag in mind and avoid drawing conclusions from same-day usage dashboards.

Migration approach

Six steps for a successful Iterable to Nutshell data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Iterable logo

Iterable

Source

Strengths

  • Cross-channel execution across email, SMS, push, and in-app from one unified platform interface.
  • Real-time AI decisioning using behavioral, contextual, and performance signals to optimize message delivery.
  • Enterprise-grade infrastructure with contracts supporting billions of messages and high deliverability standards.
  • Comprehensive API with documented endpoints for users, events, campaigns, and catalogs, plus an interactive API reference.
  • Helpful customer support with strong onboarding assistance cited across review sites.

Weaknesses

  • High total cost of ownership with opaque enterprise pricing starting at $20K+ annually.
  • Significant learning curve requiring extensive support and time investment to build competent workflows.
  • SMS deliverability reliability issues with account suspensions applied without clear explanation.
  • Cluttered UI requiring multiple navigation steps to complete common campaign management tasks.
  • Limited reporting consistency that complicates performance measurement and campaign optimization.
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Iterable and Nutshell.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Iterable: Not publicly documented; returns RateLimitExceeded code on limit.

  • Data volume sensitivity

    A

    Iterable exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Iterable to Nutshell migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Iterable to Nutshell data migrations

Answers to the questions buyers ask most during Iterable to Nutshell migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Iterable to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 10,000 Iterable user profiles with no custom objects and straightforward field mapping. Migrations with large engagement histories (over 200,000 custom event records), behavioral event data requiring transformation to notes, or Nutshell custom fields requiring schema pre-configuration move to five to eight weeks because of API pagination, event-history review, and engagement timeline reconstruction. Iterables usage metric lag (one-day) is factored into the validation timeline.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Iterable.
Land in Nutshell, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day