CRM migration

Migrate from ZeyOS to Freshsales

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

ZeyOS logo

ZeyOS

Source

Freshsales

Destination

Freshsales logo

Compatibility

78%

7 of 9

objects map 1:1 between ZeyOS and Freshsales.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from ZeyOS to Freshsales is a shift from a unified CRM-ERP-Groupware platform to a focused sales CRM. ZeyOS stores Accounts, Contacts, Leads, Items, Projects, Tasks, Tickets, and financial records across a PostgreSQL schema with a REST API that returns int8 Unix epoch timestamps. Freshsales uses a standard CRM data model: Contacts (people), Accounts (companies), Deals (opportunities), and Products, with custom fields and custom objects available for extended data. We handle the timestamp conversion from epoch to ISO 8601, resolve Account-to-Contact lookups before contact import, and map ZeyOS's inventory Items to Freshsales Products noting that stock quantities are informational rather than transactional. ZeyOS's financial pipeline (Quotes, Orders, Deliveries, Invoices) has no direct Freshsales equivalent; we import them as Deals with a custom object for line-level detail. Automation rules, scripts, and ERP workflows do not migrate; we deliver a written inventory for your admin to rebuild in Freshsales's workflow builder.

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

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How ZeyOS objects map to Freshsales

Each row shows how a ZeyOS object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

ZeyOS

Accounts

maps to

Freshsales

Accounts

1:1
Fully supported

ZeyOS Accounts are the primary company-level records linked to Contacts via a foreign key. We map them 1:1 to Freshsales Accounts, using the account name as the dedupe key. Account is created before any Contact import so that the parent-account lookup is satisfied at the moment of Contact insert. Any ZeyOS custom fields on Account (stored in extdata) map to Freshsales custom properties on the Account object.

ZeyOS

Contacts

maps to

Freshsales

Contacts

1:1
Fully supported

ZeyOS Contacts store individual person records with name, email, and extdata fields. We map them 1:1 to Freshsales Contacts, resolving the parent AccountId from the ZeyOS foreign key before insert. Email address is the standard dedupe key. Any address fields, nickname, or custom contact properties stored in ZeyOS extdata map to Freshsales custom contact fields.

ZeyOS

Leads

maps to

Freshsales

Contacts

1:many
Mapping required

ZeyOS has a distinct Leads object separate from Contacts. Freshsales uses a unified Contact model with a Lead Status property rather than a separate Lead object. We merge ZeyOS Leads into Freshsales Contacts, preserving the ZeyOS lead status value in a custom Freshsales field (e.g., zeyos_lead_status__c) for reporting. If the customer's ZeyOS Leads have a meaningful qualification stage that predates their move to a Contact, we capture it as a contact property rather than discarding it.

ZeyOS

Items

maps to

Freshsales

Products

1:1
Mapping required

ZeyOS Items represent the inventory and product catalog with barcode, model, and custom fields. We map them 1:1 to Freshsales Products, preserving product name, SKU (mapped to Freshsales product_code), and pricing information. Note that Freshsales Products are catalog entries without automated stock quantity tracking; ZeyOS's automated inventory transactions (triggered on deliveries) have no Freshsales equivalent. We flag any Items with non-zero stock quantities for customer review and document them as a custom reporting field or inventory-tracking workaround.

ZeyOS

Tickets

maps to

Freshsales

Cases

1:1
Fully supported

ZeyOS Tickets are the helpdesk object with email integration and subject-line ticket-number association. We map them to Freshsales Cases (available on the Growth and higher tiers) or to a custom Freshsales object if the destination is on the Free plan. Conversations, attachments, and custom ticket fields migrate to the corresponding Case fields and activity timeline. Ticket status from ZeyOS maps to a custom Case status field.

ZeyOS

Users

maps to

Freshsales

Users

1:1
Fully supported

ZeyOS Users represent team members who own records, create files, and track time. We map them to Freshsales Users (sales reps and admins), resolving by email match. Any ZeyOS User without a matching Freshsales User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive ZeyOS users are flagged for post-migration deactivation review.

ZeyOS

Activities

maps to

Freshsales

Activities

1:1
Fully supported

ZeyOS Activities capture engagements (calls, emails, meetings, notes) linked to Accounts or Contacts. We map them to Freshsales Activities with the Who (Contact) and What (Account) references resolved from the migrated records. Timestamps stored as int8 Unix epoch in ZeyOS are converted to ISO 8601 datetime strings before insert into Freshsales. Activity type (call, email, meeting, note) maps to the corresponding Freshsales activity type.

ZeyOS

Documents

maps to

Freshsales

Attachments (on Contacts/Accounts/Cases)

1:1
Mapping required

ZeyOS files stored in the files table with binary blobs in the binfile column are exported via the REST API individually and re-uploaded as attachments to the corresponding Freshsales Contact, Account, or Case record. Files exceeding 25MB are flagged for customer review before import. The file name and MIME type are preserved; any non-standard MIME types receive manual handling.

ZeyOS

Custom Fields (extdata pattern)

maps to

Freshsales

Custom Properties

lossy
Fully supported

