CRM migration
Field-level mapping, validation, and rollback between Oracle Eloqua and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Oracle Eloqua
Source
HubSpot
Destination
Compatibility
14 of 14
objects map 1:1 between Oracle Eloqua and HubSpot.
Complexity
BStandard
Timeline
4–6 weeks
Overview
Oracle Eloqua is an enterprise marketing automation platform built around contacts, accounts, and custom data objects (CDOs) with a separate campaign orchestration layer. HubSpot combines CRM and marketing automation in one platform, organizing data around contacts, companies, deals, and activities with its own lifecycle_stage and deal pipeline model. We map Eloqua contacts to HubSpot contacts and Eloqua accounts to HubSpot companies, preserving original_createdate as a custom property since HubSpot sets Createdate at import time. Custom data objects become either HubSpot custom properties (for simple flat data) or HubSpot custom objects at Enterprise tier (for relational or high-volume data). Eloqua's campaign membership data (email opens, clicks, form submissions, landing page views) migrates as HubSpot engagement activities or custom contact properties so your team retains behavioral context. Programs and nurture flows cannot migrate — we export Eloqua workflow definitions as a rebuild reference for HubSpot's automation tools. Our migration runs through Eloqua's Bulk API (2,000-record-per-hour soft limit) and HubSpot's Contacts API, sequencing records to resolve dependencies correctly. A delta-pickup window captures any records modified during cutover before the switch.
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 Oracle Eloqua 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.
Oracle Eloqua
Contact
HubSpot
Contact
1:1Eloqua contacts map directly to HubSpot contacts. Standard fields like email, phone, firstname, and lastname use HubSpot's built-in properties. The contact's primary company resolves to a HubSpot company association by domain match or by the primaryCompanyId value stored in Eloqua.
Oracle Eloqua
Account
HubSpot
Company
1:1Eloqua accounts map to HubSpot companies. Company name becomes Company Name, domain maps to Website, industry maps to HubSpot's industry picklist, and employee count maps directly. Multi-site or subsidiary account structures in Eloqua need review — HubSpot does not have a native hierarchical company model, so parent-subsidiary relationships store in a custom property.
Oracle Eloqua
Custom Data Object (CDO)
HubSpot
Custom Property or Custom Object
1:1Eloqua CDOs that are flat (one field per contact) become HubSpot custom contact properties. Relational CDOs with multiple records per contact or cross-contact relationships require HubSpot custom objects (Enterprise tier) and a junction association — your admin must create the custom object schema in HubSpot before migration runs.
Oracle Eloqua
Campaign
HubSpot
Campaign + List
1:1Eloqua campaigns map partially to HubSpot campaigns for email performance tracking. Campaign membership (which contacts were enrolled in which campaign) stores as HubSpot list memberships — one static list per Eloqua campaign. Campaign assets (email templates, landing pages, forms) do not migrate and must be rebuilt in HubSpot.
Oracle Eloqua
Program
HubSpot
List
1:1Eloqua programs track member enrollment and step progression. Program membership migrates as HubSpot list membership. Step-level progression data (which program step a contact was in) stores as a custom property on the contact record, preserving the enrollment context without recreating the program logic.
Oracle Eloqua
Email Activity (opens, clicks)
HubSpot
Engagement Timeline
1:1Eloqua email engagement events (opens, clicks, bounces, unsubscribes) map to HubSpot engagement activities on the contact timeline. Each engagement type becomes a separate activity record with original timestamps and campaign context preserved as activity metadata. This preserves the complete behavioral history of each contact so your team can see the full email engagement picture without relying on external reporting tools.
Oracle Eloqua
Form Submission
HubSpot
Custom Property + Activity
1:1Eloqua form submission data stores as both a custom property on the contact (which form was submitted) and an activity event. If Eloqua captures form field values, each field becomes a custom property on the HubSpot contact. Multiple form submissions per contact accumulate as comma-separated or multi-value custom properties.
Oracle Eloqua
Landing Page Submission
HubSpot
Activity + Custom Property
1:1HubSpot tracks form submissions broadly. Landing page names from Eloqua migrate as a custom property (hs_landing_page_source) on the contact record, with submission timestamps preserved as an engagement activity. Full landing page assets must be recreated as HubSpot landing pages. This approach keeps the contact record clean while still preserving the historical context of which landing pages drove conversions in Eloqua.
Oracle Eloqua
Lead Scoring Model
HubSpot
Custom Number Property
1:1Eloqua's lead scoring scale (which can vary per model and often extends beyond 100) rescale to HubSpot's 0–100 numeric property. We preserve the Eloqua score as a custom property with its original scale noted, and create a mapped hs_score property scaled to HubSpot's 0–100 range for use in HubSpot workflows.
Oracle Eloqua
Contact Segment / Group
HubSpot
HubSpot List (static or dynamic)
1:1Eloqua contact segments and shared lists migrate as HubSpot static lists. Active segment membership is preserved — contacts in an Eloqua group land in the corresponding HubSpot list. Dynamic segments (which re-evaluate based on criteria) require manual recreation as HubSpot smart lists.
Oracle Eloqua
Eloqua Contact ID
HubSpot
Custom Property (hs_eloqua_id)
1:1HubSpot has no native field for the source system's internal ID. We create hs_eloqua_id as a custom string property on every contact record, storing the original Eloqua contact GUID for traceability, de-duplication across delta runs, and cross-referencing in audits. This GUID mapping ensures you can always trace any HubSpot contact back to its original Eloqua source record, even months or years after the migration.
Oracle Eloqua
Eloqua Account ID
HubSpot
Custom Property (hs_eloqua_account_id)
1:1Similar to the contact ID, the original Eloqua account GUID stores as hs_eloqua_account_id on HubSpot company records. This supports delta-run de-duplication and maintains the link between your historical Eloqua records and their new HubSpot counterparts. The company ID mapping also enables you to rebuild account-based reporting hierarchies and associate historical engagement data with the correct accounts after migration.
Oracle Eloqua
Eloqua createdDate
HubSpot
Custom Property (hs_original_createdate)
1:1HubSpot overwrites Createdate when records are imported via API. The original Eloqua createdDate preserves as a custom datetime property (hs_original_createdate) on both contacts and companies, enabling reporting continuity and sorting by true record age in HubSpot's analytics. This ensures that contacts and companies appear in HubSpot reports with their original creation dates, maintaining historical accuracy for date-based filtering and cohort analysis.
Oracle Eloqua
Email Subscription Status
HubSpot
Custom Property + HubSpot subscription status
1:1Eloqua's email subscription flags (global opt-out, campaign-level unsubscribes) map to HubSpot's contact. Each Eloqua subscription list with its opt-in/opt-out status becomes a corresponding HubSpot subscription type, preserving the contact's preferences across all relevant email programs. This mapping ensures compliance with contact communication preferences and prevents accidental re-subscription during HubSpot onboarding.
| Oracle Eloqua | HubSpot | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Account | Company1:1 | Fully supported | |
| Custom Data Object (CDO) | Custom Property or Custom Object1:1 | Fully supported | |
| Campaign | Campaign + List1:1 | Fully supported | |
| Program | List1:1 | Fully supported | |
| Email Activity (opens, clicks) | Engagement Timeline1:1 | Fully supported | |
| Form Submission | Custom Property + Activity1:1 | Fully supported | |
| Landing Page Submission | Activity + Custom Property1:1 | Fully supported | |
| Lead Scoring Model | Custom Number Property1:1 | Fully supported | |
| Contact Segment / Group | HubSpot List (static or dynamic)1:1 | Fully supported | |
| Eloqua Contact ID | Custom Property (hs_eloqua_id)1:1 | Fully supported | |
| Eloqua Account ID | Custom Property (hs_eloqua_account_id)1:1 | Fully supported | |
| Eloqua createdDate | Custom Property (hs_original_createdate)1:1 | Fully supported | |
| Email Subscription Status | Custom Property + HubSpot subscription status1: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.
Oracle Eloqua gotchas
Contact-based pricing model inflates migration scope
No native export or migration tooling in Eloqua
Bulk API soft limits throttle large data transfers
5 GB import file size cap complicates bulk data loads
SOAP API deprecated; REST/Bulk APIs require endpoint caching
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
Audit Eloqua instance and build the migration schema
We catalogue every object in your Eloqua instance: contact fields, account fields, custom data objects, campaign names, program membership records, and engagement activity types. We review picklist definitions, lead scoring models, and any custom field constraints. This audit produces a migration schema document that maps each Eloqua field to its HubSpot destination — contact property, company property, custom property, or custom object — with transformation notes for pick-list value mapping, score rescaling, and date handling. Your team reviews and approves the schema before any data moves.
Create HubSpot custom properties and custom objects
Based on the approved schema, we create all required HubSpot custom properties (for hs_original_createdate, hs_eloqua_id, hs_eloqua_account_id, hs_lead_score, campaign membership properties, and any CDO-derived fields) before importing data. For relational CDOs that require HubSpot custom objects, we define the object schema, association labels, and required fields so the custom objects are ready when the migration run executes. Your HubSpot admin reviews the property list and enables the custom objects at Enterprise tier if needed.
Export and map contacts, accounts, and custom data objects
We export contacts and accounts from Eloqua using the Bulk API, sequencing accounts before contacts so the associatedcompanyid resolves correctly on each contact record. CDO records export separately and map to either HubSpot custom properties (flat data) or custom object records (relational data) depending on the schema decision from step one. We run a sample migration of 100–200 records first and generate a field-level diff so you can verify pick-list mapping, score rescaling, and campaign membership assignment before the full run commits. Duplicate detection uses email as the primary key with Eloqua ID stored for cross-reference.
Migrate engagement history and campaign membership data
Email engagement events (opens, clicks, bounces), form submissions, landing page submissions, and program memberships export as separate data sets and map to HubSpot engagement activities and custom contact properties. Campaign membership creates one HubSpot static list per Eloqua campaign and populates it with the corresponding contact IDs. We preserve original engagement timestamps as activity metadata so HubSpot's timeline reflects the true engagement history rather than the migration date.
Run delta-pickup and validate the full migration
After the initial migration run, we open a delta-pickup window — typically 24–48 hours — during which any records created or modified in Eloqua after the export timestamp are captured and applied to HubSpot. Your team runs reconciliation checks against Eloqua's record counts by list, by campaign membership, and by custom object before the cutover is finalized. We deliver an audit log of every import operation, and one-click rollback is available if reconciliation reveals data gaps that exceed the agreed tolerance threshold.
Platform deep dives
Oracle Eloqua
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 Oracle Eloqua 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
Oracle Eloqua: Bulk API: 2,000 records/hour per sync type; REST API: 10-20 concurrent requests depending on tier.
Data volume sensitivity
Oracle Eloqua 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 Oracle Eloqua to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Oracle Eloqua 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 Oracle Eloqua
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.