CRM migration
Field-level mapping, validation, and rollback between erxes and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
erxes
Source
HubSpot
Destination
Compatibility
10 of 10
objects map 1:1 between erxes and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
erxes is an open-source experience operating system with a plugin-based CRM model covering sales, marketing, and service modules. Teams migrate to HubSpot when they need the HubSpot App Marketplace ecosystem, native marketing automation, and a managed SaaS platform with predictable support SLAs. The migration carries all erxes contacts, companies, deals, tasks, notes, and custom object data into HubSpot's contact-company-deal model. The primary translation challenge is erxes's flexible pipeline stages — which have no enforced naming schema — mapping to HubSpot's pipeline-and-stage pick-list structure, which requires a stage-name reconciliation step before field mapping can complete. erxes custom fields (defined per plugin) must be pre-created in HubSpot as custom properties. erxes integrations and workflow automations do not migrate; they require a rebuild in HubSpot's automation tools. FlitStack AI uses erxes's GraphQL API for extraction, validates field-level parity against HubSpot's REST API during test migration, and sequences the migration so foreign-key relationships (company before contact, contact before deal) resolve correctly.
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 erxes 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.
erxes
Contact
HubSpot
Contact
1:1erxes contacts map directly to HubSpot contacts. The primary translation is API name case (camelCase to snake_case). erxes contact IDs are preserved as Source_ID__c for traceability. If the erxes contact has no associated company, it lands in HubSpot as a contact with no companyId link.
erxes
Company
HubSpot
Company
1:1erxes companies map 1:1 to HubSpot companies. Parent-child company hierarchies use HubSpot's Parent Company field. Domain, industry, employee count, and annual revenue map to HubSpot's matching built-in properties. Multi-subsidiary company structures in erxes require parentId translation per hierarchy level during migration.
erxes
Deal / Sales Pipeline
HubSpot
Deal
1:1erxes deals map to HubSpot deals, but the pipeline model requires a translation step. erxes stages have no enforced naming schema; HubSpot requires named pipelines with stage pick-list values. We extract the actual stage names from erxes, create matching HubSpot pipeline stages, and map values value-by-value. Stage probability must be assigned in HubSpot after mapping.
erxes
User / Owner
HubSpot
Owner
1:1erxes user records map to HubSpot owners by email address match. The migration extracts erxes user emails and matches them against HubSpot user emails. Unmatched owners are flagged before migration runs — the team either invites the user to HubSpot first or assigns their records to a fallback owner.
erxes
Tag / Label
HubSpot
Custom property (list)
1:1erxes tags are free-form labels on contacts and companies. HubSpot has no native tag object; tags migrate as a HubSpot list or as a multi-checkbox custom property. We recommend creating a tags property in HubSpot before migration so the label data lands in the correct field type.
erxes
Task / Activity
HubSpot
Engagement (Task)
1:1erxes tasks and activities map to HubSpot engagements. The task subject, body, status, and assigned user map to HubSpot engagement properties. Original timestamps and owner email are preserved. HubSpot engagement API accepts these fields natively without custom property creation today.
erxes
Note
HubSpot
Engagement (Note)
1:1erxes notes map to HubSpot engagements of type 'note'. The note content maps to the HubSpot engagement body. Original create date is preserved as Created_At__c on the engagement. Rich-text formatting in erxes notes is carried into HubSpot's note field as well.
erxes
Custom Object
HubSpot
Custom Object
1:1erxes custom objects (plugin-defined) map to HubSpot custom objects, but HubSpot requires Enterprise tier for custom objects. We extract the erxes custom object schema, create matching HubSpot custom object definitions, and migrate records via HubSpot's custom objects API. Custom-object associations use HubSpot's association labels.
erxes
engages (email, call, meeting)
HubSpot
Engagement (email, call, meeting)
1:1erxes engagement records (email, call, meeting) map to HubSpot engagements with their respective type. The engagement subject, body, timestamp, and owner email are preserved. HubSpot's engagement model supports calls, emails, meetings, and tasks natively through the engagements API for smooth data continuity.
erxes
Messenger Conversation
HubSpot
Conversation (optional)
1:1erxes messenger conversations and inbox messages have no direct HubSpot equivalent in the CRM tier. These records are preserved as a reference file with conversation metadata. If HubSpot Service Hub is in scope, inbox migration is handled separately as a distinct project.
| erxes | HubSpot | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal / Sales Pipeline | Deal1:1 | Fully supported | |
| User / Owner | Owner1:1 | Fully supported | |
| Tag / Label | Custom property (list)1:1 | Fully supported | |
| Task / Activity | Engagement (Task)1:1 | Fully supported | |
| Note | Engagement (Note)1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| engages (email, call, meeting) | Engagement (email, call, meeting)1:1 | Fully supported | |
| Messenger Conversation | Conversation (optional)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.
erxes gotchas
No native bulk export in Community edition
Plugin activation state affects data visibility
Custom fields have no type enforcement during import
Conversation message ordering depends on server timestamps
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 erxes API and extract data model
FlitStack AI connects to the erxes GraphQL API using the provided credentials. We introspect the active plugin schemas to build a complete inventory of all custom fields, custom objects, pipeline configurations, stage definitions, and user records. This audit produces a data dictionary that becomes the source side of the field-mapping plan. Any erxes field with no apparent HubSpot equivalent is flagged with a recommended transformation strategy.
Create HubSpot target schema
Before data moves, FlitStack AI creates a HubSpot property creation checklist based on the erxes custom field audit. This includes pipeline and stage setup in HubSpot's deal pipeline UI, custom property definitions for all erxes fields that lack HubSpot equivalents, and owner setup confirmation. The schema plan is reviewed with the client before FlitStack commits any changes to the HubSpot portal.
Run sample migration with field-level diff
A representative slice of records — typically 100–500 covering contacts, companies, deals, tasks, and any custom objects — migrates first. FlitStack generates a field-level comparison report showing every source field, its mapped HubSpot destination, the transformation applied, and the actual destination value after migration. The client reviews this report to confirm stage-name mapping, owner resolution accuracy, and tag translation before the full run is approved.
Execute full migration with delta-pickup window
The full dataset migrates using erxes's bulk export endpoints, transformed per the agreed mapping plan, and loaded into HubSpot via the HubSpot CRM API. A delta-pickup window of 24–48 hours after the full run captures any records created or modified in erxes during the cutover. An audit log records every operation. One-click rollback is available if field-level reconciliation detects unexpected gaps.
Platform deep dives
erxes
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 erxes and HubSpot.
Object compatibility
2 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
erxes: Not publicly documented.
Data volume sensitivity
erxes 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 erxes to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your erxes 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 erxes
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.