ZeyOS exposes custom fields via the fields table and the extdata JSON pattern in the REST API. We read each field definition, identify its data type, and map it to the equivalent Freshsales custom property type (text, number, date, picklist, or checkbox). Custom field mapping is validated against Freshsales's property type constraints before import. Any ZeyOS custom fields without a Freshsales equivalent are flagged for customer review.

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

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • ZeyOS leads become contacts without a separate lead object

    Freshsales does not have a separate Lead object; all person records live as Contacts with a Lead Status property. ZeyOS distinguishes Leads from Contacts as separate CRM objects. We merge ZeyOS Leads into Freshsales Contacts and preserve the ZeyOS lead status in a custom property for reporting, but there is no native Lead record type in Freshsales. If the customer relies on a separate lead queue with routing logic in ZeyOS, that structure must be reimplemented as a Freshsales workflow or a Smart View rather than preserved as a native object.

  • Financial pipeline has no native Freshsales equivalent

    ZeyOS's Quotes, Orders, Deliveries, and Invoices form a complete billing pipeline with audit-locked invoice immutability. Freshsales has Deals as opportunity records but no native Quotes, Orders, Deliveries, or Invoices objects. We import ZeyOS's financial records as Deals with line-item detail preserved in a custom Freshsales object, and we document the mapping for the customer's admin. Any audit-locked invoice state from ZeyOS cannot be enforced in Freshsales because Freshsales does not support record immutability flags. The customer must decide whether to carry financial history as Deals with custom objects or to manage billing in a separate accounting tool post-migration.

  • Inventory stock quantities do not transfer as transactional records

    ZeyOS Items include automated stock quantity tracking with transactions triggered on deliveries and purchase orders. Freshsales Products are catalog records with pricing information only; there is no native inventory management or stock transaction log. We import Items as Products and flag any Items with non-zero stock quantities as a customer advisory for manual reconciliation or a third-party inventory management integration.

  • Unix epoch timestamps require explicit conversion to ISO 8601

    ZeyOS stores creationdate, moddate, and other timestamp columns as int8 Unix epoch values (seconds since 1970-01-01). Freshsales expects ISO 8601 datetime strings in all API fields and UI displays. We explicitly convert every epoch value during the export transform, validate that each timestamp falls within Freshsales's supported date range, and flag any records with timestamps outside the valid range for customer review before import.

  • No bulk API in ZeyOS limits migration throughput

    ZeyOS exposes only a REST API with no documented bulk import or batch endpoint. We paginate through ZeyOS records using per-call pagination (typically 25-100 records per page depending on the endpoint) and insert records individually into Freshsales. For large migrations (over 50,000 records), this iterative approach extends the migration timeline. We parallelize insert operations against the Freshsales API within rate-limit constraints and implement exponential backoff on 429 responses from both systems.

Migration approach

Six steps for a successful ZeyOS to Freshsales data migration

  1. Discovery and scope definition

    We audit the source ZeyOS instance across Accounts, Contacts, Leads, Items, Tickets, Activities, Documents, and any financial records (Quotes, Orders, Invoices). We identify custom fields via the fields table and extdata patterns, count file attachment sizes, and assess the total record volume. We pair this with a Freshsales plan review to confirm which tier (Free, Growth, Pro, Enterprise) supports the required objects and custom field limits. The discovery output is a written migration scope, a ZeyOS-to-Freshsales object map, and a custom-field inventory.

  2. Schema design and custom field deployment

    We design the destination schema in Freshsales. This includes creating all custom properties on Contacts, Accounts, Deals, Cases, and Products to receive migrated ZeyOS data. If the ZeyOS financial pipeline (Quotes, Orders, Invoices) requires a custom object for line-item detail, we pre-create that custom object schema before any data import. We also configure the ZeyOS lead status mapping as a custom contact property and define the merge rule for ZeyOS Leads into Freshsales Contacts. All schema changes are deployed into the Freshsales instance before migration begins.

  3. Owner reconciliation and user provisioning

    We extract every distinct ZeyOS User referenced on Accounts, Contacts, Tickets, and Activity records and match by email against the Freshsales destination's User list. Users without a matching Freshsales User go to a reconciliation queue. The customer's admin provisions any missing Freshsales Users (active or inactive depending on whether the original ZeyOS user is still active). Owner references must be resolved before any record import proceeds because Freshsales enforces valid user lookups on standard object inserts.

  4. Record migration in dependency order

    We run migration in strict dependency order: Accounts first (parent records), then Contacts (with AccountId resolved), Deals (with AccountId and OwnerId resolved), Items mapped to Products, Cases from Tickets, and Activities last with WhoId and WhatId resolved against the migrated Contact and Account records. File attachments are downloaded from ZeyOS as binary blobs and re-uploaded to Freshsales as record attachments after the parent record is confirmed in Freshsales. Financial records (Quotes, Orders, Invoices) are imported as Deals with a custom object for line items after all primary CRM objects are validated.

  5. Sandbox validation and reconciliation

    We run a full migration into the customer's Freshsales instance using the production ZeyOS data volume, validate record counts at each phase (Accounts in, Contacts in, Deals in, Cases in, Activities in), and spot-check 25-50 records against the ZeyOS source for field-level accuracy. Any timestamp conversion errors, missing custom field values, or orphaned child records are corrected in the migration script before production migration. The customer signs off on the validation report before cutover.

  6. Cutover and post-migration handoff

    We freeze writes to ZeyOS during the cutover window, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver a written inventory of any ZeyOS automations, iXML scripts, and ERP workflows that do not migrate, with a rebuild recommendation for Freshsales workflows. We support a one-week hypercare window for reconciliation issues. We do not rebuild ZeyOS automations or scripts as Freshsales workflows as part of the standard migration scope.

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.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

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

  • 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 Freshsales 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 Freshsales data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 10,000 Contacts and 2,000 Deals with no custom objects or financial pipeline mapping. Migrations with ZeyOS's financial objects (Quotes, Orders, Invoices), large activity histories (over 200,000 records), or inventory Items requiring a custom Products strategy move to seven to eleven weeks because of custom object schema design and the iterative record-by-record ZeyOS API throughput.

Adjacent paths

Related migrations to explore

Ready when you are

Move from ZeyOS.
Land in Freshsales, 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