CRM migration

Migrate from Customer.io to Nutshell

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

Customer.io logo

Customer.io

Source

Nutshell

Destination

Nutshell logo

Compatibility

50%

5 of 10

objects map 1:1 between Customer.io and Nutshell.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Customer.io is an event-driven messaging platform built around Profiles, Traits, and Behavioral Events, while Nutshell is a sales CRM organized around Contacts, Companies, Leads, and Pipelines. These different architectural models mean the migration centers on transforming a userId-centric profile store into a Contact-Company relationship model. We extract all People records with their attributes and event history from Customer.io, map them into Nutshell Contacts, and link them to Accounts. Segments and behavioral attributes that drove campaign targeting in Customer.io become Nutshell Groups and custom fields. We flag Custom Objects for pre-creation in Nutshell before data import, and we deliver an inventory of all Campaigns and Journeys that require rebuild as Nutshell Pipelines and manual outreach sequences. Push notifications, transactional message templates, and broadcast logs have no direct Nutshell equivalent and are documented for post-migration handling.

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

Customer.io logo

Customer.io

What's pushing teams away

  • Pricing scales aggressively with profile count, and inactive users still count toward the monthly bill, creating surprises for large user bases.
  • Steep learning curve: workflows and segmentation require developer involvement, making the platform inaccessible for non-technical marketers.
  • No built-in CRM functionality forces teams to maintain a separate CRM and sync it via integration, adding operational overhead.
  • Support response times on the Essentials plan frustrate teams hitting complex setup issues that require expert guidance.
  • Implementation typically takes 4–8 weeks to reach full maturity, including IP warming, event mapping, and workflow replication.

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 Customer.io objects map to Nutshell

Each row shows how a Customer.io 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.

Customer.io

People (Profiles)

maps to

Nutshell

Contact

1:1
Fully supported

Customer.io People records map to Nutshell Contacts. The userId maps to Contact email as the primary lookup key; anonymousId records with no email are flagged for identity resolution before import. All trait key-value pairs migrate as custom fields or mapped standard fields (email, name, phone, address) where the field name matches a Nutshell standard field. Nested JSON trait values flatten into separate custom fields. Profile created_at and last_seen timestamps migrate as custom date fields for audit and recency analysis.

Customer.io

Custom Objects (Companies, Accounts)

maps to

Nutshell

Account

1:1
Fully supported

Customer.io Custom Objects with a company-like schema (name, domain, industry, employee_count) map to Nutshell Accounts. Each Custom Object type_id namespace becomes a distinct record set, and we pre-create the Nutshell custom field schema before import. If the Customer.io workspace has Companies linked to People via relationships, we resolve the link and attach the Contact to the Account during import. Custom Objects without a People relationship are imported as standalone Accounts.

Customer.io

Segments

maps to

Nutshell

Group

lossy
Mapping required

Customer.io Segments are dynamic audience definitions based on trait conditions and event triggers. Nutshell Groups are manually managed membership lists. We export each segment's criteria as a structured rule set and create a corresponding Nutshell Group with a documented membership criteria note. Full dynamic-segment behavior cannot be replicated in Nutshell; the Group is created with its current membership snapshot and maintained manually post-migration. If the customer uses segments as tags rather than dynamic lists, we map them to Nutshell Tags instead.

Customer.io

Custom Events

maps to

Nutshell

Activity (Note on Contact)

1:many
Fully supported

Customer.io event history (track calls) is event-driven and stored as a first-class object with name, properties, sentAt, and receivedAt timestamps. Nutshell has no native event store. We transform the event history into Nutshell Activity records (type Note) on the Contact, with the event name in the activity subject, event properties as plain-text body, and the original timestamp preserved. High-volume event histories are batched via the Nutshell API with rate-limit handling to avoid throttling during import.

Customer.io

Traits and Attributes

maps to

Nutshell

Custom Field

lossy
Fully supported

Trait key-value pairs on Customer.io People map to Nutshell custom fields. Standard Nutshell fields (name, email, phone, address) are used where schema alignment exists; non-standard traits create new custom fields in Nutshell before migration. Array and nested-object trait values are serialized as JSON strings in the corresponding custom field. We flag any traits that share a name with existing Nutshell standard fields to avoid collision during import.

Customer.io

Campaigns and Journeys

maps to

Nutshell

Pipeline + Template Inventory

1:1
Mapping required

Customer.io Campaigns and Journeys are automated workflows with triggers, branching conditions, and multi-channel message actions. These do not migrate as automation code because Nutshell Pipelines track deal stages, not campaign logic. We export the campaign structure (name, trigger type, steps, channels, and wait conditions) as a structured document and deliver it to the customer's admin. The admin rebuilds outreach sequences as Nutshell email templates and manual or semi-automated follow-up tasks. Broadcast sends are documented separately for manual re-execution.

