CRM migration

Migrate from Iterable to HubSpot

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

Iterable logo

Iterable

Source

HubSpot

Destination

HubSpot logo

Compatibility

92%

11 of 12

objects map 1:1 between Iterable and HubSpot.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Iterable is a cross-channel customer engagement platform organized around user profiles, custom events, catalogs, and journeys. HubSpot is a CRM organized around contacts, companies, deals, and tickets with native pipeline management. The data models are fundamentally different — Iterable stores behavioral event streams and product catalog data, while HubSpot stores record-centric CRM objects. FlitStack AI migrates Iterable user profiles to HubSpot contacts with company associations, custom events to timeline activities, catalog entries to HubSpot products, and purchase events to deals with line items. HubSpot's lifecycle stage system (subscriber, lead, MQL, SQL, opportunity, customer) is applied to migrated contacts based on their most-recent Iterable event type and list membership. Journey logic and campaign workflows cannot migrate — they require manual rebuild in HubSpot using lists and workflows. We sequence the migration so foreign keys resolve correctly: companies first, then contacts with company associations, then deals referencing those contacts. A delta-pickup window captures in-flight changes during cutover.

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

HubSpot logo

HubSpot

What's pulling them in

  • Lowest barrier to entry of any major CRM — the free tier with unlimited contacts lets teams validate fit before committing to a paid plan, according to G2 and Capterra reviewers.
  • Native integration between the CRM and sales engagement tools (sequences, email tracking, dialer) means no separate sync configuration, a theme across G2 Sales Hub reviews.
  • Pipeline visualization, deal tracking, and automated workflows are consistently praised as intuitive and easy to set up without developer involvement.
  • Strong onboarding for new team members — reviewers on Capterra and G2 highlight how quickly new reps become productive without formal training.
  • The HubSpot platform ecosystem (Marketing, Sales, Service, CMS hubs) allows growing companies to consolidate tools without building new integrations.

Object mapping

How Iterable objects map to HubSpot

Each row shows how a Iterable object lands in HubSpot, 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

HubSpot

Contact

1:1
Fully supported

Iterable user profiles migrate as HubSpot contacts. Email address becomes the primary identifier. First name, last name, phone, and address properties map directly. Profile-level custom fields become HubSpot contact properties. We preserve the original Iterable created_date and last_updated_date as custom datetime fields for reporting continuity.

Iterable

User Profile

maps to

HubSpot

Company

1:1
Fully supported

Iterable user profiles often contain company name and domain. We extract these to create HubSpot company records first, then link each contact to its primary company via the company_id field. Multiple company associations per user collapse to one primary company link in HubSpot.

Iterable

Custom Event

maps to

HubSpot

Timeline Activity (Contact)

1:1
Fully supported

Iterable custom events (arbitrary event names with JSON payloads) translate to HubSpot timeline events. Each unique event name becomes a timeline activity type. Event metadata from JSON payloads flattens into activity properties. Up to 10 custom event types per HubSpot portal requires aggregation of high-cardinality event names.

Iterable

Purchase Event

maps to

HubSpot

Deal + Line Item

many:1
Fully supported

Iterable purchase events carry order ID, total amount, and product items. We create a HubSpot deal per order with amount mapped from the purchase total, and line items for each product purchased. The contact who triggered the purchase links to the deal via Opportunity Contact Role. Purchase timestamp becomes deal create date.

Iterable

Catalog

maps to

HubSpot

Product

1:1
Fully supported

Iterable catalog entries (collections with SKU, name, description, price, metadata) map to HubSpot Product Library records. Product images and metadata become custom properties on the HubSpot product. Catalog variants map to separate HubSpot products or as product variants via custom fields.

Iterable

Static List

maps to

HubSpot

HubSpot List

1:1
Fully supported

Iterable static lists migrate as HubSpot static lists. List name and membership (contact email addresses) transfer directly. Static list create dates are preserved. These lists serve as enrollment bases for HubSpot workflows post-migration. If a list references contacts not yet migrated, FlitStack AI queues those contacts for the next batch and updates the list membership after load. You can view list statistics in the HubSpot list dashboard.

Iterable

Dynamic List / Segment

maps to

HubSpot

HubSpot Active List

1:1
Fully supported

Iterable dynamic segments based on behavioral criteria have no direct HubSpot equivalent. HubSpot active lists support static membership and some behavioral triggers but not full nested behavioral logic. We export segment definitions as reference documentation for manual rebuild using HubSpot lists and workflows.

Iterable

Journey

maps to

HubSpot

HubSpot Workflow

1:1
Fully supported

