CRM migration

Migrate from Contact Beacon to Twenty CRM

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

Contact Beacon logo

Contact Beacon

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Contact Beacon to Twenty CRM is a migration from a charity-specialist platform to an open-source CRM with no native Gift Aid handling or nonprofit-specific object types. Contact Beacon stores donations as a flat record with a boolean Gift Aid flag; Twenty represents charitable gifts as Opportunities with line items, which requires a schema remap rather than a simple field copy. We extract Beacon data via paginated API reads (Beacon has no bulk endpoint), normalize Gift Aid declarations into a custom Gift Aid amount field, resolve parent Contact lookups on every donation record, and load into Twenty via the REST API. Workflows, automations, and Gift Aid submission workflows do not migrate because Beacon exposes no export path for them; we deliver a written inventory of every active workflow for the customer's team to rebuild in Twenty or a dedicated Gift Aid tool. File attachments require a separate download-and-upload pass because Twenty does not support file import via CSV.

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

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Contact Beacon objects map to Twenty CRM

Each row shows how a Contact Beacon object lands in Twenty 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

Twenty CRM

Person

1:1
Fully supported

Beacon Contacts map to Twenty Persons. Standard fields (name, email, phone, address) migrate directly. Owner assignment resolves via email match against Twenty Users. Beacon's custom fields on Contacts map to custom fields on the Person object created via the /metadata API. We flag any multi-select custom fields because Twenty's custom field types have different picklist behaviors that may require restructuring.

Contact Beacon

Donation

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Beacon Donations map to Twenty Opportunities. The donation amount becomes the Opportunity amount, donation date becomes the close date, and the campaign tag becomes a custom Opportunity field linked to the Campaign object. Gift Aid boolean (true/false) transforms into a Gift Aid custom field with the claimed amount carried in a separate Gift_Aid_Amount__c custom field. We preserve the parent Contact relationship by linking the Opportunity to the corresponding Person record via the Twenty Person ID resolved at migration time.

Contact Beacon

Campaign

maps to

Twenty CRM

Custom Campaign Object

1:1
Fully supported

Beacon Campaigns map to a Twenty custom object (Campaign__c) created at migration time via the metadata API. We create fields for campaign name, status (active/closed/paused), start date, and end date. Beacon campaign-linked donations reference this custom object via a lookup field on the Opportunity (donation). If Twenty's native workspace-level tracking is preferred, we configure opportunities with a campaign tag field at scoping based on the customer's reporting hierarchy.

Contact Beacon

Pipeline

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Beacon Pipelines (donor journey stages) map to Twenty Opportunity stages. Stage names and order migrate as stage picklist values. Any conditional stage-routing logic from Beacon Pipelines (e.g. auto-advance based on donation amount) cannot migrate as automation and must be manually reconfigured in Twenty after migration.

Contact Beacon

Tag

maps to

Twenty CRM

Tag

1:1
Fully supported

Beacon tags on Contacts and Donations migrate as flat label arrays into Twenty's tagging system. We flag any tags that correspond to inactive Beacon workflows, since the workflow reference is lost and the tag meaning may need clarification during post-migration data review.

Contact Beacon

Custom Field (Contacts/Donations)

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Beacon custom fields on Contacts and Donations are discovered at scoping. We create matching custom fields in Twenty via the /metadata API, mapping Beacon field types to Twenty field types. Multi-select picklists in Beacon map to multi-select in Twenty where supported; free-text fields map to text fields. Any unsupported field types are flagged for the customer's admin to review before migration.

Contact Beacon

Attachment

maps to

Twenty CRM

Attachment/File

1:1
Fully supported

Beacon file attachments on Contact records are downloaded via individual API requests (one per attachment) and re-uploaded to Twenty as linked files. Large attachment batches are chunked to stay within Beacon's rate limits. Twenty does not support file import via CSV, so all attachments require the API pass rather than bulk loading. Files exceeding Twenty's size limits are flagged for manual re-upload.

Contact Beacon

User

maps to

Twenty CRM

User

1:1
Fully supported

Beacon user accounts map to Twenty Users. We resolve by email match. Inactive Beacon users are imported as inactive Twenty Users or archived depending on the customer's preference. Owner assignment on migrated records uses the resolved Twenty User ID.

Contact Beacon

Workflow

maps to

Twenty CRM

Not Migrated

1:1
Fully supported

Beacon automated workflows (Gift Aid submission triggers, thank-you email sequences, donor follow-up timers) are not accessible via the Beacon API or UI export and cannot be migrated. We run a workflow audit during scoping and deliver a written inventory of every active workflow with its trigger conditions, actions, and timing logic. The customer's admin rebuilds these in Twenty or a dedicated automation tool post-migration. Gift Aid submission workflows in particular require a separate UK HMRC-compatible tool rather than generic CRM automation.

Contact Beacon

Gift Aid Declaration

maps to

Twenty CRM

Custom Field (Person)

lossy
Fully supported

