CRM migration
Field-level mapping, validation, and rollback between Iterable and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Iterable
Source
HubSpot
Destination
Compatibility
11 of 12
objects map 1:1 between Iterable and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
HubSpot
Contact
1:1Iterable 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
HubSpot
Company
1:1Iterable 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
HubSpot
Timeline Activity (Contact)
1:1Iterable 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
HubSpot
Deal + Line Item
many:1Iterable 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
HubSpot
Product
1:1Iterable 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
HubSpot
HubSpot List
1:1Iterable 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
HubSpot
HubSpot Active List
1:1Iterable 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
HubSpot
HubSpot Workflow
1:1Iterable 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
HubSpot
HubSpot Workflow
1:1Iterable 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
HubSpot
Contact Properties
1:1Iterable 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
HubSpot
Custom Contact Property
1:1Campaign 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
HubSpot
HubSpot Files
1:1Iterable 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.
| Iterable | HubSpot | Compatibility | |
|---|---|---|---|
| User Profile | Contact1:1 | Fully supported | |
| User Profile | Company1:1 | Fully supported | |
| Custom Event | Timeline Activity (Contact)1:1 | Fully supported | |
| Purchase Event | Deal + Line Itemmany:1 | Fully supported | |
| Catalog | Product1:1 | Fully supported | |
| Static List | HubSpot List1:1 | Fully supported | |
| Dynamic List / Segment | HubSpot Active List1:1 | Fully supported | |
| Journey | HubSpot Workflow1:1 | Fully supported | |
| Campaign | HubSpot Workflow1:1 | Fully supported | |
| Subscription / Preferences | Contact Properties1:1 | Fully supported | |
| Campaign Metadata | Custom Contact Property1:1 | Fully supported | |
| Attachment / File | HubSpot Files1: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
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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
Iterable
Source
Strengths
Weaknesses
HubSpot
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 HubSpot.
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 HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Iterable to HubSpot 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 HubSpot
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.