CRM migration
Field-level mapping, validation, and rollback between Mautic and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Mautic
Source
Freshsales
Destination
Compatibility
7 of 10
objects map 1:1 between Mautic and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Mautic to Freshsales is a platform-type migration: Mautic is a marketing automation system where contacts are the primary record, while Freshsales is a sales CRM with separate Lead and Contact objects, Deal pipelines, and built-in Freddy AI for lead scoring. The structural gap that shapes every migration is the Mautic Lifecycle Stage (or points-based scoring) versus the Freshsales Lead-Contact-Account model. We resolve that split during scoping, preserve company-to-account relationships, and use direct database reads from Mautic's MySQL/MariaDB to bypass the broken v6 CSV export queue. Campaign definitions, segments, forms, and landing pages do not migrate as functional records; we deliver a written inventory of each campaign's trigger logic, filter conditions, and action sequence for your admin to rebuild using Freshsales Workflows and automation tools. Asset files and custom objects migrate as data, not as configured objects.
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 Mautic 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.
Mautic
Contact
Freshsales
Lead or Contact (lifecycle split required)
1:manyMautic Contacts map to Freshsales Lead or Contact based on the contact's lifecycle stage and activity profile. Contacts with Mautic lifecycle stages below marketing qualified lead (subscriber, lead, marketing qualified) map to Freshsales Lead. Active, sales-qualified, customer, or evangelist stages map to Freshsales Contact attached to an Account. The original Mautic lifecycle stage and point score migrate as custom fields on both Lead and Contact for audit. This split is the single most important design decision in the migration and must be confirmed with the customer's RevOps lead before any records are written.
Mautic
Company
Freshsales
Account
1:1Mautic Company records map directly to Freshsales Account. Address, industry, annual revenue, website, and phone fields map to their Freshsales equivalents. Mautic's many-to-one Contact-to-Company relationship (one contact can associate with multiple companies) requires resolution: the primary company becomes the AccountId on the Contact record, and secondary company associations are preserved in a custom text field listing additional account IDs or names for reference.
Mautic
Campaign
Freshsales
Campaign (reference data only)
1:1Mautic Campaigns are automation workflows with trigger events, conditions, and action sequences. Freshsales Campaigns are grouping labels for marketing attribution with no automation logic. We export campaign names, statuses, dates, and contact membership counts as a Campaign reference record in Freshsales. The automation logic is captured in a written campaign inventory document describing each campaign's trigger (contact action or time interval), filter conditions, and action sequence for the customer's admin to rebuild in Freshsales Workflows. This document is the primary handoff artifact for the automation rebuild scope.
Mautic
Segment
Freshsales
Static List or Dynamic View (lookup)
1:1Mautic Segments are dynamic contact lists filtered by field values, tags, and behavioral conditions. Freshsales does not replicate dynamic segment logic natively. We export segment definitions (filter criteria, tag membership, date ranges) as a written segment inventory. Where segments are small and stable, we can pre-filter and migrate the resulting contact list as a Freshsales Static List. Complex or dynamic segments require rebuilding as Freshsales Filters or Automation Rules post-migration.
Mautic
Custom Object
Freshsales
Custom Object
1:1Mautic Custom Objects extend the data model with user-defined schemas and relationship records. Freshsales supports custom fields on standard objects but Custom Object API coverage and bulk import support varies by Freshsales plan tier. We profile the source Custom Object schemas and their relationship junction tables (accessed directly from MySQL/MariaDB because the Mautic Relationships API is documented as non-functional) and map them to Freshsales custom field structures. If the destination Freshsales plan limits custom object support, we restructure the data as custom fields on the Contact or Account object and flag the constraint during scoping.
Mautic
Stage
Freshsales
Lifecycle Stage (custom field)
lossyMautic Stages define contact lifecycle positions (e.g., Lead, MQL, Customer, Evangelist). Freshsales does not have a native equivalent across all tiers. We create a custom Lifecycle_Stage__c picklist field on Contact and Lead with the same stage values, and migrate the original Mautic stage name for each record. If the customer uses Freddy AI, the custom stage field supplements the built-in predictive scoring model.
Mautic
Points
Freshsales
Custom field (numeric)
lossyMautic's points system assigns numeric scores to contacts based on actions (page visits, form submissions, email opens). Freshsales does not replicate Mautic's points engine natively. We migrate the point value as a custom numeric field lead_score__c on the Contact and Lead records. The customer can use this field in Freshsales Filters to replicate segment logic, or map it to Freddy AI scoring inputs if they configure a custom scoring model.
Mautic
Tag
Freshsales
Tag (on Contact or Lead)
1:1Mautic tags are flat string labels applied to contacts and other objects. We export all tags and reapply them during migration as tags on the Freshsales Contact or Lead record. Tag-based segmentation logic is preserved as a tag reference, with the segment inventory document capturing which tags were used in segment filter rules for rebuild in Freshsales Filters.
Mautic
Asset
Freshsales
Document (as blob reference)
1:1Mautic Assets are downloadable files (PDFs, guides, media) managed within the platform. We export asset metadata (filename, description, upload date, download count) as a reference record in Freshsales. The actual file binary is exported as a ZIP archive and delivered alongside the migration for manual re-upload to Freshsales Documents, Dropbox, or a CDN-based storage solution of the customer's choice.
Mautic
Engagement (calls, emails, meetings, tasks, notes)
Freshsales
Activity history on Contact or Lead
1:1Mautic engagement records (calls, emails, meetings, tasks, notes) are stored in activity tables linked to contact IDs. Freshsales surfaces these as activity timeline entries on the Contact or Lead record. We export engagement type, subject, body, timestamp, and disposition (for calls) and write them as Freshsales Activity records. The engagement history timeline is preserved by setting the activity date to the original Mautic timestamp. Note that Freshsales has a limit on how far back activity history is displayed in the UI timeline; very large activity histories are written as records and are queryable via reports even if UI display is paginated.
| Mautic | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (lifecycle split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Campaign | Campaign (reference data only)1:1 | Fully supported | |
| Segment | Static List or Dynamic View (lookup)1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Stage | Lifecycle Stage (custom field)lossy | Fully supported | |
| Points | Custom field (numeric)lossy | Fully supported | |
| Tag | Tag (on Contact or Lead)1:1 | Fully supported | |
| Asset | Document (as blob reference)1:1 | Fully supported | |
| Engagement (calls, emails, meetings, tasks, notes) | Activity history on Contact or Lead1: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.
Mautic gotchas
Mautic v6 CSV export silently fails to deliver files
Mautic 4 to 5 upgrade breaks plugins without warning
MySQL/MariaDB index limits throttle large contact databases
Custom Object Relationships API is non-functional
Mautic 5 to 6 migration logs no errors on failure
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and source audit
We audit the Mautic instance across version (v4, v5, or v6), custom field count, company-contact relationship cardinality, custom object schemas, campaign definitions, segment logic, and engagement volume. We connect to the Mautic MySQL/MariaDB database read-only and profile the schema: table sizes, index usage, custom field tables, and campaign junction tables. This database profiling step is required for v6 instances where the export API is broken, and it surfaces any tables approaching MySQL index limits before migration begins. The discovery output is a written migration scope covering record counts, schema map, and the Lead-Contact split rule for the customer's RevOps lead to confirm.
Schema design and Freshsales field provisioning
We pre-create the destination schema in Freshsales: custom fields on Contact, Lead, and Account matching the Mautic field names and types; lifecycle stage picklist values; point score numeric fields; tag fields; and any lookup structures for custom objects. We configure the Lead-Contact split rule based on the customer's confirmed lifecycle stage matrix. We create Freshsales users matching the Mautic owner records (matched by email) so that OwnerId references are satisfied during import. Schema is built in the customer's Freshsales production environment during a pre-agreed configuration window.
Data extraction from Mautic database
We extract data directly from the Mautic MySQL/MariaDB database in batched queries rather than relying on the Mautic REST API or CSV export. This bypasses the broken v6 export queue entirely. We extract contacts with all custom field values, companies, campaign membership records, segment filter definitions, custom object records, and engagement history (calls, emails, meetings, tasks, notes). Each extraction query chunks by contact ID ranges to avoid locking the production database during read. Extracted data is staged in a migration workspace, validated for completeness, and deduplicated against any records already migrated in a prior test run.
Transform and Lead-Contact split
We apply the customer-confirmed Lead-Contact split rule to every Mautic contact record before writing to Freshsales. Contacts above the qualification threshold (lifecycle stage, point score, or behavioral criteria set during scoping) become Freshsales Contacts attached to Accounts; contacts below the threshold become Freshsales Leads. We write the original Mautic lifecycle stage and point score into custom fields on both Lead and Contact. We resolve the Mautic many-to-one company-contact relationship by selecting the primary company per contact (based on most recent association timestamp) and writing it as the AccountId on the Contact. Secondary associations are preserved in a custom text field.
Import and bulk API write
We write data to Freshsales in dependency order: Accounts (from Companies), Contacts (with AccountId resolved), Leads (with the lifecycle split applied), then engagement history. For large engagement migrations, we use Freshsales' bulk import endpoint with chunking and batch-size tuning. Each import phase produces a row-count reconciliation report comparing source record counts to destination inserted counts, with error logs for any rejected records. We correct rejected records (typically missing required fields or format mismatches) in the transform layer and rerun the affected batch before proceeding.
Campaign inventory delivery and handoff
We deliver a written campaign automation inventory that documents every Mautic campaign's trigger, conditions, step sequence, and action outputs based on the campaign table extraction from the Mautic database. This document is the primary reference for the customer's admin to rebuild campaigns in Freshsales Workflows and automation rules. We do not rebuild Mautic campaigns as Freshsales Workflows inside the migration scope. We also deliver a segment inventory mapping each Mautic segment's filter logic to Freshsales Filter equivalents. We run a final validation comparing record counts and spot-checking 25-50 records against the source, then hand off with a one-week reconciliation window for the customer's team to verify data quality.
Platform deep dives
Mautic
Source
Strengths
Weaknesses
Freshsales
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 Mautic and Freshsales.
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
Mautic: Not publicly documented — enforced at the server level, not within Mautic software.
Data volume sensitivity
Mautic 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 Mautic to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Mautic to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Mautic
Other ways to arrive at Freshsales
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.