Beacon stores Gift Aid eligibility as a boolean toggle on the Contact record. We map this to a Gift Aid Declaration custom field on the Twenty Person object and carry the declaration date and HMRC claim status in separate custom fields. The Gift Aid amount claimed historically migrates as a monetary custom field on the Person for reporting purposes. HMRC Gift Aid submission itself requires a dedicated tool outside Twenty's standard automation capabilities.

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

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • No bulk export endpoint forces paginated extraction

    Contact Beacon's API does not expose a bulk or batch export endpoint. All data must be pulled via paginated list requests, which are subject to rate limits. For large databases (10,000+ contacts) this extends the export window significantly. We pace our requests to stay within limits and run extractions in off-peak hours to avoid throttling. Customers with very large databases should expect a longer discovery phase before migration begins.

  • Gift Aid declarations have no native Twenty field

    Beacon stores Gift Aid eligibility as a boolean toggle; Twenty has no native Gift Aid field because it is a general-purpose CRM. We create custom fields on the Person object (Gift_Aid_Declaration__c, Gift_Aid_Claim_Date__c, Gift_Aid_Amount_Claimed__c) during schema setup. The actual HMRC submission requires a dedicated Gift Aid tool; we document the claim history in Twenty for record-keeping but do not integrate with HMRC systems.

  • File attachments require individual API requests

    Twenty does not support file attachment import via CSV. All Beacon file attachments on Contact records must be downloaded individually via the Beacon API and uploaded to Twenty one at a time. For databases with thousands of attachments, this is a manual-heavy pass that adds time to the migration. We chunk the attachment requests to stay within Beacon's rate limits and flag any files that exceed Twenty's size thresholds.

  • Beacon API keys shown once and permanently unrecoverable

    Beacon's API documentation states that API keys are shown once and never displayed again. If a key is revoked mid-export, it returns 403 invalid_api_key on every subsequent call and cannot be un-revoked. We request fresh keys from the customer during the scoping call, store them securely for the duration of the export window, and never revoke active migration keys until the job is confirmed complete.

  • Beacon Pipelines and workflows have no export path

    Beacon's automated workflows and Pipeline conditional routing rules cannot be accessed via the Beacon API or UI export. We document the workflow logic and pipeline stage-routing during scoping so the customer has a complete list to rebuild from. Pipeline stages themselves migrate as Opportunity stage picklist values, but any automation tied to stage changes must be rebuilt manually in Twenty or a third-party automation tool.

Migration approach

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

  1. Discovery and schema mapping

    We audit the source Contact Beacon portal: record counts for Contacts, Donations, Campaigns, Tags, and custom fields; active workflows and pipeline definitions; attachment volume; user list. We map Beacon's Gift Aid boolean flag to a custom Gift Aid Declaration field structure on Twenty's Person object and design the custom Campaign__c object schema. The discovery output is a written migration scope with record counts, custom field inventory, and Gift Aid field normalization plan.

  2. Schema setup in Twenty

    We create the destination schema in Twenty via the metadata API: the custom Campaign__c object, all custom fields on Person and Opportunity, and the Gift Aid declaration fields. We configure Opportunity stages to match Beacon Pipeline stages. Schema is validated in a staging workspace before production migration begins.

  3. Paginated data extraction from Beacon

    We run the Beacon export via paginated API reads across Contacts, Donations, Campaigns, Tags, and custom field values. We pace requests to stay within Beacon's rate limits, run extractions in off-peak hours, and resolve parent Contact IDs on every Donation record before the transform phase begins. Attachments are queued for a separate API pass.

  4. Transform and Gift Aid normalization

    We transform the extracted data: Gift Aid boolean to Gift_Aid_Declaration__c custom field with declaration date; donation amounts to Opportunity amount with close date; campaign tags to Campaign__c lookup; tags to flat label arrays. Owner IDs resolve by email match against the Twenty User table. Any unresolved lookups (e.g. donation referencing a deleted Contact) are held in a reconciliation queue.

  5. Attachment migration pass

    We download all file attachments from Beacon via individual API requests, chunked by rate limit. Each attachment is re-uploaded to Twenty and linked to the corresponding Person record. Files exceeding Twenty's size limits are flagged for manual re-upload by the customer.

  6. Production migration and cutover

    We run production migration in dependency order: Person records first (custom fields created), then Campaign__c records, then Opportunity records (with Person and Campaign lookups resolved). Users are validated before record migration. We freeze Beacon writes during cutover, run a final delta migration of any records modified during the window, then enable Twenty as the system of record. We deliver the Workflow and Pipeline inventory document to the customer's admin for rebuild in Twenty or a dedicated automation tool.

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.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 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 Twenty CRM.

  • Object compatibility

    B

    2 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 Twenty 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 Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for organizations under 10,000 Contacts and 2,000 Donations with no complex custom field structures. Migrations with large attachment volumes (over 5,000 files), multiple Beacon Pipelines, or donor lists over 25,000 records extend to six to ten weeks because of paginated Beacon extraction time and the individual attachment API pass required by Twenty's file import limitations.

Adjacent paths

Related migrations to explore

Ready when you are

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