CRM migration
Field-level mapping, validation, and rollback between Adobe Campaign and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Adobe Campaign
Source
HubSpot
Destination
Compatibility
10 of 12
objects map 1:1 between Adobe Campaign and HubSpot.
Complexity
BStandard
Timeline
8–14 days
Overview
Adobe Campaign and HubSpot are fundamentally different platforms. Adobe Campaign is enterprise marketing automation built around profiles (NmsRecipient), campaigns, and deliveries tracked in broadlog tables — it has no native CRM. HubSpot is a CRM-first platform with integrated marketing and service hubs, organized around contacts with lifecycle stages, companies, deals, and pipelines. Migrating from Adobe Campaign to HubSpot means moving marketing data AND adopting a new CRM simultaneously, which is a different problem than moving between two CRMs. We map Adobe's recipient profiles to HubSpot contacts, Adobe campaigns to HubSpot deals (using HubSpot's pipeline and stage model), and Adobe delivery logs to a combination of HubSpot activity timeline entries and deal-level custom properties. Adobe's custom schemas and extensions migrate as HubSpot custom properties and custom objects. Broadlog engagement data (open, click, bounce status) is preserved as contact custom properties since HubSpot tracks engagement separately from delivery-log granularity. We do not migrate Adobe Campaign workflows (JavaScript-based activity engine with targeting, query, enrichment, and delivery activities) — they must be rebuilt in HubSpot's workflow automation. We export Adobe workflow definitions as a structured JSON reference package for your HubSpot admin. Email templates migrate as assets with HTML preserved, but template logic referencing Adobe personalization tokens requires reconfiguration to HubSpot token syntax. Reports and dashboards do not migrate — underlying data does.
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 Adobe Campaign 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.
Adobe Campaign
NmsRecipient (Profile)
HubSpot
Contact
1:1Adobe recipient records migrate 1:1 to HubSpot contacts. The @email field maps to HubSpot's email property. NmsRecipient is the core contact table in Adobe; its custom extension fields (cus:* namespace) map to HubSpot custom properties. HubSpot lifecycle stage is assigned based on Adobe @blacklist status and last delivery event.
Adobe Campaign
NmsCompany (or company extension)
HubSpot
Company
1:1Adobe's company extension schema (if present) maps to HubSpot companies. Adobe allows N:N recipient-to-company associations; HubSpot supports one primary company per contact plus additional Company Contact Relationships. We preserve all associations and surface them in HubSpot's association panel. During migration, we evaluate each recipient's company associations to determine which becomes the primary company, while preserving secondary associations through the relationship model to maintain data integrity.
Adobe Campaign
NmsCampaign
HubSpot
Deal (via Pipeline)
1:1Adobe campaign objects don't have a direct HubSpot equivalent. Each Adobe campaign becomes a HubSpot deal record, with the deal name derived from NmsCampaign @label. Campaign metadata (internal name, channel type) is preserved in deal custom properties. Campaign targeting and audience data is stored as a custom property reference for rebuild in HubSpot lists.
Adobe Campaign
NmsDelivery
HubSpot
Deal (custom properties) + Activity
1:1Adobe deliveries are distinct from campaigns. Each delivery's aggregate metrics (send count, open count, click count, bounce count) are stored as HubSpot deal-level custom properties. Delivery-level HTML content migrates as a file attachment on the associated deal record. Individual recipient delivery events live in broadlog (see broadlog mapping).
Adobe Campaign
NmsBroadLogRcp (Broadlog)
HubSpot
Contact (custom properties) + Timeline
1:1Broadlog tables store per-recipient delivery events (sent, failed, quarantined, opened, clicked). We aggregate broadlog event data into per-contact custom properties (Last_Send_Date__c, Open_Count__c, Click_Count__c, Bounce_Flag__c) and surface the most recent send engagement as a timeline entry. The granular per-event history is collapsed to avoid creating thousands of activity rows.
Adobe Campaign
NmsSubscription / NmsService
HubSpot
Contact (subscriptions property) + Custom Object
many:1Adobe service subscriptions (opt-in lists) are complex objects with subscription date and status. We migrate active subscriptions as a HubSpot contact-level opt-in property and, if multiple services are used, as a HubSpot custom object (Subscription) linked to contacts via a custom association. Unsubscribed status maps to HubSpot's email opt-out field.
Adobe Campaign
NmsSeedMember (Seed List)
HubSpot
Contact (test flag) + Suppression
many:1Adobe seed addresses are test contacts used for delivery previews. We migrate seed addresses as HubSpot contacts tagged with Seed_Address__c = true. Seed addresses that are also on the suppression list are migrated to HubSpot's suppression list directly. This prevents test contacts from entering the live marketing pipeline.
Adobe Campaign
Adobe Custom Schemas (cus:* namespace)
HubSpot
Custom Properties + Custom Objects
1:1Adobe Campaign custom schemas extend the recipient table with custom attributes and related tables. Each cus:* extension schema maps to a set of HubSpot custom properties on the Contact object. Related (linked) custom schemas map to HubSpot custom objects with their own schema and a custom association to the Contact. The XML schema definition is reviewed to ensure HubSpot property types match (string, number, date, Boolean, enumeration).
Adobe Campaign
Adobe Delivery Template (NmsDlvTemplate)
HubSpot
File (attachment)
1:1Adobe delivery templates store the HTML structure and personalization tokens used across campaigns. We export template HTML as files and attach them to the relevant deal or company record. Adobe personalization tokens (@context.nms.recipient.fieldName) must be manually reconfigured to HubSpot token syntax (e.g., {{contact.fieldname}}) — we flag each token location in the export.
Adobe Campaign
NmsWorkflow (Workflow Definitions)
HubSpot
Export Package
1:1Adobe Campaign workflows are JavaScript-based orchestration pipelines with targeting, query, enrichment, and delivery activities. These do not migrate to HubSpot. We export each workflow definition as a structured JSON specification documenting the trigger conditions, audience logic, delivery actions, and timing rules. This package is handed to your HubSpot admin as a rebuild reference for HubSpot workflow automation.
Adobe Campaign
Adobe Report / Dashboard
HubSpot
Not Migrated
1:1Adobe Campaign built-in reports (delivery tracking, campaign performance, tracking indicators) and custom dashboards do not migrate. Underlying data (delivery metrics, broadlog aggregates) migrates to HubSpot deal custom properties and contact custom properties, which can be used to rebuild reports in HubSpot's reporting tools.
Adobe Campaign
NmsTracking (Tracking logs)
HubSpot
Contact (custom properties)
1:1Adobe tracking logs aggregate URL-level click data per recipient. We extract the most recent tracked URL and click count per contact and store them as HubSpot custom properties (Last_Tracked_URL__c, Click_Count__c). Full URL-level tracking history is exported as a CSV for reference but not imported as individual records in HubSpot.
| Adobe Campaign | HubSpot | Compatibility | |
|---|---|---|---|
| NmsRecipient (Profile) | Contact1:1 | Fully supported | |
| NmsCompany (or company extension) | Company1:1 | Fully supported | |
| NmsCampaign | Deal (via Pipeline)1:1 | Fully supported | |
| NmsDelivery | Deal (custom properties) + Activity1:1 | Fully supported | |
| NmsBroadLogRcp (Broadlog) | Contact (custom properties) + Timeline1:1 | Fully supported | |
| NmsSubscription / NmsService | Contact (subscriptions property) + Custom Objectmany:1 | Fully supported | |
| NmsSeedMember (Seed List) | Contact (test flag) + Suppressionmany:1 | Fully supported | |
| Adobe Custom Schemas (cus:* namespace) | Custom Properties + Custom Objects1:1 | Fully supported | |
| Adobe Delivery Template (NmsDlvTemplate) | File (attachment)1:1 | Fully supported | |
| NmsWorkflow (Workflow Definitions) | Export Package1:1 | Fully supported | |
| Adobe Report / Dashboard | Not Migrated1:1 | Fully supported | |
| NmsTracking (Tracking logs) | Contact (custom properties)1: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.
Adobe Campaign gotchas
ACS to ACC schema migration breaks dynamic content blocks
Per-active-profile billing counts every imported Recipient
Technical operator IMS migration mandatory in v8.5+
v8 FFDA dual-database architecture complicates data mapping
List export ceiling of 100,000 rows requires chunking
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
Discover Adobe Campaign schema and custom object inventory
We extract your Adobe Campaign schema definitions (nms:recipient, nms:company, nms:campaign, nms:delivery, and all cus:* custom schemas) via the Adobe Campaign data schema API. We document every custom attribute, linked table, and enumeration definition. We also run a broadlog export to assess engagement data volume and delivery history depth. This inventory drives the field-mapping specification and surfaces any schema types that require HubSpot custom objects versus standard properties.
Define object and field mapping specification
We create a field-level mapping document that pairs every Adobe Campaign object and attribute with its HubSpot equivalent. For each mapping, we specify the transformation rule (direct, value mapping, custom field required, no equivalent). We also define the Adobe broadlog aggregation strategy — which delivery events become HubSpot custom properties on the contact, which become deal-level properties, and which are exported as a reference CSV. This specification is reviewed with your team before we touch any data.
Create HubSpot custom properties and custom objects
We create all required HubSpot custom properties on the Contact and Deal objects, matching the types from the Adobe schema (text, number, date, datetime, enumeration, Boolean). For Adobe custom schemas that represent related entities (e.g., subscription services, product interests), we create HubSpot custom objects with the appropriate associations to Contact and Company. We also configure HubSpot pipelines and stages to reflect your Adobe campaign structure, so deal records land in the correct pipeline from day one.
Run sample migration with field-level diff
A representative slice of Adobe profiles — typically 200–500 records across different campaign types and delivery statuses — migrates first. We run the field-level diff against HubSpot, verifying that @blacklist maps to opt-out correctly, broadlog aggregation produces the expected custom property values, Adobe company links resolve to HubSpot companies, and Adobe workflow definitions export cleanly. We share the diff output with you for validation before the full run is authorized.
Execute full migration with delta-pickup cutover
The full Adobe Campaign dataset migrates via the HubSpot CRM API and Import tool, sequenced to resolve foreign keys correctly (companies first, then contacts with company lookups, then deals with contact associations). A delta-pickup window runs concurrently — typically 24–48 hours — capturing any Adobe records modified during the cutover. We deliver an audit log of every record written, a summary of any unmapped fields, and a reconciliation report comparing Adobe record counts to HubSpot record counts.
Platform deep dives
Adobe Campaign
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 Adobe Campaign 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
Adobe Campaign: Not publicly documented; throughput limits are contract-specific and enforced at the infrastructure level.
Data volume sensitivity
Adobe Campaign doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 Adobe Campaign to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Adobe Campaign 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 Adobe Campaign
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.