CRM migration

Migrate from Checkbox to Odoo CRM

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

Checkbox logo

Checkbox

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Checkbox and Odoo CRM.

Complexity

BStandard

Timeline

2–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Checkbox logo

Checkbox

What's pushing teams away

  • Advanced customization for complex, multi-branch workflows requires deeper technical understanding, leading some teams to outgrow the no-code builder and seek more flexible alternatives.
  • As legal teams scale workflows across jurisdictions or business units, the platform's simplicity can become a constraint when trying to express nuanced conditional logic.
  • Some users report that while the platform is intuitive for basic automations, more tailored use cases require additional support or developer involvement.
  • Pricing is opaque and requires direct sales engagement for enterprise tiers, which creates friction for teams evaluating migration or trying to budget accurately.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Checkbox objects map to Odoo CRM

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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Checkbox 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)

maps to

Odoo CRM

res.partner (company type)

1:1
Fully supported

Checkbox 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

maps to

Odoo CRM

crm.lead (as Opportunity)

1:1
Fully supported

Checkbox 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

maps to

Odoo CRM

Custom fields on crm.lead

1:1
Fully supported

Each 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

maps to

Odoo CRM

Custom datetime field on crm.lead

1:1
Fully supported

Odoo'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

maps to

Odoo CRM

res.users (mapped by email)

1:1
Fully supported

Checkbox 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

maps to

Odoo CRM

mail.message / note on crm.lead

1:1
Fully supported

Approval 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)

maps to

Odoo CRM

ir.attachment (linked to crm.lead or res.partner)

1:1
Fully supported

Checkbox 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

maps to

Odoo CRM

Custom ir.model record

1:1
Fully supported

Checkbox 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

maps to

Odoo CRM

Not migratable

1:1
Fully supported

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

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.

Checkbox logo

Checkbox gotchas

High

Workflow JSON is not portable across platforms

Medium

API capabilities are not publicly documented

Medium

Integration tokens and OAuth connections cannot be migrated

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Checkbox workflows and routing logic have no Odoo equivalent — they must be rebuilt

    Checkbox intake workflows use form-condition semantics: branching logic, approval chains, and conditional routing based on field values. Odoo automations (Server Actions, Automated Actions) are triggered by record on-write and on-create events — they do not share Checkbox's form-engine execution model. A Checkbox workflow that routes a legal intake request based on contract value cannot be represented as an Odoo Server Action without re-engineering the business logic. FlitStack AI documents every Checkbox workflow definition during the assessment phase and delivers a rebuild reference for Odoo's automation tools. This work is outside the data migration scope.

  • Checkbox submission records require custom field proliferation on crm.lead

    Odoo's crm.lead model has a fixed set of standard fields (name, partner_id, stage_id, user_id, date_closed, probability, expected_revenue). Every Checkbox form field that captures response data — contract value, jurisdiction, request type, SLA tier — requires a corresponding custom field on crm.lead (x_checkbox_*) created via Odoo Studio or Python module. Teams with 20+ form fields per Checkbox intake workflow face significant Odoo schema setup effort before data can land. FlitStack AI generates the custom field creation plan alongside the migration so Odoo administrators can pre-create the fields before the migration run.

  • Checkbox API access requires Custom Plan — affects export method

    Checkbox's External API (required for programmatic data extraction) is only available on the Custom Plan. Teams on lower Checkbox plans must export via CSV, which flattens multi-select fields and may drop file attachment references. FlitStack AI uses the Checkbox External API (XML-RPC) when available, preserving field types and attachment links. For CSV-only accounts, data cleansing is required before import into Odoo, particularly for checkbox-multiselect fields that export as comma-separated strings requiring transformation to Odoo tags or many2many fields.

  • Checkbox multi-company associations collapse to primary partner_id in Odoo

    Checkbox allows a single submission or contact to be associated with multiple companies simultaneously. Odoo's res.partner model treats a partner as either a company (is_company=True) or an individual contact with a single parent_id pointing to the primary company. Secondary company associations in Checkbox cannot map to a second parent_id — they are stored as res.partner relation records in Odoo's contact relationships table (res.partner.relation) using the Odoo Partner Relations module. If the team does not have this module installed, secondary company associations are captured as tags on the crm.lead for reference.

  • Checkbox submission timestamps must be preserved as custom datetime fields

    Odoo's crm.lead.create_date is set when the record is inserted during migration — it cannot be backdated to the original Checkbox submission date via standard Odoo APIs. Reports and Odoo activities based on create_date will show the migration date, not the original intake date. FlitStack AI stores the original Checkbox submission date as x_checkbox_submission_date (custom datetime) and x_checkbox_submission_datetime for timestamp precision. Dashboards and reporting in Odoo must reference this custom field for date-based filtering to reflect the original submission timeline.

Migration approach

Six steps for a successful Checkbox to Odoo CRM data migration

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

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

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

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

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

Context on both ends of the pair

Checkbox logo

Checkbox

Source

Strengths

  • No-code workflow builder accessible to non-technical legal operations staff without coding experience
  • Certified compliance posture with SOC 2, ISO 27001, ISO 27017, and ISO 27018 for enterprise legal environments
  • Pre-built integrations with Slack, Salesforce, Ironclad, and email systems commonly used in legal departments
  • AI-augmented features including chatbots and document generation available on higher plans
  • Flexible intake form builder with support for custom fields and multi-step approval routing

Weaknesses

  • Workflow definitions are not exportable and must be manually rebuilt at the destination, as the logic lives in a proprietary JSON structure
  • API documentation and capabilities are not publicly detailed, limiting migration tooling options
  • Pricing requires direct sales contact for enterprise tiers, with no self-serve quote available
  • Customization options become more limited as workflow complexity increases beyond basic branching
  • No bulk data export tool visible in the product UI, making large-volume migrations dependent on API access
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Checkbox and Odoo CRM.

  • Object compatibility

    B

    1 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

    Checkbox: Not publicly documented.

  • Data volume sensitivity

    B

    Checkbox doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Checkbox to Odoo CRM 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 Checkbox to Odoo CRM data migrations

Answers to the questions buyers ask most during Checkbox to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Checkbox to Odoo CRM migrations complete in 2–5 days of clock time for under 50,000 records. The longest planning step is pre-creating Odoo custom fields for every Checkbox form field — complex setups with 30+ custom fields per form extend the setup and testing phases. Larger migrations with 500,000+ records or multiple Checkbox workflows feeding a single Odoo pipeline typically run 1–2 weeks. Odoo pipeline stage configuration and owner matching add 1–2 days of planning before data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Checkbox.
Land in Odoo CRM, 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