CRM migration
Field-level mapping, validation, and rollback between Checkbox and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Checkbox
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Checkbox and Odoo CRM.
Complexity
BStandard
Timeline
2–5 days
Overview
Checkbox is a no-code service automation platform used primarily by legal and enterprise teams for intake request management, workflow routing, and compliance-driven form logic. It is not a traditional CRM — its data model centers on form submissions, workflow instances, and custom form fields rather than leads, opportunities, and sales pipelines. Odoo CRM is an open-source ERP module where leads and opportunities share the crm.lead model, contacts live in res.partner, and pipeline stages are configurable per sales team. The migration challenge is translating Checkbox's intake-form data into Odoo's lead-opportunity model while preserving submission metadata, file attachments, and owner assignments. FlitStack AI extracts Checkbox data via the platform's export and API interfaces, transforms submission records into crm.lead entries with custom fields for form response data, and sequences the migration so res.partner records are created before crm.lead records (since Odoo links leads to contacts via partner_id). Checkbox workflows, routing rules, and conditional logic do not transfer — they are built on form-engine semantics with no Odoo equivalent and must be rebuilt using Odoo's action rules, server actions, and automated activities after migration. The migration carries all standard data: contacts, submission records, custom fields, files, and owner resolution by email match against Odoo users.
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 Checkbox 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.
Checkbox
Contact / Form Respondent
Odoo CRM
res.partner
1:1Checkbox contact profiles (respondent name, email, phone) map directly to Odoo res.partner records. Email address is the primary key for de-duplication. If Checkbox stores a respondent without a company, res.partner is created as an individual contact with no parent_id. Additional fields such as job title, street, city, and website are transferred when present, ensuring the Odoo partner record reflects the full respondent profile.
Checkbox
Company (associated with submission)
Odoo CRM
res.partner (company type)
1:1Checkbox company records associated with a submission map to res.partner with is_company=True. Parent-child company hierarchies in Checkbox translate to parent_id on res.partner in Odoo. Multi-company associations on a single contact are resolved to a primary partner_id with others stored as contact relations.
Checkbox
Form / Intake Workflow
Odoo CRM
crm.lead (as Opportunity)
1:1Checkbox intake form submissions translate to Odoo crm.lead records with type='opportunity'. Each distinct Checkbox form becomes a separate Odoo pipeline or a named tag on crm.lead so teams can filter by originating intake workflow. The submission's status field in Checkbox maps to the crm.lead stage_id.
Checkbox
Submission Metadata
Odoo CRM
Custom fields on crm.lead
1:1Each Checkbox form field becomes an Odoo custom field on crm.lead (x_checkbox_field_name). Field type is preserved: text fields map to char/text, date fields to date, pick-list fields to selection. Original submission ID is stored as x_checkbox_submission_id for traceability. The naming convention (x_checkbox_) avoids conflicts with standard Odoo fields. Required Checkbox fields are set as required=True in Odoo, and help text is copied to the custom field description for user guidance.
Checkbox
Submission Date / Timestamp
Odoo CRM
Custom datetime field on crm.lead
1:1Odoo's create_date on crm.lead reflects the migration date, not the original Checkbox submission date. FlitStack preserves the original submission timestamp as x_checkbox_submission_date so reporting shows the correct historical timeline. This ensures that Odoo dashboards, activity deadlines, and scheduled actions based on date criteria use the actual intake date rather than the migration import date. The custom field is indexed for fast filtering and used in all standard Odoo reports.
Checkbox
Checkbox User / Owner
Odoo CRM
res.users (mapped by email)
1:1Checkbox user assignments on submissions are resolved by email match against Odoo res.users. Unmatched owners are flagged before migration for team assignment to a fallback Odoo user. No submission lands in Odoo without an assigned user_id on the crm.lead. If multiple Odoo users share the same email (e.g., aliases), the primary user is selected, and the alias mapping is recorded for future reference.
Checkbox
Checkbox Review / Approval Step
Odoo CRM
mail.message / note on crm.lead
1:1Approval comments and review notes from Checkbox workflows migrate as mail.message records on the crm.lead in Odoo, preserving the original reviewer name, timestamp, and comment text. This maintains the full audit trail of the intake review process. The mail.message records also retain any attachments linked to the review, ensuring that supporting documents are accessible directly from the Odoo lead chatter.
Checkbox
File Attachment (on submission)
Odoo CRM
ir.attachment (linked to crm.lead or res.partner)
1:1Checkbox file attachments are downloaded and re-uploaded to Odoo as ir.attachment records linked to the target crm.lead or res.partner. Odoo's 25MB per-file limit applies; files exceeding this are flagged for chunked upload or alternative storage before migration. During re-upload, the original file name and MIME type are preserved in the ir.attachment's name and mimetype fields, and the attachment's res_model and res_id are set to reference the correct Odoo record.
Checkbox
Custom Form Object
Odoo CRM
Custom ir.model record
1:1Checkbox custom form objects that have no direct Odoo CRM equivalent are created as custom Odoo models via Studio or Python module, then linked to crm.lead via a many2one field. The migration plan identifies these during the assessment phase. These custom models include fields for each data element captured in the Checkbox form, and they are registered in the Odoo registry to ensure proper data integrity during the migration run.
Checkbox
Checkbox Integration Connection
Odoo CRM
Not migratable
1:1Checkbox integrations with Slack, Salesforce, Ironclad, or other third-party tools do not transfer. They must be reconfigured in Odoo using Odoo's native connectors, webhooks, or the Odoo App Store integrations. FlitStack documents each integration for manual rebuild. Each documented integration includes the original trigger conditions, payload structure, and recommended Odoo configuration steps to streamline the rebuild process.
| Checkbox | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact / Form Respondent | res.partner1:1 | Fully supported | |
| Company (associated with submission) | res.partner (company type)1:1 | Fully supported | |
| Form / Intake Workflow | crm.lead (as Opportunity)1:1 | Fully supported | |
| Submission Metadata | Custom fields on crm.lead1:1 | Fully supported | |
| Submission Date / Timestamp | Custom datetime field on crm.lead1:1 | Fully supported | |
| Checkbox User / Owner | res.users (mapped by email)1:1 | Fully supported | |
| Checkbox Review / Approval Step | mail.message / note on crm.lead1:1 | Fully supported | |
| File Attachment (on submission) | ir.attachment (linked to crm.lead or res.partner)1:1 | Fully supported | |
| Custom Form Object | Custom ir.model record1:1 | Fully supported | |
| Checkbox Integration Connection | Not migratable1: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.
Checkbox gotchas
Workflow JSON is not portable across platforms
API capabilities are not publicly documented
Integration tokens and OAuth connections cannot be migrated
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
Assess Checkbox setup and Odoo target configuration
FlitStack AI audits the Checkbox account: lists all active intake forms, workflow definitions, custom field configurations, user assignments, and file attachment volumes. We identify the API access tier (Custom Plan vs. CSV-only) and determine the export method. Simultaneously, we assess the target Odoo database: existing crm.lead custom fields, pipeline stages per team, res.users list for owner matching, and installed modules that affect data model (Partner Relations, Studio). The assessment delivers a schema setup plan for Odoo and a field mapping specification for every Checkbox form.
Pre-create Odoo custom fields for submission data
Before data moves, Odoo administrators (guided by FlitStack's schema plan) create the custom fields on crm.lead that correspond to Checkbox form fields. Field type mapping is type-aware: text fields become char/text, date fields become date, pick-list fields become selection, and file upload fields trigger attachment handling logic. Pipeline stages in Odoo are configured to match Checkbox submission statuses. This step ensures Odoo's schema can accept every data point from Checkbox without truncation or type errors during the migration run.
Resolve owners by email match and create res.partner records
FlitStack AI resolves Checkbox user assignments by matching each owner's email address against Odoo res.users. Matched users become the user_id on the target crm.lead. Unmatched owners are flagged in a pre-migration report — the team either invites them to Odoo first or assigns their submissions to a designated fallback user. All res.partner records (contacts and companies) are created before crm.lead records, ensuring that partner_id foreign keys resolve correctly on every opportunity. This sequence respects Odoo's data integrity constraints.
Run sample migration with field-level diff
A representative slice migrates first — typically 100–300 records spanning multiple Checkbox forms, with varied submission statuses and a mix of contacts with and without company associations. FlitStack AI generates a field-level diff comparing every Checkbox source field against the corresponding Odoo destination field, including custom field values and attachment presence. You verify the submission-to-lead transformation, stage mapping, owner assignment, and file re-upload before the full run commits. Sample migration results are delivered as a structured report with record-level pass/fail indicators.
Execute full migration with delta-pickup and rollback
The full migration runs: Checkbox contacts and companies create res.partner records, Checkbox submissions create crm.lead records with custom field values, file attachments re-upload to ir.attachment, and review comments land as mail.message records. A delta-pickup window (24–48 hours) runs after the full migration to capture any Checkbox submissions created or modified during the cutover window. The FlitStack audit log records every operation. If reconciliation fails — missing records, incorrect stage mapping, or owner resolution errors — one-click rollback reverts the Odoo database to its pre-migration state so the issue can be addressed and the run repeated.
Platform deep dives
Checkbox
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 Checkbox 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
Checkbox: Not publicly documented.
Data volume sensitivity
Checkbox 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 Checkbox to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Checkbox 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 Checkbox
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.