CRM migration

Migrate from Contact Beacon to Odoo CRM

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

Contact Beacon logo

Contact Beacon

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Contact Beacon and Odoo CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Contact Beacon and Odoo CRM serve different primary audiences. Beacon is purpose-built for UK charities with native Gift Aid handling and a flat donor-centric object model centered on Contacts and Donations. Odoo CRM is the CRM module within a modular ERP suite that covers sales, accounting, project management, and events; charities migrating to Odoo typically do so to consolidate fundraising, accounting, and operations into a single platform. The migration requires transforming Beacon's Donation object into Odoo Opportunities with custom fields for amount, campaign, Gift Aid status, and gift date, since Odoo has no native donation record type. We preserve the Contact-to-Donation parent relationship by resolving Contact IDs at migration time and linking Opportunities to the corresponding Odoo Contact via a many-to-one relationship. Beacon Pipelines map to Odoo CRM Stages within the default sales pipeline, and Tags migrate as Odoo Tags. Beacon Workflows, which are not accessible via API or UI export, are documented during scoping and handed off for manual rebuild in Odoo. The migration uses Odoo's XML-RPC API with batch operations and rate-limit awareness to load data in dependency order: Contacts first, then Opportunities, then Tags and attachments.

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

Contact Beacon logo

Contact Beacon

What's pushing teams away

  • Teams outgrow Beacon when they need more advanced fundraising features such as planned giving, grant tracking, or complex event management that the platform does not support.
  • Customers report that the API lacks bulk endpoints, making integrations with accounting tools and data warehouses difficult to maintain without custom development.
  • Some users note that reporting and analytics dashboards are limited compared to platforms like Salesforce or HubSpot, making it harder to build executive-level fundraising reports.
  • Beacon's feature set is optimized for UK charities using Gift Aid, which can feel narrow for international nonprofits or charities without tax reclaim programs.

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

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

Contact Beacon

Contact

maps to

Odoo CRM

Contact

1:1
Fully supported

Beacon Contacts migrate to Odoo Contacts with all standard fields (name, email, phone, address) and any custom per-organization fields mapped to Odoo custom Contact fields. The Beacon contact_id becomes an external identifier in Odoo for reconciliation. Owner assignment maps to the Odoo user field; inactive Beacon users are imported as Odoo inactive users or archived records based on the destination org's user management policy. Address fields are mapped field-by-field to Odoo's street, city, state, zip, country structure.

Contact Beacon

Donation

maps to

Odoo CRM

Opportunity

1:1
Fully supported

Beacon Donations are the primary structural transformation in this migration. Each Donation maps to an Odoo CRM Opportunity with the following custom field mapping: donation amount to Expected Revenue, gift date to Expected Closing, campaign tag to Tag IDs in Odoo, and the Gift Aid boolean flag to a custom boolean field gift_aid_eligible__c on the Opportunity. The parent Contact relationship is preserved by resolving the Beacon contact_id to the Odoo Contact record ID at migration time and setting the Opportunity's Partner ID to the resolved Contact. Note that Odoo has no native donation record type; the Opportunity with custom fields is the conventional Odoo model for tracking charitable gifts.

Contact Beacon

Campaign

maps to

Odoo CRM

Tag or Campaign

1:many
Fully supported

Beacon Campaigns group Donations and Contacts for reporting. Odoo CRM does not have a native Campaign object equivalent to HubSpot or Salesforce Campaign. We map Beacon Campaigns to Odoo Tags on the Opportunity (representing the donation campaign) and optionally create a separate Tag on the Contact for donor attribution. If the customer is activating Odoo Events, the Campaign can alternatively map to an Odoo Event project for event-linked fundraising tracking. The mapping strategy is chosen during scoping based on the customer's reporting requirements.

Contact Beacon

Pipeline

maps to

Odoo CRM

Stage

lossy
Fully supported

