CRM migration

Migrate from HoneyBook to Odoo CRM

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

HoneyBook logo

HoneyBook

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between HoneyBook and Odoo CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from HoneyBook to Odoo CRM is a client-centric-to-partner-model migration with a significant data-extraction constraint: HoneyBook exposes no public REST or GraphQL API, so all extraction relies on CSV downloads and structured scraping of the web interface. We sequence the migration around this constraint, running authenticated export sessions and reconstructing project and invoice history from HoneyBook's internal data views before loading into Odoo via Odoo's XML-RPC API. HoneyBook's Client object maps to Odoo res.partner (distinguishing individuals from companies via is_company), HoneyBook Projects map to crm.lead with pipeline stage and timeline preserved in custom fields, and Invoices map to account.move records. We do not migrate HoneyBook Automations (email triggers, questionnaire flows, booking confirmations) as there is no export mechanism; we deliver a written inventory of every active automation for your admin to rebuild in Odoo. Odoo's modular ERP architecture means CRM sits alongside Accounting, Inventory, and Project modules; if your migration scope extends to accounting data, we coordinate account.move records with your chart of accounts configuration during the schema design phase.

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

HoneyBook logo

HoneyBook

What's pushing teams away

  • HoneyBook executed significant price increases in 2025 — Starter nearly doubled from $19 to $36/month and Premium jumped to $129 — prompting customers on fixed margins to evaluate alternatives.
  • The platform has no bulk export or documented public API, making programmatic data extraction time-consuming and forcing users into manual CSV downloads that miss project history and attachment metadata.
  • HoneyBook lacks native SMS capabilities and has limited email marketing features — users who need rich formatted email campaigns must integrate a separate tool like Flodesk or Mailchimp.
  • The onboarding process, particularly template setup and document customization, is described as steep by new users who lack design or legal background.
  • Some advanced CRM needs — custom objects, complex lead scoring, multi-tier pipelines — are not well supported, pushing growing agencies toward more flexible platforms.

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 HoneyBook objects map to Odoo CRM

Each row shows how a HoneyBook 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.

HoneyBook

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

HoneyBook Contacts export as a CSV via Clients > Contacts and include name, email, phone, address, notes, and creation date. We map each row to Odoo res.partner, setting is_company = False and using the contact_id as an external identifier for future sync. If the CSV contains both individual clients and company records, we split them by the presence of a company_name field and set is_company = True for the latter group. Phone numbers are stored as char fields in Odoo, so we preserve the original format without reformatting to avoid breaking downstream integrations.

HoneyBook

Project

maps to

Odoo CRM

crm.lead (Opportunity)

1:many
Fully supported

HoneyBook Projects are the primary business record containing inquiry details, pipeline stage, custom fields, files, and associated contacts. Odoo has no native project object, so we reconstruct project metadata as custom fields on crm.lead (Opportunity): hb_project_id (char), hb_pipeline_stage (char), hb_created_date (datetime), hb_inquiry_type (char), and hb_notes (text). The project pipeline stage migrates to crm_stage via the stage name match, and the associated client contact resolves to res.partner.id for the Opportunity's partner_id. Projects without an associated contact are held in a reconciliation queue.

HoneyBook

Invoice

maps to

Odoo CRM

account.move

1:1
Fully supported

HoneyBook Invoices include line items, payment status, amounts, and client associations. We extract invoice records via the dashboard export or by scraping the invoice list view, then map to Odoo account.move with move_type = 'out_invoice'. Open invoices retain payment_status = 'posted' and are reconciled against the mapped res.partner. Historical invoices are loaded as out_invoice with payment_status = 'posted' and reconciled against the partner's account move lines. Odoo's account_id must be resolved to the customer's account.move record.

HoneyBook

Contract

maps to

Odoo CRM

ir.attachment + crm.lead custom field

1:1
Fully supported