Iterable journeys contain multi-step branching logic, wait conditions, channel routing (email, SMS, push), and A/B testing configurations. HubSpot workflows support enrollment-based automation but lack native SMS and push channels without third-party integrations. Journey definitions are exported as a rebuild reference; channels must be reconnected to HubSpot-approved integrations.

Iterable

Campaign

maps to

HubSpot

HubSpot Workflow

1:1
Fully supported

Iterable campaigns (send definitions, templates, A/B tests) do not map to HubSpot CRM objects. We migrate campaign metadata as a reference custom property on contacts who received a campaign email. The campaign content itself must be rebuilt using HubSpot email templates and sequence tools.

Iterable

Subscription / Preferences

maps to

HubSpot

Contact Properties

1:1
Fully supported

Iterable subscription states (email subscribed, SMS opted-in) become HubSpot contact properties. We map channel-specific opt-out flags to HubSpot's marketing email subscription status. SMS consent flags migrate as custom boolean properties since HubSpot SMS requires separate integration configuration. These custom properties can be used in HubSpot workflows to control message delivery and compliance.

Iterable

Campaign Metadata

maps to

HubSpot

Custom Contact Property

1:1
Fully supported

Campaign IDs, campaign names, and send timestamps attach to contacts as a custom property (Last_Campaign_Source__c). This preserves marketing attribution history from Iterable in HubSpot without native campaign membership sync. You can use this property in HubSpot reporting to analyze campaign performance and contact engagement over time.

Iterable

Attachment / File

maps to

HubSpot

HubSpot Files

1:1
Fully supported

Iterable file attachments linked to user profiles (images, documents) re-upload to HubSpot Files. File size limits (25MB per file in HubSpot) apply. Inline images used in Iterable email templates download and rehost within HubSpot's file manager. If any file exceeds the size limit, FlitStack AI compresses the image or splits the document into smaller parts before upload.

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

HubSpot logo

HubSpot gotchas

High

Marketing Contacts billing model is migration-critical

High

Feature tier gating is not visible until onboarding

Medium

Mandatory onboarding fees inflate year-one cost

Medium

HubSpot CSV importer cannot migrate engagements or attachments

Medium

Custom objects require Enterprise and a pre-existing schema

Pair-specific challenges

  • Iterable custom events require aggregation before HubSpot timeline import

    Iterable allows unlimited custom event names per project. HubSpot portals are limited to 10 custom event types in the timeline. High-cardinality event streams (hundreds of unique event names) must be aggregated into HubSpot-compatible event types before import. We group events by naming prefix or behavior category and store the original event name as a property on the timeline activity. This preserves behavioral data while fitting within HubSpot's schema constraints. Teams with complex event taxonomies should validate event type mapping before migration.

  • Iterable purchase events need catalog-product resolution before deal creation

    Iterable purchase events reference catalog entries by ID. HubSpot deals with line items require product records to exist first. We resolve each purchase item's catalog ID against HubSpot's Product Library during mapping. Unmatched catalog items either create HubSpot product records on-the-fly or exclude the line item with a flag for manual review. Teams with large catalogs should pre-create products in HubSpot using Iterable catalog exports before migration day. This ensures that each line item links to a valid product, preventing orphaned deal entries and maintaining accurate revenue reporting in HubSpot. You can also set product pricing and images during the pre-creation step.

  • HubSpot lifecycle stage must be derived from Iterable behavioral data

    Iterable has no native lifecycle stage field — leads and customers are distinguished by list membership and event history. HubSpot requires lifecycle_stage on every contact for proper segmentation. We derive HubSpot lifecycle stage from Iterable behavioral signals: contacts with purchase events become 'customer', contacts with high-frequency engagement events become 'opportunity', and all others default to 'lead'. Teams should validate lifecycle assignment logic against HubSpot reporting requirements before go-live. If your Iterable data includes scoring models or engagement scores, we can translate those into custom numeric properties that influence stage assignment. Adjustments to the mapping can be made in the FlitStack console before the final run.

  • Iterable journey and campaign logic cannot migrate to HubSpot workflows

    Iterable journeys contain multi-step branching logic, time delays, channel routing, and A/B testing configurations. HubSpot workflows support enrollment-based automation but lack native SMS and push channels without third-party integrations. We export journey definitions as a reference document for manual rebuild. SMS and push channels require connection to HubSpot-approved integrations (e.g., Twilio, Pushwoosh) post-migration. Teams relying heavily on Iterable journeys should plan 2–4 weeks for workflow rebuild. FlitStack AI also provides a mapping matrix that links each Iterable journey node to equivalent HubSpot workflow actions, helping your team plan the rebuild timeline. You can import this matrix into project management tools to track progress.

  • Iterable data export rate limits affect migration window sizing

    Iterable API enforces rate limits on data export endpoints. Large user profiles (millions of records) require chunked extraction with exponential backoff. We use Iterable's Data Sync feature where available for incremental exports, falling back to API-based extraction for custom field and event data. Export failures due to rate limit errors add time to the migration window. Teams with large datasets should coordinate export scheduling with Iterable's API usage policies. We monitor API response headers to detect throttling and automatically pause requests, resuming once limits reset. This approach minimizes retries and keeps the migration timeline predictable.