Beacon Pipelines with ordered Stages map to Odoo CRM Stages within the default pipeline. Stage names and order are migrated; probability percentages per stage are set on each Odoo Stage configuration. Any conditional stage-routing rules from Beacon (e.g., automated stage advancement based on donation amount) cannot migrate as automation and are documented as Odoo CRM Server Actions for the customer's admin to configure post-migration. Odoo's default pipeline is single; if the customer needs multiple pipelines, we configure additional CRM Sales Teams as pipeline partitions during the schema design phase.

Contact Beacon

Custom Fields

maps to

Odoo CRM

Custom Fields

1:1
Mapping required

Beacon per-organization custom fields on Contacts and Donations are discovered during scoping and mapped to Odoo custom fields on the Contact and Opportunity respectively. Field types are translated: text to char, number to float or integer, date to date, checkbox to boolean, multi-select to many2many tags. Unsupported types (e.g., Beacon-specific formatted fields) are flagged for manual review and either mapped to char or excluded with a documented rationale. Custom field naming in Odoo follows the field_ naming convention and must be confirmed with the customer admin before schema deployment.

Contact Beacon

Tag

maps to

Odoo CRM

Tag

1:1
Fully supported

Beacon Tags on Contacts and Donations migrate as Odoo Tags. Tags are stored as a many2many field on both Contact and Opportunity in Odoo CRM. We flatten Beacon's tag arrays and upsert them into Odoo's tag table, then link them to the corresponding records during import. Any tags that were generated by inactive Beacon workflows are flagged in the tag inventory document so the customer can decide whether to create corresponding Odoo automated actions or remove them.

Contact Beacon

Attachment

maps to

Odoo CRM

Attachment

1:1
Fully supported

File attachments on Beacon Contact records are downloaded via individual API requests and re-uploaded to Odoo as ir.attachment records linked to the Contact via a many2one res_model = res.partner relationship. Large batches are chunked to respect Beacon's rate limits. We log the original filename and attachment date for reconciliation. Attachments exceeding Odoo's default 100 MB file size limit are flagged for the customer's admin to store externally and link via URL.

Contact Beacon

User

maps to

Odoo CRM

User

1:1
Fully supported

Beacon user accounts map to Odoo Users. We match by email address. Any Beacon user without a matching Odoo User is held in the reconciliation queue for the customer's Odoo admin to provision before record import proceeds. Inactive Beacon users are set to inactive in Odoo to preserve owner attribution on historical records.

Contact Beacon

Workflow

maps to

Odoo CRM

Action (automated action)

lossy
Fully supported

Beacon automated workflows (Gift Aid submission triggers, thank-you email sequences, donor follow-up timers) cannot be exported from Beacon's UI or API. We document every active workflow during scoping with its trigger, conditions, actions, and timing logic. This document is delivered to the customer as a rebuild guide for Odoo CRM Server Actions and Odoo's Email Templates for email sequences. We do not rebuild workflows inside the migration scope; this is an admin task post-migration or a separate consulting engagement.

Contact Beacon

Gift Aid Declaration

maps to

Odoo CRM

Custom Field (gift_aid_eligible, gift_aid_amount)

lossy
Fully supported

Beacon stores Gift Aid eligibility as a boolean toggle on the Contact or Donation. In Odoo, we create two custom Opportunity fields: gift_aid_eligible__c (boolean) and gift_aid_amount__c (float) for the estimated HMRC reclaim amount based on donation amount times the 25% Gift Aid multiplier. For UK charities, this field enables Gift Aid batch reporting directly from the Odoo CRM Opportunity list view. The gift_aid_eligible__c boolean also drives Odoo automated actions for Gift Aid acknowledgment email templates if configured post-migration.

Contact Beacon

Engagement: Note

maps to

Odoo CRM

Note

1:1
Fully supported