HoneyBook Contracts are template-based documents with client associations and signature status. We extract contract metadata (client, template name, status, date) and map the metadata to a custom field contract_status__c on the related crm.lead. The contract PDF itself cannot be downloaded via API because HoneyBook file URLs are session-bound; we attempt download during the authenticated export session and attach the resulting file to the Opportunity record using Odoo's ir.attachment model. Any undownloadable files are flagged in the handoff document.

HoneyBook

Proposal

maps to

Odoo CRM

crm.lead custom field + ir.attachment

1:1
Fully supported

HoneyBook Proposals are project-level documents combining scope, pricing, and terms. We extract proposal records and map scope and pricing terms to custom fields on the crm.lead (hb_proposal_scope__c, hb_proposal_value__c). The proposal PDF, if accessible during the authenticated session, attaches to the Opportunity via ir.attachment. Proposals with no corresponding project record are loaded as standalone Opportunities with proposal_type__c flagged.

HoneyBook

Pipeline Stage

maps to

Odoo CRM

crm.stage

lossy
Fully supported

HoneyBook pipeline stages (Inquiry, Follow Up, Proposal Sent, Booked, Completed, Declined) map to Odoo crm_stage records by name matching. Each stage gets a probability percentage matching HoneyBook's close-rate data. We configure stages under the relevant crm_team so that Opportunities are scoped to the correct team pipeline. Custom stage names in HoneyBook are preserved verbatim and created as new crm_stage records if no match exists. The migration assigns stage_ids after stage creation to maintain ordering.

HoneyBook

Payment

maps to

Odoo CRM

account.move.line

1:1
Fully supported

HoneyBook Payment records include amount, method, status, and processing date. We extract payment history via the dashboard export and map completed payments to Odoo account.move.line entries reconciled against the corresponding invoice account.move. 'Payment Attempted' statuses (bank transfers taking 7-8 days) are preserved with their original HoneyBook timestamp as the payment date to avoid misrepresenting a pending payment as completed. Refunded payments are loaded as credit account.move.line entries.

HoneyBook

Team Member

maps to

Odoo CRM

res.users

1:1
Fully supported

HoneyBook distinguishes between collaborators (external, limited project access) and team members (internal). We export team member records including roles and permissions, then map to Odoo res.users by email match. Collaborators without a corresponding Odoo user are flagged for the admin to provision as portal users if external access is required. The migration holds any owner_id references on crm.lead until user provisioning is confirmed.

HoneyBook

Custom Field

maps to

Odoo CRM

ir.model.fields (custom)

lossy
Fully supported

HoneyBook supports custom fields on contacts and projects. We identify all active custom fields during discovery, capture their types (text, number, date, checkbox, dropdown), and create matching custom fields on the Odoo res.partner or crm.lead model before migration using ir.model.fields. Dropdown-style custom fields map to Odoo selection fields; checkbox fields map to boolean fields. All custom field values migrate as column data alongside the parent record.

HoneyBook

Questionnaire

maps to

Odoo CRM

crm.lead custom field + mail.message

1:1
Fully supported

Client questionnaires are linked to projects in HoneyBook and serve as intake forms. We export questionnaire structure and response history as structured key-value data, mapping each question and answer pair to a custom field on crm.lead (e.g., hb_intake_budget__c, hb_intake_timeline__c). Long-form responses or multi-question forms are stored as a mail.message with body = JSON of the full response, linked to the Opportunity via res_id and model = 'crm.lead'.

HoneyBook

File and Template

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

HoneyBook stores files in a library (images, PDFs, brand assets) and uses templates for contracts and proposals. File URLs are session-bound and not publicly accessible. During the authenticated export session, we attempt to download available files and attach them to the corresponding res.partner (for brand assets) or crm.lead (for project files). Files that cannot be retrieved are logged with their HoneyBook URL in the handoff document for manual download.

HoneyBook

Automations

maps to

Odoo CRM

(no migration — inventory only)

