CRM migration

Migrate from Customer.io to Salesforce Sales Cloud

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

Customer.io logo

Customer.io

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

58%

7 of 12

objects map 1:1 between Customer.io and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Customer.io to Salesforce is a schema transformation, not a record copy. Customer.io uses a flat identity-first data model where every profile carries a userId, anonymous traits, and a complete event history; Salesforce requires Leads and Contacts to be linked to Accounts, stores events as Activity records, and has no direct equivalent for Journeys or Broadcasts. We map People profiles to Salesforce Lead or Contact depending on lifecycle stage, resolve Account relationships from Customer.io company objects and email domain, and migrate custom event histories as Tasks with event names and properties preserved. The Salesforce Connected App deprecation in 2026 (which Customer.io's current data-in sync uses) is a migration urgency factor we flag during scoping. Push notification migration requires a new app SDK version before device tokens can register with Customer.io; we sequence push after the SDK rollout, typically over a 4-8 week window. We do not migrate Journeys, Campaigns, or Broadcasts as code; we deliver a written automation inventory for the customer's admin to rebuild in Salesforce Flow.

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

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How Customer.io objects map to Salesforce Sales Cloud

Each row shows how a Customer.io object lands in Salesforce Sales Cloud, 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

Salesforce Sales Cloud

Lead or Contact (split required)

1:many
Fully supported

Customer.io People profiles map to Salesforce Lead or Contact based on lifecycle stage. Profiles with lifecycle_stage of subscriber, lead, or marketingqualifiedlead map to Salesforce Lead; those with salesqualifiedlead, customer, or evangelist map to Salesforce Contact attached to an Account. We resolve Account relationships by grouping profiles by email domain and existing Customer.io company traits, creating Salesforce Accounts from Customer.io Custom Objects (Companies) or domain-derived company records. The original Customer.io userId is preserved in a custom field on both Lead and Contact for identity continuity.

Customer.io

Custom Events

maps to

Salesforce Sales Cloud

Task

1:1
Fully supported

Customer.io track() events migrate as Salesforce Task records with a custom field capturing the event name and a JSON properties field. We export the full event name and properties object, flatten or preserve nested structure depending on the customer's reporting needs, and set Task Subject to the event name for timeline readability. sentAt and receivedAt timestamps are preserved on the Task. We discuss with the customer whether to use Salesforce custom fields or the Activity Logging feature for high-volume event reporting.

Customer.io

Custom Objects (Companies, Accounts)

maps to

Salesforce Sales Cloud

Account or Custom Object

1:1
Fully supported

Customer.io Custom Objects stored as object_type_id namespaces (Companies, Accounts, etc.) map to Salesforce Accounts or Salesforce custom objects depending on the namespace. We export the object type definition, all custom field schemas, and the relationship links between Custom Objects and People, then pre-create the destination schema in Salesforce before any data import. Note that Salesforce Professional ($75/user) supports custom objects without additional setup fees, removing the tier constraint that Customer.io imposes on custom object namespaces.

Customer.io

Traits and Attributes

maps to

Salesforce Sales Cloud

Standard or Custom Fields on Lead/Contact

lossy
Fully supported

Customer.io traits are key-value pairs of any JSON type including arrays and nested objects. Standard Salesforce fields (Email, Phone, Title, Industry) receive mapped traits directly. Non-standard traits migrate as custom fields on Lead and Contact. Nested arrays are flattened with a naming convention (e.g., preferences_email_marketing becomes preferences_email_marketing__c) or preserved as a JSON text field depending on the customer's reporting needs.

Customer.io

Campaigns and Journeys

maps to

Salesforce Sales Cloud

Campaign (rebuild inventory)

lossy
Mapping required

Customer.io Campaigns and Journeys are automated workflows with entry triggers, branching conditions, and message actions that have no direct Salesforce equivalent. We export the campaign structure including trigger type, wait steps, branching conditions, and channel assignments as a structured rule set. We deliver a written inventory of every active Journey and Campaign with its trigger conditions and actions, and a recommended Salesforce Flow equivalent for each. The customer's admin or a Salesforce partner rebuilds Journeys post-migration; the workflow itself is not migrated as code.

Customer.io

Broadcasts

maps to

Salesforce Sales Cloud

Campaign (re-send inventory)

1:1
Mapping required

Customer.io one-time Broadcast sends are exported with name, target segment criteria, content, and send timestamp. API-triggered Broadcasts have a rate limit of 1 request per 10 seconds that we document for sequencing and planning. We deliver a broadcast re-send plan with content and audience criteria, and the customer's team resends from Salesforce manually or through a Salesforce email tool post-migration. The broadcast target segment criteria export as structured rule sets for the customer's admin to rebuild as Salesforce Campaigns or audience lists.

Customer.io

Transactional Messages

maps to

Salesforce Sales Cloud

EmailTemplate

1:1
Mapping required

Customer.io transactional message templates and delivery logs migrate as Salesforce EmailTemplate records. We export template content, subject, and recipient-specific delivery logs. If message retention is disabled in Customer.io, transactional message bodies may be redacted in stored logs; we check the retention setting before export and flag any redacted payloads so compliance records in Salesforce are marked accordingly. Transactional message behavior (single recipient, bypasses unsubscribe) has no direct Salesforce equivalent and is documented for admin awareness.

Customer.io

Segments

maps to

Salesforce Sales Cloud

Campaign or List

1:1
Mapping required

Customer.io dynamic Segments are defined by trait values and event conditions. We export segment criteria as structured rule sets and document the equivalent Salesforce Campaign or List membership criteria. Static segments migrate as Salesforce Campaign Members with their original membership date. Dynamic segments require rebuilding in Salesforce as Campaign audience filters or as Salesforce Marketing Cloud Account Engagement (Pardot) Dynamic Lists if marketing automation continues in a separate tool.

Customer.io

Message Delivery Logs

maps to

Salesforce Sales Cloud

Task (Activity)

1:1
Mapping required

We export Customer.io message delivery status (sent, delivered, undeliverable, bounced) as Salesforce Task records with a custom delivery_status__c field. Delivery event timestamps and message IDs are preserved for audit continuity. Undeliverable statuses are flagged in the migration report for the customer's deliverability team to review. Email engagement events (opens, clicks, unsubscribes) migrate as additional Task records linked to the same Contact or Lead for a complete activity timeline.

Customer.io

Workspaces and Account Settings

maps to

Salesforce Sales Cloud

None (excluded)

1:1
Not supported

Customer.io Workspaces contain billing, SSO, IP allowlists, and region settings (US/EU). These are account-level and not migratable across platforms. We exclude workspace configuration from the migration scope and flag SSO and IP allowlist settings that the customer's admin must reconfigure manually in Salesforce or through their identity provider post-migration.

Customer.io

Deleted Profiles (within billing cycle)

maps to

Salesforce Sales Cloud

Flagged for billing reconciliation

lossy
Fully supported

Customer.io includes profiles deleted within the current billing period in the billable profile count. We extract all deleted profile records in scope and cross-reference them against active integrations that could re-import them mid-migration. Deleted profiles that could be re-added are flagged in the migration report with their original userId and deletion timestamp so the customer's team can confirm whether to include or exclude them from the migration payload and billing reconciliation.

Customer.io

Push Notification Configuration

maps to

Salesforce Sales Cloud

Prerequisite flagged

lossy
Fully supported

Push notification delivery via Customer.io requires users to install a version of the app integrated with the Customer.io SDK. Device tokens are provider-specific and cannot be imported from a previous push provider. We flag push migration as a prerequisite in the migration plan and sequence it after the new app version with the Customer.io SDK is live. The customer plans a 4-8 week audience upgrade rollout before push messaging can resume, and we coordinate the delta profile export after the SDK is live to capture any net-new profiles.

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

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Salesforce Connected App retirement in 2026 affects Customer.io sync

    Customer.io's Salesforce data-in integration currently uses OAuth Connected Apps, which Salesforce is removing support for in 2026. Any customer relying on Customer.io as a live Salesforce sync layer will need to re-architect that integration before the sunset date. We flag this as a migration urgency factor during scoping and recommend migrating Customer.io data into Salesforce before the sunset deadline if the customer's current stack uses the sync. We do not implement post-migration Connected App replacements; customers should evaluate Salesforce's replacement mechanism (OAuth 2.0 JWT or Session-Based) with Customer.io support after migration completes.

  • Broadcast API rate limit constrains high-volume profile re-imports

    Customer.io's API-triggered Broadcast endpoint is limited to 1 request per 10 seconds, creating a sequencing bottleneck when re-importing large audiences. We chunk broadcast imports into smaller batches with randomized jitter and route high-volume sends through the transactional API instead, which has no per-second rate cap. For audiences over 100,000 profiles, we flag the broadcast re-import scope during planning and sequence it across multiple days to avoid hitting the limit mid-import.

  • Customer.io flat identity model requires Account resolution before migration

    Customer.io profiles are flat records with traits and events but no required Account relationship. Salesforce requires Contacts to be linked to an Account. We resolve the Account relationship before migration by grouping profiles by email domain and existing Customer.io company traits, creating Salesforce Accounts from Customer.io Custom Objects (Companies) or domain-derived company records. Profiles without any company signal go to Salesforce Lead (not Contact) as a safety rail, and the customer's admin resolves them through standard Lead conversion post-migration. Skipping this step results in orphaned Contacts without AccountId, which Salesforce will reject or warn on.

  • Push notification tokens are provider-specific and cannot migrate

    Device tokens for push notifications are tied to the SDK provider that registered them. Customer.io cannot receive or reuse tokens from a previous push provider, and Salesforce push tokens similarly cannot be pre-seeded from Customer.io. Push messaging will be unavailable from Customer.io until users install a new app version with the Customer.io SDK integrated, a rollout that typically takes 4-8 weeks. We flag this as a prerequisite in the migration plan, sequence push migration after the SDK version is live, and capture any net-new Customer.io-registered profiles after the SDK update for a final delta export.

  • Journeys and Campaigns do not migrate as code

    Customer.io Journeys use event-triggered branching logic with visual workflow constructs that have no structural equivalent in Salesforce Flow. We do not migrate Journey configuration as code. We export each Journey's trigger type, conditions, wait steps, branching paths, and channel assignments as a structured rule set and deliver a written automation inventory listing every active Journey and Campaign with its recommended Salesforce Flow rebuild path. The customer's admin or a Salesforce partner rebuilds them post-migration as a separate engagement.

Migration approach

Six steps for a successful Customer.io to Salesforce Sales Cloud data migration

  1. Migration scoping and Account resolution strategy

    We audit the Customer.io workspace: profile count, event history volume and date range, active Journeys and Campaigns, Custom Object types and record counts, Segment definitions, and any transactional message templates. We also review the Salesforce destination org for existing schema, record types, and custom objects. We define the Account resolution strategy for Customer.io profiles (domain grouping, existing company traits, or Customer.io Custom Object linking) and agree on the Lead-Contact split rule based on the customer's lifecycle stage matrix. The scoping output is a written migration scope, Account resolution plan, and Salesforce edition recommendation.

  2. Schema pre-creation and Salesforce configuration

    We configure the Salesforce destination org: pre-create any custom objects matching the Customer.io object_type_id namespaces, add custom fields on Lead and Contact for Customer.io identifiers and lifecycle stage, configure Record Types and page layouts, and set up the Campaign object structure. If the customer plans to use Salesforce Flow or Marketing Cloud Account Engagement for automation rebuild, we document the recommended Flow structure alongside the migration. All schema work is validated in a Salesforce Sandbox before production migration begins.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's RevOps lead reconciles record counts (Leads, Contacts, Accounts, Activities), spot-checks 25-50 random records against the Customer.io source for field-level accuracy, and reviews the Account resolution results. Any mapping corrections, missing custom field additions, or Account resolution refinements happen in the Sandbox before production migration begins. Sign-off on the Sandbox reconciliation is required before we proceed to production.

  4. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from Customer.io Custom Objects and domain-derived company records), Contacts (with AccountId resolved), Leads (for early-stage profiles), then Activity history (Events as Tasks via Bulk API 2.0). Custom Objects are migrated after standard objects because they often have lookups to Account and Contact. Segments are documented as rule sets rather than migrated as live audiences. Each phase emits a row-count reconciliation report before the next phase begins. The Salesforce Connected App retirement deadline is factored into the production scheduling for urgency migrations.

  5. Cutover, delta validation, and automation inventory handoff

    We freeze writes to Customer.io during cutover, run a final delta export of any records created or updated since the migration window opened, and validate the delta in Salesforce. We then deliver the written Journey and Campaign automation inventory with recommended Salesforce Flow equivalents, the transactional message template inventory with redaction flags, and the broadcast re-send plan. We do not rebuild Journeys as Salesforce Flow inside the migration scope; that work is a separate engagement or an internal admin task. We offer a one-week hypercare window to resolve reconciliation issues raised by the customer's team after cutover.

  6. Push migration sequencing post-SDK rollout

    Push notification migration is sequenced after the customer releases a new app version with the Customer.io SDK integrated. We coordinate with the customer's mobile team to identify the SDK release date and plan a post-SDK delta export that captures any net-new profiles registered during the SDK rollout window. Push device tokens are not migratable between providers; the Customer.io SDK re-registers tokens from the new app version. The customer manages the in-app messaging prompting users to update to the new app version during the rollout period.

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.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

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 Customer.io and Salesforce Sales Cloud.

  • 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

    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 Salesforce Sales Cloud 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 Salesforce Sales Cloud data migrations

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

Can't find your answer?

Walk through your Customer.io to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

No. Customer.io Journeys use event-triggered branching logic with visual workflow constructs that have no structural equivalent in Salesforce Flow. We export each Journey's trigger, conditions, wait steps, and channel assignments as a structured rule set and deliver a written automation inventory listing every active Journey and Campaign with its recommended Salesforce Flow rebuild path. The customer's admin or a Salesforce partner rebuilds them post-migration. Broadcast re-send content and audience criteria are exported in a deliverable that the customer's team uses to re-send from Salesforce manually or through an email tool.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Customer.io.
Land in Salesforce Sales Cloud, 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