CRM migration

Migrate from erxes to HubSpot

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

erxes logo

erxes

Source

HubSpot

Destination

HubSpot logo

Compatibility

100%

10 of 10

objects map 1:1 between erxes and HubSpot.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

erxes logo

erxes

What's pushing teams away

  • Steep learning curve for non-technical teams who expect a point-and-click CRM without touching code or GraphQL
  • Limited enterprise-grade documentation and support outside the paid Enterprise tier leaves self-hosted teams troubleshooting alone
  • Plugin ecosystem lacks the third-party integrations available on established platforms, requiring custom development for niche tools
  • Mobile app has stability issues according to App Store reviews, with login failures reported by multiple users
  • Performance and stability can degrade with large datasets when running on underpowered self-hosted infrastructure

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 erxes objects map to HubSpot

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

maps to

HubSpot

Contact

1:1
Fully supported

erxes 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

maps to

HubSpot

Company

1:1
Fully supported

erxes 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

maps to

HubSpot

Deal

1:1
Fully supported

erxes 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

maps to

HubSpot

Owner

1:1
Fully supported

erxes 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

maps to

HubSpot

Custom property (list)

1:1
Fully supported

erxes 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

maps to

HubSpot

Engagement (Task)

1:1
Fully supported

erxes 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

maps to

HubSpot

Engagement (Note)

1:1
Fully supported

erxes 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

maps to

HubSpot

Custom Object

1:1
Fully supported

erxes 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)

maps to

HubSpot

Engagement (email, call, meeting)

1:1
Fully supported

erxes 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

maps to

HubSpot

Conversation (optional)

1:1
Fully supported

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

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.

erxes logo

erxes gotchas

High

No native bulk export in Community edition

Medium

Plugin activation state affects data visibility

Medium

Custom fields have no type enforcement during import

Low

Conversation message ordering depends on server timestamps

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

  • Pipeline stage name reconciliation required before field mapping

    erxes allows free-form pipeline stage names with no enforced character limits or naming rules. HubSpot pipeline stages are pick-list values with a 60-character name limit and restricted character set. If any erxes stage name exceeds HubSpot's limit or uses disallowed characters, the migration tool flags those stages before mapping begins. Teams must confirm a stage-name normalization plan with their HubSpot admin — either renaming in erxes before export or creating HubSpot stages with mapped values that match the intent of the original stage name.

  • Contact–company N:N collapse to primary link

    erxes supports N-to-N contact-to-company associations natively — a single contact can belong to multiple companies with different roles in each. HubSpot contacts have one primary companyId field and use the associations model for additional links. We migrate the most-recently-associated erxes company as the HubSpot primary companyId and surface all secondary companies via HubSpot's association API. Role labels on the N:N link do not transfer — they require a custom property in HubSpot if the role data needs to be preserved.

  • erxes custom fields require HubSpot property pre-creation

    erxes plugin-defined custom fields (beyond the standard contact/company/deal schema) have no automatic destination in HubSpot. We extract the full erxes custom field schema — field name, data type, and pick-list values — and deliver a HubSpot property creation checklist before the migration run. Text fields, number fields, and pick-lists map directly; date fields require ISO 8601 formatting; multi-select pick-lists need HubSpot multi-checkbox properties created in advance for each custom field identified during the audit.

  • Data type mismatches between erxes and HubSpot field types

    erxes stores some fields as JSON arrays (for example, multiple phone numbers or multiple social URLs) while HubSpot properties are single-value. Multi-value fields in erxes require a transformation rule — either concatenating into a text field, creating multiple HubSpot properties, or preserving as a JSON blob in a notes field. We document every multi-value field detected during the audit phase and present the transformation options before migration runs to ensure accurate mapping.

  • erxes integrations and third-party connections cannot migrate

    erxes integrations with external tools — billing platforms, telephony providers, marketing automation systems, and custom API connections — are built on erxes's plugin model and do not have HubSpot equivalents. Each integration requires a separate rebuild using HubSpot's App Marketplace connectors, HubSpot's API, or middleware such as Zapier or Make. We provide an integration inventory from the erxes configuration as a rebuild checklist for the client's technical team to guide implementation.

Migration approach

Six steps for a successful erxes to HubSpot data migration

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

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

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

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

Context on both ends of the pair

erxes logo

erxes

Source

Strengths

  • True open-source with MIT license gives full code access and modification rights without vendor lock-in
  • Self-hosting option on DigitalOcean, AWS, or on-premise infrastructure provides complete data residency control
  • All-in-one platform consolidating marketing, sales, operations, and customer service modules
  • Plugin-based architecture allows activating only needed functionality without paying for unused features
  • Free Community edition offers generous feature set comparable to paid SaaS CRM tiers

Weaknesses

  • Steep technical learning curve requiring GraphQL knowledge and React familiarity for deep customization
  • Limited third-party integration marketplace compared to established CRM platforms
  • Documentation gaps make self-service troubleshooting difficult outside of paid support tiers
  • Mobile application stability issues reported in user reviews with authentication failures
  • Performance can degrade with large data volumes on underpowered self-hosted deployments
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. 2 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 erxes and HubSpot.

  • Object compatibility

    B

    2 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

    erxes: Not publicly documented.

  • Data volume sensitivity

    B

    erxes doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your erxes 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 erxes to HubSpot data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most erxes to HubSpot migrations complete in 48–72 hours of clock time for under 50,000 total records. Larger setups with 500,000+ records, multiple custom objects, or more than five erxes pipelines extend the timeline to 5–7 days. The pipeline stage-name reconciliation step in the planning phase is the longest single task before data begins moving. The exact duration also depends on how many custom fields need property creation and on the availability of your HubSpot admin for final approval.

Adjacent paths

Related migrations to explore

Ready when you are

Move from erxes.
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