1:1
Not supported

HoneyBook Automations (email triggers, questionnaire delivery, follow-up reminders, booking confirmations) are rule-based and stored server-side with no export mechanism. These cannot be migrated programmatically. We deliver a written inventory of every active HoneyBook Automation with its trigger conditions, actions, and delay logic. The customer's Odoo admin or an Odoo partner rebuilds them using Odoo's Automated Actions (ir.cron), Studio workflows, or custom Python code. Automations are out of scope for standard migration.

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.

HoneyBook logo

HoneyBook gotchas

High

No public bulk API forces manual data export

Medium

Payment processing fees apply to every transaction

Low

Bank transfers take 7–8 days to process

Medium

HoneyBook Balance is a separate banking product

Medium

Limited international availability affects data residency

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

  • HoneyBook has no public API — extraction requires workaround

    HoneyBook exposes no public REST, GraphQL, or Bulk API. The only native export is a CSV of contacts from Clients > Contacts. All other records — projects, invoices, contracts, proposals, pipeline history, and attachments — must be extracted via screen scraping of the web interface or reconstructed from the authenticated session data. This adds two to four weeks of scoping time compared to API-based migrations and limits what we can guarantee to extract. We mitigate by running an authenticated export session, downloading available CSVs, and capturing HoneyBook's internal data views to reconstruct financial records. Customers should expect a longer discovery window and should export their contact CSV manually before the migration engagement begins.

  • HoneyBook Balance is a separate banking product outside scope

    HoneyBook Balance is a checking account product tied to the HoneyBook subscription (pending eligibility) and is not a standard platform record. Customers who opened a HoneyBook Balance account cannot transfer the bank account itself to Odoo. We flag this during scoping and advise customers to coordinate directly with HoneyBook support to close or transfer the Balance account. Any pending transactions or account history should be exported manually before the account is closed. This product is explicitly outside the scope of record migration.

  • Payment Attempted status differs from completed payment

    HoneyBook payment statuses include 'Payment Attempted' for bank transfers, which take seven to eight days to clear. When importing payment history into Odoo, we mark these records with their original HoneyBook timestamp rather than the settlement date. Without this distinction, a 'Payment Attempted' record appears in Odoo as a completed payment, creating accounting discrepancies. We flag every bank transfer with hb_payment_pending__c = True and include the expected settlement date in the notes field so your accounting team reconciles correctly.

  • Custom field mapping requires Odoo Studio or direct field creation

    HoneyBook custom fields on contacts and projects have no direct Odoo equivalents by field name. We identify all active custom fields during discovery, capture their data types, and create matching custom fields on res.partner or crm.lead before migration using ir.model.fields. This schema preparation step adds one to two days to the migration timeline and requires the customer's Odoo admin to grant migration access to the Technical Settings. If custom fields are changed in HoneyBook during migration, the mapping may need updating before the final load.

  • Odoo pipeline stages must be pre-created before Opportunity import

    Odoo crm_stage records must exist before crm_lead records reference them via stage_id. We create all pipeline stages during the schema design phase and validate their IDs before the production migration begins. If HoneyBook has custom pipeline stage names that don't map cleanly to existing Odoo stages, we create new crm_stage records with matching names and probabilities. Stage ordering is controlled by the sequence field on crm_stage and must be set correctly to match HoneyBook's pipeline view order. We provide a stage mapping table in the handoff document for admin verification before production migration.

Migration approach

