CRM migration
Field-level mapping, validation, and rollback between Fello and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Fello
Source
Odoo CRM
Destination
Compatibility
11 of 11
objects map 1:1 between Fello and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Fello stores contacts with AI-generated lead scores, listing-propensity ratings, and TCPA consent records tied to a CRM owner. Odoo CRM separates leads (crm.lead) from partners (res.partner), with stages managed via stage_id on the lead object and teams via team_id. We map Fello contacts to res.partner records, Fello owner assignments to Odoo sales team membership, and Fello AI scores to custom float fields on res.partner. Fello's smart workflow automations do not migrate — they require Odoo Studio or server actions to rebuild. Our migration engine reads Fello's CSV export or API payload, transforms field names and pick-list values against Odoo's ir.model.fields schema, and writes via XML-RPC in sequence: partners first, then leads with partner_id foreign keys resolved, then custom fields as x_fello_lead_score, x_tcpa_consent, x_listing_propensity, and any other custom properties Fello stores. The engine preserves Fello's real-estate AI insights across to Odoo's modular ERP ecosystem, maintaining contact intelligence through the transition.
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 Fello object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Fello
Contact
Odoo CRM
res.partner
1:1Fello contact records map directly to Odoo res.partner. The contact's name, email, phone, and address fields translate to Odoo's standard partner fields without transformation. Owner assignment requires email-based matching to res.users before the partner record is linked, ensuring the assigned agent has an Odoo user account.
Fello
Contact / Lead Record
Odoo CRM
crm.lead
1:1Fello contacts with active engagement or scoring above a defined threshold become Odoo crm.lead opportunities. The crm.lead record stores the contact's email, phone, and source; the partner_id field links back to the res.partner record created in the preceding step, maintaining referential integrity.
Fello
Fello Owner
Odoo CRM
res.users + crm.team
1:1Fello owner assignments map to Odoo res.users records matched by email address lookup. Sales-team membership comes from Odoo's crm.team model — if Fello contains team groupings, we map them to crm.team records and assign the user to team_id on the lead for proper routing.
Fello
AI Lead Score
Odoo CRM
res.partner (custom field)
1:1Fello's numeric lead score (0–100) has no native Odoo equivalent field on res.partner. We create a custom float field x_fello_lead_score via ir.model.fields and write the original source value. Odoo's native predictive lead scoring can be layered on top post-migration if Enterprise features are enabled.
Fello
TCPA Consent Record
Odoo CRM
res.partner (custom field)
1:1Fello's built-in TCPA consent flag and timestamp migrate to x_tcpa_consent (boolean) and x_tcpa_consent_date (datetime) on res.partner. Odoo has no native consent model in its CRM base module — these custom fields preserve the compliance record for reference only.
Fello
Listing Propensity Score
Odoo CRM
res.partner (custom field)
1:1Fello's proprietary listing-propensity rating (distinct from general lead score) migrates as x_listing_propensity on res.partner. This field carries Fello's real-estate AI enrichment data — a concept specific to Fello that Odoo does not natively model, requiring a custom field to preserve the value.
Fello
Contact Segment / Tag
Odoo CRM
res.partner.category_id
1:1Fello segments (e.g., 'Hot Seller', '6-Month Window') map to Odoo res.partner.category_id tag relationships. Categories are stored in res.partner.category and linked via a many2many relation — any tags without a matching Odoo category are created automatically during migration setup.
Fello
Fello Smart Workflow
Odoo CRM
Odoo Studio / server_action
1:1Fello automations including score-triggered outreach, drip sequences, and consent-based routing do not migrate as executable objects. We export workflow definitions as a JSON blueprint and provide a rebuild guide mapping Fello triggers to Odoo ir.actions.server and automated actions, giving your admin a reference to reconstruct the logic.
Fello
Fello Landing Page Data
Odoo CRM
crm.lead (source_id)
1:1Contacts created via Fello landing pages carry UTM and source metadata. This maps to crm.lead.source_id (utm.source) and crm.lead.referrer (utm.medium) — Odoo's native UTM tracking fields handle this natively without requiring additional custom field creation.
Fello
Fello Widget / Form Submission
Odoo CRM
crm.lead (description)
1:1Fello widget interactions such as home-value report requests appear as activity or note records on the contact. We append these as plaintext entries in crm.lead.description to preserve the context in the lead record, though they are not structured as separate activity or phonecall models.
Fello
Custom Property Fields
Odoo CRM
res.partner / crm.lead (custom fields)
1:1Any Fello custom properties beyond standard fields (e.g., 'last_home_value_report_date', 'listing_interest_score', 'preferred_neighborhoods') migrate as Odoo custom fields. These are created via ir.model.fields before data import begins, with field type inferred from Fello's data sample values to match Odoo's column type requirements.
| Fello | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Contact / Lead Record | crm.lead1:1 | Fully supported | |
| Fello Owner | res.users + crm.team1:1 | Fully supported | |
| AI Lead Score | res.partner (custom field)1:1 | Fully supported | |
| TCPA Consent Record | res.partner (custom field)1:1 | Fully supported | |
| Listing Propensity Score | res.partner (custom field)1:1 | Fully supported | |
| Contact Segment / Tag | res.partner.category_id1:1 | Fully supported | |
| Fello Smart Workflow | Odoo Studio / server_action1:1 | Fully supported | |
| Fello Landing Page Data | crm.lead (source_id)1:1 | Fully supported | |
| Fello Widget / Form Submission | crm.lead (description)1:1 | Fully supported | |
| Custom Property Fields | res.partner / crm.lead (custom fields)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.
Fello gotchas
No public API — all data export is CSV only
Automation workflows must be manually rebuilt
Contact export requires filtering before export job
Lead score is Fello-computed and proprietary
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Extract Fello data and inspect schema
We download the Fello contact CSV export and any supplemental data (activity logs, custom property exports) your team has access to. Our migration engine inspects the CSV headers to identify all standard and custom Fello fields. We also check for any available API endpoints Fello exposes for bulk data retrieval. The output is a field inventory document mapping each Fello column to its data type, sample values, and null frequency — used to plan Odoo custom field creation before any import runs.
Create Odoo custom fields and stage structure
Before any partner or lead records are written, our engine creates the Odoo custom fields identified in the Fello schema: x_fello_lead_score (float), x_listing_propensity (float), x_tcpa_consent (boolean), x_tcpa_consent_date (datetime), x_last_home_value_report (datetime), x_fello_id (char), and any other Fello custom properties. Simultaneously, we map Fello score tiers or deal stages to Odoo crm.stage records and create them via xmlrpc so stage_id foreign keys resolve correctly during import.
Resolve owner and team assignments
Fello owner IDs are resolved to Odoo res.users records by email address. For each unique owner email in the Fello export, we query res.users for a matching email — if no match exists, the record is assigned to the fallback user your team designates. Team assignments from Fello map to crm.team records — if a team name in Fello has no corresponding Odoo team, we create it. Owner resolution is logged so you can verify the mapping before the full run commits.
Import partners, then leads with foreign-key resolution
We write res.partner records first — Odoo's foreign-key constraints require partner records to exist before crm.lead records can reference them via partner_id. For each Fello contact, we create a partner record with all standard fields, custom fields, and category tags. After all partners are committed, we create crm.lead records for contacts that qualify as opportunities (score above threshold, deal fields present, or manually flagged). The crm.lead records reference the partner_id created in step 1 and write the resolved stage_id and user_id.
Run sample migration with field-level diff
A representative slice — typically 100–500 records spanning different segments, score tiers, and owner assignments — migrates first. We generate a field-level diff showing each source field value alongside the destination field value, highlighting any null fills, transformed values, or dropped fields. You review the diff to verify custom field mapping, stage assignment logic, and owner resolution before the full run is authorized.
Execute full migration with delta-pickup window
After sample approval, the full migration runs. A delta-pickup window (24–48 hours) captures any Fello records modified or created during the cutover window. An audit log records every create and update operation with source record ID, destination record ID, field mappings applied, and timestamp. If reconciliation finds discrepancies, a one-click rollback reverts all FlitStack-written records so the migration can be re-run with corrected mapping logic.
Platform deep dives
Fello
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Fello and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fello and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Fello and Odoo CRM.
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
Fello: Not publicly published..
Data volume sensitivity
Fello 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 Fello to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Fello to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Fello
Other ways to arrive at Odoo CRM
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.