CRM migration
Field-level mapping, validation, and rollback between VBOUT and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
VBOUT
Source
Odoo CRM
Destination
Compatibility
10 of 14
objects map 1:1 between VBOUT and Odoo CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
VBOUT and Odoo CRM serve different primary roles: VBOUT is a marketing automation platform organized around Contacts, Smart Audiences, and Lead Scores, while Odoo CRM is an ERP-adjacent sales tool using crm.lead for prospects and res.partner for customers and companies. The primary migration challenge is the schema split: VBOUT stores all records as Contacts with a Lead Score and Tags for pipeline stage context; Odoo separates prospects into crm.lead records from customers and companies in res.partner. We apply a tagging and scoring rule at migration time to route records correctly, preserve the original lead score as a custom field, and transfer tags as Odoo tags for segmentation continuity. Automation workflows, landing pages, and email campaign templates do not migrate as functional assets; we deliver structured JSON artifacts and written rebuild guides for your admin team. We sequence the migration against VBOUT's 15 req/sec API rate limit with chunking and backoff, and load data into Odoo via its XML-RPC API respecting the 60 req/min ceiling.
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 VBOUT 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.
VBOUT
Contact
Odoo CRM
res.partner
1:1VBOUT Contacts with CRM type = Customer map to Odoo res.partner with partner_type = contact. Standard fields (name, email, phone, address) migrate directly. We apply a deduplication check on email before insert using Odoo's dedupe_criteria = email. Unlimited contacts on VBOUT translate directly; Odoo has no per-contact pricing cap, removing a migration blocker that VBOUT customers on Free and Starter tiers frequently encounter.
VBOUT
Contact (marketing)
Odoo CRM
crm.lead
1:manyVBOUT Contacts with no purchase history, no closed deal, or CRM type = Lead map to Odoo crm.lead as Prospects. We apply a routing rule during scoping based on the customer's VBOUT CRM type field and lead score threshold. Lead score from VBOUT (hs_lead_score or equivalent custom field) migrates to a custom integer field on crm.lead. The original lifecycle stage or lead source from VBOUT is preserved in a custom Char field for audit and reporting continuity.
VBOUT
Company
Odoo CRM
res.partner (company type)
1:1VBOUT Companies map to Odoo res.partner with is_company = True and partner_type = contact. VBOUT's company domain, industry, and annual revenue map to Odoo partner fields website, industry_id, and annual_revenue. Companies are loaded before Contacts so that the parent_id reference is resolved at the moment of Contact insert, satisfying Odoo's commercial partner requirement.
VBOUT
Lead
Odoo CRM
crm.lead
1:1VBOUT Leads (distinct from Contacts in VBOUT's soft CRM model) map directly to Odoo crm.lead. Lead score, source attribution (utm_source, utm_medium), and assignment data migrate to crm.lead fields priority, source_id, and user_id. Any tag assignments on VBOUT Leads are transferred as Odoo tag records linked to the crm.lead.
VBOUT
Tag
Odoo CRM
crm.tag
lossyVBOUT Tags migrate to Odoo crm.tag records. Tags serve multiple roles in VBOUT: pipeline stage encoding, segment classification, and lead source marking. We preserve all tag values and reapply them during the Contact-to-partner and Contact-to-lead migration. Tag-to-Lead routing logic is documented as a written rule set for the customer to implement in Odoo's lead routing or automated actions if needed.
VBOUT
Pipeline Stage
Odoo CRM
crm.stage
lossyVBOUT pipeline stages stored as Tags on Contacts map to Odoo crm.stage records. We create one stage set per VBOUT pipeline and configure stage sequence order, name, and fold status in Odoo. Stage probability percentages from VBOUT are set on the corresponding Odoo stage record. Odoo's Kanban view automatically renders the migrated stages with the original order and grouping.
VBOUT
Smart Audience
Odoo CRM
crm.tag or ir.filters
1:1VBOUT Smart Audiences are dynamic segmented lists with behavioral and demographic filter rules. Odoo has no native Smart Audience equivalent. We export the segmentation rule logic as a structured JSON artifact, including filter conditions, time-based criteria, and audience count at migration time. The customer uses this to recreate audiences manually as Odoo tags (for static segments) or saved ir.filters (for dynamic searches). This is a written handoff, not an automated migration.
VBOUT
Custom Fields
Odoo CRM
ir.model.fields (custom)
lossyVBOUT custom fields on Contacts and Leads require Odoo Studio field creation before import. Dropdown-type custom fields in VBOUT map to Odoo selection fields with equivalent option lists. Conditional and payment field types in VBOUT have no direct Odoo equivalent and are flagged during scoping for either custom field type selection or post-migration manual entry. We pre-create all destination fields in the Odoo test database during the sandbox phase before any data loads.
VBOUT
Email Campaign
Odoo CRM
crm.lead (tagged) or document
1:1VBOUT email campaign history (campaign name, subject, send date, open/click metrics) migrates as tagged crm.lead records with a custom Char field crm_lead_campaign__c storing the original campaign name. Send volume statistics are stored as custom Float fields for reporting. The actual email template body cannot be transferred from VBOUT's editor; we export campaign metadata as a CSV artifact and the customer rebuilds templates in Odoo's email composer if needed.
VBOUT
Automation Workflow
Odoo CRM
document (JSON artifact)
1:1VBOUT automation workflows are stored in a proprietary JSON schema tied to its trigger-action builder. This schema is not portable to Odoo Actions. We export the full workflow definition (triggers, conditions, delays, actions, branch logic) as a structured JSON file and produce a step-by-step written rebuild guide mapped to Odoo Studio Actions. The customer or an Odoo partner rebuilds each workflow post-migration.
VBOUT
Landing Page
Odoo CRM
website.page (metadata artifact)
1:1VBOUT landing pages are stored as VBOUT-specific page definitions with drag-and-drop layouts that cannot transfer to Odoo Website. We export page metadata (URL slug, form field configurations, redirect rules, traffic source tags) as a structured document. The customer rebuilds landing pages in Odoo Website using the exported field list and redirect configuration as a specification.
VBOUT
Form
Odoo CRM
ir.model.fields (form field definitions)
1:1VBOUT form definitions (field names, types, conditional logic, and submission rules) export cleanly as structured data. Standard and multi-step form field definitions migrate to Odoo as documentation artifacts for rebuilding in Odoo Website or CRM form views. Payment form submissions migrate as tagged lead records with transaction metadata; payment processing requires reconfiguration with an Odoo-compatible payment provider (Stripe, PayPal, or Odoo's payment acquirer).
VBOUT
Engagement: Calls, Emails, Meetings, Tasks
Odoo CRM
crm.lead (activity log)
1:1VBOUT engagement history (calls, emails, meetings, tasks) is preserved as Odoo mail.message records or crm.lead note entries, depending on the engagement type and Odoo configuration. We tag the parent crm.lead with the campaign name, date, and engagement type, and store open/click data as custom fields. This preserves the activity timeline at the record level but does not produce native Odoo call or meeting records with attendee linking.
VBOUT
Dashboard Reports
Odoo CRM
document (data artifact)
1:1VBOUT dashboards are UI-native visualizations that cannot be exported or transferred. We export the underlying raw data sources (email open rates, form submission counts, lead activity counts, campaign performance) as CSV files so the customer can rebuild equivalent reports in Odoo Pivot and Graph views. The dashboard layout and chart configurations require manual rebuild in Odoo.
| VBOUT | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Contact (marketing) | crm.lead1:many | Fully supported | |
| Company | res.partner (company type)1:1 | Fully supported | |
| Lead | crm.lead1:1 | Fully supported | |
| Tag | crm.taglossy | Fully supported | |
| Pipeline Stage | crm.stagelossy | Fully supported | |
| Smart Audience | crm.tag or ir.filters1:1 | Fully supported | |
| Custom Fields | ir.model.fields (custom)lossy | Mapping required | |
| Email Campaign | crm.lead (tagged) or document1:1 | Fully supported | |
| Automation Workflow | document (JSON artifact)1:1 | Fully supported | |
| Landing Page | website.page (metadata artifact)1:1 | Fully supported | |
| Form | ir.model.fields (form field definitions)1:1 | Fully supported | |
| Engagement: Calls, Emails, Meetings, Tasks | crm.lead (activity log)1:1 | Fully supported | |
| Dashboard Reports | document (data artifact)1:1 | Not 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.
VBOUT gotchas
Email send volume is tier-gated, not contact-gated
Automation workflows are not cross-platform portable
API rate limit of 15 req/sec forces migration chunking
Dashboard reports are UI-native and not exportable
Calendar booking does not sync to external calendars
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
Discovery and migration scoping
We audit the VBOUT portal across all plans (Free through Enterprise) for contact volume, custom field definitions, tag usage for pipeline stages, active automation workflows, email campaign history, and smart audience rules. We pair this with an Odoo configuration review: is CRM already installed, are there existing custom fields or stage configurations, and is the destination a fresh install or a populated database. The discovery output is a written scope document with the routing rule, field mapping table, and a list of VBOUT objects that will migrate as data versus artifacts requiring manual rebuild.
Sandbox schema setup and field mapping
We deploy the migration into an Odoo test database (sandbox or Odoo.sh staging branch). We create all custom fields using Odoo Studio, configure the crm.lead stage pipeline to match VBOUT's pipeline structure, and create crm.tag records for every VBOUT tag used in pipeline stage encoding. Custom field type mapping decisions are documented here: dropdown fields become Odoo selection fields, conditional fields are flagged for Python computed field logic, and payment fields are marked for post-migration payment provider reconfiguration. The customer validates the sandbox schema before production migration begins.
Sandbox migration and reconciliation
We run a full migration into the sandbox using production-equivalent data volume. The customer reconciles record counts (Contacts mapped to res.partner, Contacts mapped to crm.lead, Companies mapped to res.partner, Leads mapped to crm.lead), spot-checks 25-50 records against the VBOUT source, and validates that tags and lead scores are correctly applied. Any routing rule corrections, field mapping errors, or stage configuration adjustments are resolved here. No production data is touched until sandbox sign-off is received in writing.
Production migration in dependency order
We run production migration in strict record-dependency order: res.partner (Companies first, then Contacts as children), crm.lead (Leads and marketing Contacts), crm.tag records, crm.stage configuration, custom field values, email campaign metadata as tagged lead custom fields, engagement history as mail.message records, and automation workflow JSON artifacts last. Each phase emits a reconciliation row-count report before the next phase begins. We implement exponential backoff against VBOUT's 15 req/sec rate limit throughout the extraction phase.
Automation and template artifact delivery
We deliver the automation workflow JSON artifacts and written rebuild guides as a separate document package at cutover. This package includes every VBOUT automation with its trigger, conditions, delays, actions, and branch logic mapped to Odoo Studio Action equivalents. Email campaign metadata (campaign name, subject, send date, open/click data) is delivered as a CSV for the customer to use when rebuilding templates in Odoo's email composer. We do not rebuild automations or templates as part of the migration scope.
Cutover, delta sync, and post-migration handoff
We freeze VBOUT writes during cutover, run a final delta migration of any records created or modified in the final 48 hours of the migration window, then hand off Odoo as the system of record. We support a one-week hypercare window for data reconciliation issues. We do not provide post-migration admin support, training, or workflow rebuild as part of standard scope; these are separate engagements. The automation rebuild guides and campaign metadata package are delivered at this point for the customer's Odoo admin or partner to execute.
Platform deep dives
VBOUT
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 VBOUT and Odoo CRM.
Object compatibility
1 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
VBOUT: 15 requests per second per org; HTTP 429 on breach with exponential backoff required.
Data volume sensitivity
VBOUT 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 VBOUT to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your VBOUT 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 VBOUT
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.