Customer.io

Broadcasts

maps to

Nutshell

Template Inventory (documented)

1:1
Mapping required

Customer.io one-time broadcast sends are exported with target segment, content, and send timestamp. Nutshell does not support broadcast sending as a platform feature. We export the broadcast name, audience, content, and send timestamp as a written record so the customer can re-execute or adapt the send manually post-migration. If the broadcast targeted a Customer.io segment, we document the segment membership snapshot as a Nutshell Group for manual reference.

Customer.io

Deleted Profiles

maps to

Nutshell

Reconciliation Flag

lossy
Fully supported

Customer.io counts profiles deleted within the current billing cycle as billable. We flag any profiles deleted between the migration export date and the billing cycle close date so the customer can assess whether they need to act before month-end billing recalculates. We also flag active integrations that could re-import deleted profiles mid-migration, recommending the integration be suspended before the final export to prevent billing duplicates.

Customer.io

Custom Objects (generic type)

maps to

Nutshell

Custom Fields on Account or Contact

lossy
Fully supported

Customer.io Custom Object types beyond Companies that do not map to a standard Nutshell object (e.g., Products, Subscriptions, Projects) are handled as custom fields on the related Account or Contact record. We pre-create the Nutshell custom field schema before migration, defining the field type to match the source data (text, number, date, dropdown). Relationships between Custom Objects and People in Customer.io become cross-field references or linked Contact records in Nutshell.

Customer.io

Transactional Messages

maps to

Nutshell

Template Documentation (exported)

1:1
Mapping required

Customer.io transactional messages (password resets, order receipts, shipping notifications) are exported with their content, trigger conditions, and delivery logs. Nutshell has no transactional message capability. We deliver the transactional message content as a structured export file so the customer's engineering team can route these sends through a dedicated transactional email service (such as SendGrid, Postmark, or AWS SES) post-migration. Any unsubscribe or preference flags migrate to Contact email opt-out status.

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.

Customer.io logo

Customer.io gotchas

High

Deleted profiles still count toward billing for the remainder of the cycle

High

Push migration requires a new app version with the Customer.io SDK

Medium

Broadcast API rate limit constrains high-volume re-imports

Medium

Inactive user profiles inflate monthly billing with no campaign benefit

Low

Transactional message content may be redacted in stored logs

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

  • Push notification migration requires a new app SDK version

    Customer.io push notifications depend on its own mobile SDK being embedded in the app. Device tokens cannot be exported from Customer.io and reused in another provider, and Nutshell does not support push notifications natively. We flag push migration as a prerequisite that requires the customer's engineering team to integrate the new push provider's SDK into a new app version, which must then be adopted by a significant portion of the user base before push delivery resumes. We sequence the data migration to complete before push SDK integration is underway to avoid mid-flight re-imports.

  • Campaign and Journey automation has no Nutshell equivalent

    Customer.io Campaigns and Journeys are event-triggered, multi-step automation workflows with branching conditions and channel-specific message actions. Nutshell Pipelines track deal stage progression and have no campaign or journey automation capability. We do not migrate automation logic as code. We deliver a written inventory of every active Customer.io campaign and journey with its trigger, conditions, steps, and channel assignments. The customer's admin rebuilds outreach logic manually or through a sales engagement tool as a post-migration step.

  • SDK integration running during migration risks profile re-import

    If the Customer.io SDK remains active in the production app or website during the migration window, it will re-identify users and re-import profiles mid-flight, inflating the billable profile count and creating duplicate records. We coordinate a migration freeze window during which the Customer.io SDK integration is suspended or the data pipeline is paused. Any profiles that enter Customer.io during the freeze are flagged and excluded from the final export.

  • Deleted profiles still count toward billing at export time

    Customer.io includes profiles deleted within the current billing cycle in the billable profile count. During migration scoping, we identify the active-to-deleted profile ratio and flag whether an inactive-profile purge before migration would reduce ongoing costs in the new Nutshell plan. We also identify any active integrations that could re-add deleted profiles so the customer can suspend those before the final export.

  • Transactional message templates and delivery logs require separate handling

    Customer.io transactional messages (password resets, receipts, shipping notifications) bypass standard unsubscribe rules and are triggered programmatically. Nutshell has no transactional messaging feature. We export the transactional message template content and delivery log as structured files for the customer's engineering team to route through a dedicated transactional email service post-migration. Unsubscribe and preference flags migrate to Contact email opt-out status in Nutshell.