Migration approach

Six steps for a successful Iterable to HubSpot data migration

  1. Extract Iterable data via API and Data Sync

    We connect to Iterable's API using project-scoped credentials and extract user profiles, custom events, catalog entries, purchase events, lists, and campaign metadata. For large datasets, we use Iterable's Data Sync feature to stream incremental exports. All extraction runs against Iterable's read-only API — no data modification or message sending occurs during export. We capture original created_at and updated_at timestamps for every record.

  2. Map Iterable objects to HubSpot data model

    We transform Iterable data shapes to fit HubSpot's CRM model: user profiles become contacts with company associations, purchase events become deals with line items, catalog entries become HubSpot products, and custom events become timeline activities. We apply lifecycle stage derivation logic based on behavioral signals. Custom event names with high cardinality aggregate into HubSpot-compatible event types with original event name preserved as a property.

  3. Create HubSpot products and custom properties

    Before contacts and deals load, we create HubSpot product records from Iterable catalog data. Custom properties on contacts, deals, and products are created in HubSpot via API using the field names and types from Iterable's schema. Any value mappings (subscription flags, custom pick-lists) are applied during this phase. HubSpot's portal limits (10 custom event types, property count caps) are validated against the migration scope.

  4. Run sample migration with field-level diff

    A representative slice migrates first — typically 100–500 user profiles spanning multiple event types, a sample of purchase events, and catalog entries. We generate a field-level diff between the source Iterable data and the destination HubSpot records so you can verify lifecycle stage assignment, company-contact associations, product-deal linkage, and timeline activity mapping before the full run commits. This diff includes counts of mapped and unmapped fields, highlighting any data loss or transformation issues.

  5. Execute full migration with delta-pickup window

    Full data migration runs against HubSpot API, loading contacts, companies, deals, line items, products, and timeline activities in the correct sequence (companies first, then contacts with associations, then deals referencing contacts). A delta-pickup window (typically 24–48 hours) captures any records modified in Iterable during the cutover. Audit log captures every operation, and one-click rollback is available if reconciliation fails. The rollback uses snapshot copies created before the run, allowing you to revert to the pre-migration state instantly.

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.
HubSpot logo

HubSpot

Destination

Strengths

  • Genuinely useful free CRM tier with no seat limit on contact records.
  • All-in-one sales engagement layer (sequences, email tracking, calling, dialer) embedded natively in the CRM, eliminating a separate integration.
  • Intuitive interface and fast onboarding for individual reps, per G2 and Capterra reviews.
  • Workflow automation triggers across contacts, deals, and tickets with a visual builder.
  • API coverage for all standard objects including custom objects at Enterprise tier.

Weaknesses

  • Pricing model is contact-based at the marketing layer — importing all records as marketing contacts can multiply the monthly bill by 4×.
  • Feature tier cliffs are frequent surprises: sequences, calling, advanced reporting, and quoting are all gated, often requiring plan upgrades mid-implementation.
  • Mandatory onboarding fees at Professional ($1,500) and Enterprise ($3,500) are not prominently disclosed on the pricing page.
  • API rate limits are restrictive for bulk migration — burst limits of 100-200 req/10sec and search endpoint limits of 4 req/sec require careful job queuing.
  • Custom objects, additional pipelines, and advanced forecasting are Enterprise-only, making cost projections difficult for growing teams.

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

  • 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 HubSpot 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 HubSpot data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Iterable to HubSpot migrations complete in 48–72 hours for under 50,000 contact records. Larger setups with millions of event rows, large catalogs, or complex custom event aggregation extend to 5–7 days. The longest planning step is mapping custom event names to HubSpot's 10-event-type limit and validating lifecycle stage derivation logic before data loads. During the migration, a sample slice of records is validated first, and a delta-pickup window captures any changes made in Iterable during cutover, ensuring the final HubSpot state reflects the latest data.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Iterable.
Land in HubSpot, 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