CRM migration

Migrate from ZeyOS to HubSpot

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

ZeyOS logo

ZeyOS

Source

HubSpot

Destination

HubSpot logo

Compatibility

100%

12 of 12

objects map 1:1 between ZeyOS and HubSpot.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ZeyOS stores contacts, companies, leads, deals, tickets, tasks, and custom objects in a unified PostgreSQL-backed platform with CRM, ERP, and groupware all in one instance. HubSpot CRM uses a separate object model — Contacts, Companies, Deals, Tickets, and custom objects — with its own property schema and association linking. The migration must translate ZeyOS's flat contact-company structure (where a contact record holds company data inline) into HubSpot's linked Contact and Company objects with an explicit Association. ZeyOS quotes, orders, and invoices carry line-item detail that has no direct HubSpot equivalent; those records migrate as custom objects with product-item association preserved as JSON or custom property blocks. Workflows, automations, document templates, reports, and ERP-side configurations (inventory, procurement, price lists) do not migrate — they require a separate rebuild plan using HubSpot automation tools and the Payments + Documents products. FlitStack AI accesses ZeyOS via its REST API (https://cloud.zeyos.com/{instance}/api/v1/) and loads HubSpot via the HubSpot REST API v3 and Bulk Upload API. Owner resolution matches ZeyOS users to HubSpot contacts by email. A delta-pickup window captures any records created or modified during the cutover window so HubSpot reflects ZeyOS's final state at go-live.

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

ZeyOS logo

ZeyOS

What's pushing teams away

  • Very limited public review presence (only 1 verified G2 review, sparse Capterra coverage) makes it hard for prospective customers to gauge long-term reliability.
  • Smaller vendor footprint compared to Odoo, NetSuite, or HubSpot raises concerns about long-term product support and roadmap stability.
  • Custom iXML scripting layer adds development overhead for teams that want standard integrations without writing custom code.

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

Each row shows how a ZeyOS 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.

ZeyOS

Contact (ZeyOS)

maps to

HubSpot

Contact (HubSpot)

1:1
Fully supported

ZeyOS contact records map 1:1 to HubSpot contacts. ZeyOS stores company name inline on the contact — we extract it, create or match a HubSpot Company record first, then link the contact to it via the primary company Association. Email uniqueness is enforced in HubSpot; duplicates are surfaced before the full migration runs.

ZeyOS

Lead (ZeyOS)

maps to

HubSpot

Lead (HubSpot)

1:1
Fully supported

ZeyOS lead records map to HubSpot leads. ZeyOS lead status values (open, converted, lost) map to HubSpot lead status properties. ZeyOS records that have been converted to contacts in ZeyOS are handled separately — we route them to HubSpot contacts rather than leads to avoid duplicates.

ZeyOS

Company (ZeyOS)

maps to

HubSpot

Company (HubSpot)

1:1
Fully supported

ZeyOS company records map 1:1 to HubSpot company records. ZeyOS stores address, industry, employee count, and revenue inline. HubSpot company properties (industry, number of employees, annual revenue) receive these directly. ZeyOS company hierarchies (parent/child) map to HubSpot's parent company field.

ZeyOS

Deal (ZeyOS)

maps to

HubSpot

Deal (HubSpot Opportunity)

1:1
Fully supported

ZeyOS deals map to HubSpot deals (internally named Opportunities). ZeyOS pipeline names become HubSpot deal pipeline names. ZeyOS deal stage values map to HubSpot deal stage values — value-by-value mapping is required because stage names differ between ZeyOS pipelines. Probability, forecast category, and stage order are preserved as HubSpot properties.

ZeyOS

Ticket (ZeyOS)

maps to

HubSpot

Ticket (HubSpot)

1:1
Fully supported

ZeyOS helpdesk tickets map directly to HubSpot support tickets. Subject, description, status, priority, type, and resolution time map to HubSpot ticket properties. ZeyOS ticket contact associations link to HubSpot ticket contacts via the contact's HubSpot ID. ZeyOS ticket-task associations are preserved as HubSpot ticket task associations.

ZeyOS

Quote / Invoice (ZeyOS)

maps to

HubSpot

Custom Object + Line Items

1:1
Fully supported

ZeyOS invoices and quotes carry line-item detail with product, quantity, price, tax, and discount — no native HubSpot equivalent exists. We migrate these as a custom ZeyOS_Invoice__c object with line items stored as a JSON property or a related custom Line_Item__c object. The rebuild path uses HubSpot's Payments product and a document template for PDF quotes.

ZeyOS

Task (ZeyOS)

maps to

HubSpot

Task (HubSpot engagement)

1:1
Fully supported

ZeyOS tasks map to HubSpot engagement tasks. Subject, due date, status, priority, and description transfer directly. ZeyOS task contacts are linked via HubSpot contact associations. ZeyOS task owner resolves against HubSpot users by email match — unmatched owners are flagged and assigned to a fallback owner before the full migration.

ZeyOS

Event / Calendar (ZeyOS)

maps to

HubSpot

Meeting (HubSpot engagement)

1:1
Fully supported

ZeyOS calendar events map to HubSpot meetings (engagement type 'meeting'). Title, start/end timestamps, body, and attendee list transfer directly. Events linked to ZeyOS contacts or deals connect via HubSpot's association model — we create the association records alongside the meeting import.

ZeyOS

File / Attachment (ZeyOS)

maps to

HubSpot

File (HubSpot)

1:1
Fully supported

ZeyOS file records (files table with binfile, filename, mimetype, size) are downloaded, re-uploaded to HubSpot's Files tool, and then attached to the corresponding HubSpot contact, company, or deal record. File URLs change in HubSpot — we document the old ZeyOS file URL in a custom property for traceability.

ZeyOS

Custom Object (ZeyOS)

maps to

HubSpot

Custom Object (HubSpot)

1:1
Fully supported

ZeyOS custom objects map 1:1 to HubSpot custom objects. HubSpot custom objects require pre-creation (name, icon, properties) before migration runs. ZeyOS custom object associations to contacts, companies, or deals translate to HubSpot association labels — we create a HubSpot association type per ZeyOS relationship if the default types do not cover the relationship semantics.

ZeyOS

User / Owner (ZeyOS)

maps to

HubSpot

User (HubSpot)

1:1
Fully supported

ZeyOS user records are not migrated as contacts. Instead, ZeyOS user email addresses are matched to existing HubSpot users by email. Any ZeyOS owner without a HubSpot user match is flagged — your team either creates HubSpot user accounts first or assigns records to a fallback owner before migration. This prevents records from landing with an unresolvable owner ID.

ZeyOS

Group / Team (ZeyOS)

maps to

HubSpot

Team (HubSpot)

1:1
Fully supported

ZeyOS groups (used for shared calendars, task assignment, and email sharing) have no direct HubSpot CRM equivalent. Group memberships are preserved in a custom property (Original_ZeyOS_Group__c) on each contact or task record for reference. Team-based reporting in HubSpot requires manual setup using HubSpot's user management.

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.

ZeyOS logo

ZeyOS gotchas

High

Audit-locked invoices block post-import edits

High

No documented bulk API forces iterative record-by-record migration

Medium

Unix epoch timestamps require explicit conversion

Medium

File attachments require binary blob download from REST API

Low

Token auth without OAuth limits automation scope

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

  • ZeyOS company-inline model creates HubSpot association churn for multi-company contacts

    ZeyOS stores company data directly on the contact record — company name, address, and industry are not separate objects. When a ZeyOS contact references multiple companies, the migration must decide which company is primary. We create HubSpot Company records for each unique ZeyOS company name, then link the contact to the primary company via HubSpot's primary company Association. Other company relationships are stored as additional company associations with a custom property (Original_ZeyOS_Company_Names__c) listing the full set so no relationship data is silently dropped. Your admin reviews and confirms the primary-company rule before the migration commits.

  • HubSpot's per-object API rate limits require batch planning for large ZeyOS exports

    HubSpot's REST API v3 enforces a rate limit of 100 requests per second. ZeyOS exports can contain tens of thousands of records across contacts, companies, deals, tickets, and custom objects. We batch create operations using HubSpot's Bulk Upload API for contacts and companies (up to 10,000 records per batch) and paginate REST API calls for deals and tickets. A 429 Too Many Requests response triggers an exponential backoff retry. We monitor the rate-limit dashboard throughout migration and adjust batch size dynamically. Large ZeyOS ERP tables (orders, invoices) that are partially migrated alongside CRM data extend the batch planning complexity — those objects require pre-created HubSpot custom objects before batch load begins.

  • ZeyOS quotes and invoices have no native HubSpot equivalent and require custom-object rebuild

    ZeyOS maintains native Quote, Order, Invoice, and Item objects with line-item detail, tax rates, and discount fields. HubSpot has no billing object — the closest built-in features are the Payments product (for capturing one-time or subscription payments) and a document template for PDF quotes. We migrate ZeyOS invoice records as a custom ZeyOS_Invoice__c object with all fields as custom properties and line items stored as a JSON block. The invoice PDF template must be rebuilt in HubSpot using a document builder. This is disclosed upfront so your team can decide whether to migrate historical invoices as reference records or rebuild the billing workflow from scratch in HubSpot Payments.

  • ZeyOS iXML workflow automations do not migrate — rebuild path is non-trivial

    ZeyOS automations run via iXML scripting — a domain-specific language embedded in the platform that evaluates conditions and triggers actions per record. There is no export of ZeyOS automations in a format that maps to HubSpot's visual workflow editor. We provide a ZeyOS automation audit: we document each ZeyOS workflow's trigger, condition, and action in plain English as a rebuild reference. Your HubSpot admin (or our team) then recreates each automation in HubSpot's workflow builder. The rebuild scope depends on how many ZeyOS workflows exist — teams with complex iXML scripts spanning lead routing, deal-stage updates, and task creation should allocate 2–4 weeks for the HubSpot workflow rebuild.

  • HubSpot marketing contact billing flag is not replicated — marketing logic must be rebuilt

    If your ZeyOS instance tracks contacts that have opted into marketing communications (a common requirement for GDPR and email compliance), that flag does not map to a native HubSpot CRM field. HubSpot's marketing contact designation is a HubSpot Marketing product feature, not a CRM property. We preserve any ZeyOS marketing opt-in flag as a custom property (Marketing_Opt_In__c) on the HubSpot contact. Rebuilt marketing logic in HubSpot uses HubSpot Lists with dynamic enrollment criteria to replicate the marketing segmentation that existed in ZeyOS. This is handled separately from the CRM migration scope.

Migration approach

Six steps for a successful ZeyOS to HubSpot data migration

  1. Discover ZeyOS schema and plan HubSpot object model

    FlitStack AI connects to your ZeyOS instance via its REST API (https://cloud.zeyos.com/{instance}/api/v1/) and audits all tables — contacts, companies, leads, deals, tickets, tasks, events, files, and any custom objects. We extract the ZeyOS data dictionary (column names, types, constraints) from the PostgreSQL schema documentation and cross-reference it with your ZeyOS instance's actual property usage. We then deliver a HubSpot schema setup plan: which HubSpot standard objects to use, which custom properties and custom objects to pre-create in HubSpot, and which ZeyOS ERP objects (invoices, orders) to migrate as custom objects or defer to a billing rebuild. Your admin creates the HubSpot schema before data extraction begins.

  2. Extract data from ZeyOS and resolve owners by email

    We extract all target objects from ZeyOS via paginated REST API queries with configurable batch sizes to respect instance performance. For each record, we capture the ZeyOS user ID in the owner field. Before migration, we export ZeyOS user emails and match them against existing HubSpot user emails. Any ZeyOS owner without a HubSpot user match is flagged — your team either creates HubSpot user accounts first or designates a fallback owner. We extract ZeyOS file records (files table) separately, download binary content, and prepare them for HubSpot re-upload. The ZeyOS instance remains fully operational during extraction; we use read-only API access.

  3. Transform data model and apply field mapping

    ZeyOS company data stored inline on contacts is split into two steps: (1) we create or match HubSpot Company records using ZeyOS company names, then (2) we create HubSpot Contact records and link each to the primary HubSpot Company via the primary company Association. ZeyOS leads with a 'converted' status route to HubSpot Contacts rather than Leads to prevent duplicates. ZeyOS deals map to HubSpot deals with pipeline-to-deal stage value mapping per ZeyOS pipeline. ZeyOS custom objects map to pre-created HubSpot custom objects. All timestamps, owner IDs, and file associations are resolved before the transformation load. We generate a field-level diff (source value vs. destination value) for a representative sample of records.

  4. Load HubSpot via bulk and REST API with sample validation

    We load HubSpot using the HubSpot Bulk Upload API for contacts and companies (up to 10,000 records per batch) and the REST API v3 for deals, tickets, tasks, meetings, and custom objects. File attachments are uploaded to HubSpot's Files tool via the Files API and then attached to the corresponding CRM records. We run a sample migration first — typically 100–500 records spanning all object types — and generate a field-level diff report. You review the diff and confirm the mapping is correct before the full load commits. Any records that fail to create (missing required fields, failed owner lookups) are flagged with error codes in the audit log.

  5. Cut over with delta pickup and audit report

    During the cutover window (typically 24–48 hours), your team continues working in ZeyOS. A delta extraction captures all ZeyOS records created or modified after the initial extraction timestamp. The delta records are transformed and loaded into HubSpot using the same mapping rules. We run a full validation pass: record counts per object, null-rate checks on required fields, owner resolution rate, and association integrity. An audit log records every operation with source record ID, destination record ID, timestamp, and operator. If reconciliation fails, one-click rollback reverts the HubSpot load. We deliver a post-migration report with record counts, error summary, and a list of ZeyOS workflow definitions (documented in plain English) for your HubSpot rebuild plan.

Platform deep dives

Context on both ends of the pair

ZeyOS logo

ZeyOS

Source

Strengths

  • Unified platform combining CRM, ERP, and Groupware under a single subscription reduces tooling sprawl.
  • Free tier for up to five users enables teams to onboard and evaluate the platform without upfront cost.
  • Open PostgreSQL schema and REST API provide direct database access for migrations and integrations.
  • Audit-proof financial transactions (quotes, orders, invoices) satisfy compliance requirements for locked records.
  • Integrated inventory management with automated stock transactions on every delivery.

Weaknesses

  • Very limited public review presence reduces ability to gauge real-world customer satisfaction and longevity.
  • Smaller market footprint compared to Odoo, NetSuite, or HubSpot raises vendor risk concerns.
  • Custom iXML scripting language creates a learning curve for teams accustomed to standard integration approaches.
  • No documented bulk API means large migrations require iterative record-by-record API calls.
  • Pricing model is primarily per-user, which can become expensive as teams scale beyond 20-30 users.
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. 3 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 ZeyOS and HubSpot.

  • Object compatibility

    B

    3 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

    ZeyOS: Not publicly documented — we apply exponential backoff on 429/5xx responses and confirm tenant-specific limits during scoping.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most ZeyOS-to-HubSpot migrations complete in 48–72 hours of clock time for under 50,000 total records across contacts, companies, deals, and tickets. Complex setups with large ERP tables (orders, invoices) being migrated as custom objects, or ZeyOS instances with multiple pipelines and extensive custom fields, extend to 5–7 days. The longest single step is mapping ZeyOS's inline company-contact model to HubSpot's linked Contact and Company objects, followed by pre-creating the HubSpot custom properties and custom objects before the load runs.

Adjacent paths

Related migrations to explore

Ready when you are

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