Beacon engagement notes migrate to Odoo CRM Notes attached to the Contact or Opportunity record. Notes with timestamps preserve the original date as the note creation date in Odoo. If a Beacon note references a specific donation, we link it to the corresponding migrated Opportunity using the external identifier cross-reference created during the donation import phase.

Contact Beacon

Engagement: Task

maps to

Odoo CRM

Task

1:1
Fully supported

Beacon task engagements (follow-up reminders, donor check-ins) map to Odoo CRM Tasks linked to the Contact or Opportunity. Task status, priority, and due date migrate directly. Owner assignment resolves through the User mapping. Tasks are inserted after Contact and Opportunity records are confirmed in Odoo to satisfy the res_model and res_id foreign key constraints.

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.

Contact Beacon logo

Contact Beacon gotchas

High

API keys are shown once and never recoverable

Medium

No bulk export endpoint forces paginated extraction

Medium

Revoked API keys are permanently invalidated

High

Workflows have no export path

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

  • Odoo CRM has no native donation record type

    Unlike Contact Beacon, which has a purpose-built Donation object with Gift Aid, amount, campaign, and date fields, Odoo CRM has no equivalent. Donations must map to Opportunities using custom fields. We create gift_aid_eligible__c (boolean), gift_aid_amount__c (float), and gift_date__c (date) fields on the Opportunity during schema setup. Without these custom fields defined before migration, the Gift Aid data is lost or stored in unstructured note fields that cannot drive Odoo reporting or automated actions.

  • Beacon API keys shown once and permanently invalidated on revoke

    Beacon displays API keys exactly once at creation time and never shows them again. If a key is revoked, it cannot be un-revoked and immediately returns 403 invalid_api_key on all subsequent calls. We request a fresh migration key from the customer during scoping, store it securely for the export window, and never revoke it until the export job is confirmed complete. If the customer accidentally revokes the key mid-export, a new key must be created and the export restarts from the beginning, extending the timeline.

  • Beacon has no bulk export endpoint, extending extraction time for large datasets

    Beacon's API requires paginated list requests for all record types. For databases with 10,000+ Contacts or 5,000+ Donations, extraction runs over multiple hours in off-peak windows to avoid throttling. We pace requests within Beacon's rate limits and use parallel pagination for Contacts and Donations where the API permits. Large historical donation sets can add one to three weeks to the extraction phase compared to platforms with bulk export endpoints.

  • Beacon workflows cannot be exported and must be manually documented for Odoo rebuild

    Beacon's automated workflows (e.g. Gift Aid submission triggers, donor thank-you sequences, payment follow-up timers) are not accessible via the UI export or API. We audit and document every active workflow during scoping, but the customer must rebuild them in Odoo CRM Server Actions and Email Templates post-migration. If workflows are not documented and rebuilt, donor acknowledgment and Gift Aid submission processes that were automated in Beacon will revert to manual processes in Odoo.

  • Odoo CRM requires explicit CRM app installation and stage configuration

    Odoo CRM is one app within the Odoo suite. If the destination Odoo instance has CRM disabled, we install the CRM app and configure the pipeline and stages before data import begins. Odoo's default pipeline has eight pre-defined stages; we replace these with Beacon pipeline stage names and probabilities. If the customer is also activating Odoo Accounting or Project Management, the migration sequence must account for module dependencies and user access groups that control which records each team can view.

Migration approach