Migration approach

Six steps for a successful Customer.io to Nutshell data migration

  1. Discovery and migration scope definition

    We audit the Customer.io workspace for profile count, event type inventory, segment definitions, custom object types and their schema, campaign and journey count, and any active API or SDK integrations that could re-import data mid-migration. We pair this with a review of the target Nutshell environment including existing fields, groups, and custom object readiness. The discovery output is a written migration scope that defines what migrates, what documents, and what the customer rebuilds manually post-migration.

  2. Nutshell schema preparation

    We pre-create all required custom fields in Nutshell to match the Customer.io trait schema before any data import. This includes mapping standard traits (name, email, phone, address) to Nutshell standard fields and creating custom fields for non-standard traits. We create Groups corresponding to Customer.io segments with documented membership criteria notes. If Customer.io Custom Objects require Account linkage, we pre-create the relationship structure. Any required Nutshell custom field types (dropdown, date, number, text) are defined with appropriate validation rules to prevent import errors.

  3. Test migration in Nutshell sandbox

    We run a migration of a representative data subset into a Nutshell test environment to validate field mapping, group assignment, and custom object linkage. The customer reviews the test output and spot-checks records for accuracy. Any field collisions, missing custom fields, or mapping corrections are resolved in this phase before production migration begins. The test migration also establishes the expected row counts and import duration for production planning.

  4. Data export and transformation from Customer.io

    We extract all People records with full trait data, event history, segment membership, and Custom Object records from Customer.io using the REST API. Anonymous profiles with no email address are flagged for identity resolution. We transform the profile data into a Nutshell-compatible import format, mapping traits to custom fields, segment membership to Groups, and event history to Activity records. Deleted profiles in scope are flagged with a deletion timestamp for billing reconciliation.

  5. Production data import in dependency order

    We import data into the production Nutshell environment in dependency order: Accounts first (from Customer.io Custom Objects with company-like attributes), then Contacts (with Account linkage resolved), then Groups (populated from Customer.io segment membership snapshots), then Activity records (event history as Notes on the relevant Contact). Each phase emits a row-count reconciliation report before the next phase begins. We handle Nutshell API rate limits with exponential backoff and chunked batch inserts to avoid throttling.

  6. Cutover, delta sync, and handoff

    We freeze Customer.io data writes during the cutover window, run a final delta migration of any records modified since the initial export, then hand off Nutshell as the system of record. We deliver the campaign and journey inventory document, transactional message export files, and a segment-to-group mapping reference to the customer's admin team. We provide a reconciliation report comparing migrated record counts against source record counts and flag any discrepancies for manual review.

Platform deep dives

Context on both ends of the pair

Customer.io logo

Customer.io

Source

Strengths

  • Event-driven automation engine purpose-built for triggering messages from real-time application events, well-suited to SaaS and product-led growth motions.
  • Multi-channel orchestration covers email, push, SMS, in-app, and webhooks (with RCS support added in 2026 updates) under a single workflow canvas.
  • Drag-and-drop visual workflow editor handles delays, branches, and multichannel steps without code, while still allowing Liquid templating for advanced personalization.
  • Behavior-based segmentation with real-time event ingestion means segments update as users act, not on a scheduled batch.
  • Strong developer ergonomics — REST API, robust webhooks, and a Data Pipelines product for warehouse-native ingestion appeal to engineering-led teams.

Weaknesses

  • Profile-based billing counts inactive and deleted (within billing cycle) profiles, inflating costs for large user bases.
  • Workflow and segmentation setup requires developer involvement; non-technical marketers hit a ceiling quickly.
  • No free plan and opaque Enterprise pricing make budget forecasting difficult for SMBs.
  • Push notification migration requires a full app SDK update — users must upgrade before they can receive messages from Customer.io.
  • Support tiers mean critical issues during migration may not get fast enough responses on Essentials.
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. 2 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 Customer.io and Nutshell.

  • Object compatibility

    B

    2 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

    Customer.io: Not publicly documented for general API; transactional broadcast endpoint capped at 1 request per 10 seconds.

  • Data volume sensitivity

    A

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

Estimator

Estimate your Customer.io 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 Customer.io to Nutshell data migrations

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

Can't find your answer?

Walk through your Customer.io 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 three weeks for accounts under 10,000 Customer.io profiles with no custom objects and straightforward trait-to-field mapping. Migrations with event history preservation, multiple custom object types, or complex segment-to-group mapping move to five to eight weeks because of transformation logic, sandbox validation, and reconciliation testing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Customer.io.
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