Six steps for a successful HoneyBook to Odoo CRM data migration

  1. Discovery and data audit

    We run an authenticated export session against the customer's HoneyBook account, download the contact CSV from Clients > Contacts, and capture internal data views for projects, invoices, contracts, proposals, pipeline stages, and payments. We count records by type, identify custom fields, flag any automations and workflows, and assess data quality (duplicates, missing required fields, inconsistent formats). The discovery output is a written migration scope with a record count table, a list of HoneyBook objects we can extract and those we cannot, and a timeline estimate based on the extraction complexity.

  2. Odoo schema design and stage configuration

    We design the destination schema in Odoo before any data moves. This includes creating custom fields on res.partner (for client metadata and contact-level custom fields), creating custom fields on crm.lead (for project metadata, proposal details, and questionnaire responses), configuring crm_stage records to match HoneyBook pipeline stages by name, setting stage probabilities, and assigning stages to crm_team. We also configure the account.chart template if invoice migration requires it. Schema is deployed to a staging database via XML-RPC for validation before production.

  3. Staging migration and reconciliation

    We run a full migration into an Odoo staging environment using production-like data volume. The customer's admin reviews record counts (partners in, opportunities in, invoices in, payments in), spot-checks ten to twenty records against the HoneyBook source, and validates that stage assignments and owner lookups resolve correctly. Any field mapping corrections, missing custom fields, or stage mapping adjustments are made in the staging schema before production migration begins. No production data is touched until staging sign-off is received.

  4. Owner and user provisioning

    We extract every distinct HoneyBook owner referenced on project, invoice, and payment records and match by email against the Odoo destination's res.users table. Any HoneyBook owner without a matching Odoo user goes to a reconciliation queue for the customer's admin to provision. Collaborators without Odoo user accounts are flagged for portal access if external client access is required. Migration cannot proceed past this step because Opportunity and partner records require a valid create_uid.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.partner records first (from HoneyBook contacts and companies), then crm.lead with stage_id and partner_id resolved (from HoneyBook projects), then account.move for invoices, then account.move.line for payment reconciliation. Custom field values load alongside parent records. Files are attached via ir.attachment as they become available from the authenticated session. Each phase emits a row-count reconciliation report before the next phase begins. HoneyBook writes are frozen during the production migration window.

  6. Cutover, validation, and automation handoff

    We run a final delta migration of any records created or modified in HoneyBook during the production migration window. We validate record counts, spot-check key Opportunities, and enable Odoo as the system of record. We deliver the automation inventory document listing every HoneyBook Automation with its trigger, conditions, and recommended Odoo Automated Action equivalent. We do not rebuild HoneyBook Automations as Odoo rules inside the migration scope; that work is handled by the customer's admin or an Odoo partner. We provide a one-week hypercare window for reconciliation issues raised by the team.

Platform deep dives

Context on both ends of the pair

HoneyBook logo

HoneyBook

Source

Strengths

  • Combines CRM, invoicing, contracts, and payment processing in a single subscription for service businesses.
  • Automations handle client-facing touchpoints like reminders, questionnaires, and booking confirmations without manual work.
  • Pipeline view gives a clear visual of inquiry status from first contact through project completion.
  • Strong customer support with 7-day-a-week availability and a community of professional users.
  • Mobile app available on iOS with full feature parity for on-the-go client management.

Weaknesses

  • No public bulk API or documented export endpoints — all data extraction relies on manual CSV downloads or screen scraping.
  • Significant 2025 price increases (Starter nearly doubled) have driven churn among cost-sensitive freelancers.
  • Limited international support — platform primarily designed for U.S. and Canadian businesses.
  • No native SMS capability and restricted email marketing features compared to dedicated marketing tools.
  • Steep onboarding curve for template setup and document customization without third-party assistance.
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 HoneyBook 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

    HoneyBook: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your HoneyBook to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

HoneyBook's lack of a public API extends the timeline compared to API-based migrations. Standard migrations under 5,000 contacts, 1,000 projects, and 500 invoices complete in three to five weeks. Complex migrations with large project histories, custom field inventories, payment reconstruction, or multi-stage pipelines requiring extensive stage mapping require eight to twelve weeks because of the CSV extraction and screen-scraping overhead. Discovery and data audit alone take one to two weeks for this pair.

Adjacent paths

Related migrations to explore

Ready when you are

Move from HoneyBook.
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