Six steps for a successful Contact Beacon to Odoo CRM data migration

  1. Discovery and migration scope document

    We audit the source Beacon portal across objects in scope (Contacts, Donations, Campaigns, Pipelines, Tags, Attachments), total record counts per object, active workflow count and logic, and custom field inventory. We pair this with an Odoo instance review: CRM app installation status, existing Pipeline and Stage configuration, user count, and whether Odoo Accounting or Project Management apps are active. The discovery output is a written migration scope document with record counts, custom field mappings, the Gift Aid field strategy, and the Odoo stage configuration plan.

  2. Schema design and custom field provisioning in Odoo

    We create the destination schema in Odoo before any data moves. This includes creating custom Opportunity fields for donation tracking (gift_aid_eligible__c, gift_aid_amount__c, gift_date__c, campaign_source__c), configuring Odoo CRM Pipeline Stages to match Beacon pipeline names and order, setting stage probability percentages, and creating Tags for Beacon Campaigns. If the customer needs multiple pipelines, we configure additional CRM Sales Teams. Schema changes are deployed to a test Odoo database first for validation before production migration begins.

  3. Beacon data extraction via paginated API

    We extract Beacon data using paginated list API requests for Contacts, Donations, Campaigns, Tags, and Attachments. Extraction runs in off-peak hours to minimize rate-limit pressure. For large datasets (10,000+ records), we run parallel extractors for Contacts and Donations and merge on contact_id during normalization. We log every paginated request and its response to a migration audit log for reconciliation. At the end of extraction, we generate row counts per object for comparison against the Odoo import counts.

  4. Data normalization and Gift Aid transformation

    We normalize Beacon field names to Odoo field names using the mapping document. For Donations, we compute the Gift Aid reclaim amount (donation amount multiplied by 0.25) and populate the gift_aid_amount__c custom field on the corresponding Opportunity. We resolve Beacon contact_id values to Odoo Contact res.partner IDs through a lookup table built during the Contact import phase. Tags are normalized to Odoo's tag label format. Any malformed or duplicate records are flagged in a pre-import exception report for the customer to resolve before import.

  5. Odoo import in dependency order

    We import records into Odoo in strict dependency order: Users (validated against the Odoo user table), Contacts (first because Opportunities reference them), Campaigns/Tags (upserted before Opportunity import), then Opportunities (with Partner ID, stage, and custom Gift Aid fields resolved), then Notes and Tasks. Each phase emits a row-count reconciliation report comparing Beacon export counts to Odoo import counts. Attachments are imported last using individual file upload requests chunked to avoid timeout. Any phase with a mismatch greater than 1% triggers a re-extract and re-import cycle for that object.

  6. Cutover, validation, and workflow handoff

    We freeze Beacon writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We deliver the Workflow Inventory Document listing every active Beacon workflow with its trigger, conditions, and actions for manual rebuild in Odoo CRM Server Actions. We conduct a post-migration reconciliation walkthrough with the customer's Odoo admin to validate 25-50 random Contact and Opportunity records against the Beacon source. We support a one-week hypercare window for reconciliation issues. We do not rebuild Beacon workflows as Odoo automated actions inside the migration scope.

Platform deep dives

Context on both ends of the pair

Contact Beacon logo

Contact Beacon

Source

Strengths

  • Native Gift Aid declaration and submission workflow for UK charities.
  • Free tier for very small organizations with up to two users.
  • Per-user pricing model with no contact-count billing surprises.
  • Hands-on customer support praised across multiple review platforms.
  • Low-friction onboarding with a clean, intuitive UI.

Weaknesses

  • No bulk export or bulk API endpoints; data extraction relies on paginated reads.
  • Workflow definitions cannot be exported and must be rebuilt manually in the destination.
  • Limited reporting and analytics compared to enterprise CRM platforms.
  • No native grant-tracking or planned-giving management features.
  • API key management requires manual revocation with no un-revoke option, complicating key rotation during migration.
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 Contact Beacon 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

    Contact Beacon: Not publicly documented in customer-facing materials; rate-limit headers returned on 429 responses.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between four and eight weeks for accounts under 15,000 Contacts and 3,000 Donations with no complex custom objects or multi-app Odoo deployment. Migrations with large historical donation sets (10,000+ records), multiple Beacon campaigns requiring tag mapping, Gift Aid reclaim amount computation across all records, or concurrent Odoo Accounting activation move to eight to fourteen weeks because of the paginated extraction window, parent-record lookup resolution, and Odoo stage configuration work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Contact Beacon.
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