CRM migration

Migrate from Blackbaud to Twenty CRM

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

Blackbaud logo

Blackbaud

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Blackbaud and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Blackbaud organizes nonprofit data around constituents, organizations, households, gifts, campaigns, funds, and appeals — with a flexible multi-type custom field system where each category can hold Boolean, CodeTableEntry, Currency, Date, FuzzyDate, Number, or Text values. Twenty CRM uses People (contacts), Companies (accounts), Opportunities (deals), Notes, and Tasks, with a custom field model that requires each field to declare a single type at creation time. We map Blackbaud constituents directly to Twenty People, organizations to Companies, and Blackbaud opportunities to Twenty Opportunities, handling the relationship sequence (Companies must exist before People, which must exist before Opportunities) through ordered migration batches. Gifts, campaigns, funds, and appeals have no direct Twenty equivalent — we surface these as custom objects or reference data so your team can rebuild reporting logic in Twenty's reporting layer. Blackbaud's Workflow Designer automations, email templates, and notification rules do not migrate; FlitStack exports workflow definitions as a rebuild reference for Twenty's workflow engine or external tools. Our migration engine reads from Blackbaud's SKY API (subject to its 10 calls/second throttle and 25,000 daily quota) and writes to Twenty's REST and GraphQL API, sequencing large exports into quota-compliant batches.

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

Blackbaud logo

Blackbaud

What's pushing teams away

  • NXT web interface is significantly slower than the legacy Database View for bulk data entry and record cleanup, with multi-window navigation that extends simple edits into multi-step processes.
  • Steep implementation and ongoing administrative complexity requires dedicated Blackbaud-certified staff, creating vendor lock-in risk and significant switching costs.
  • Personalized pricing without public tiers makes budget planning difficult and creates negotiation asymmetry, especially for organizations mid-contract evaluating alternatives.
  • Frequent product updates and UI changes disrupt established workflows, with staff reporting reduced productivity as they adapt to new interfaces every 12-18 months.
  • SKY API rate limits of 10 calls per second and 25,000 calls per 24 hours on Standard tier constrain automation-heavy workflows and third-party integrations.

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 Blackbaud objects map to Twenty CRM

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

Blackbaud

Constituent

maps to

Twenty CRM

People

1:1
Fully supported

Blackbaud constituents map 1:1 to Twenty People. Name components (prefix, first, middle, last, suffix) concatenate into the Twenty displayName; FlitStack preserves the split components in custom fields for rebuild flexibility. Multiple addresses per Blackbaud constituent collapse to one primary address; remaining addresses surface as custom fields.

Blackbaud

Organization

maps to

Twenty CRM

Company

1:1
Fully supported

Blackbaud organizations map to Twenty Companies with primary field alignment on name, address, and contact fields. Parent-child organizational hierarchies in Blackbaud use a Parent Organization field that FlitStack maps to Twenty's parentCompany foreign key. Organization-constituent relationships are N:N in Blackbaud; since Twenty Company supports only a single companyId foreign key per People record, FlitStack creates a custom junction object in Twenty to preserve these many-to-many associations between organizations and constituent records.

Blackbaud

Household

maps to

Twenty CRM

People + Junction

many:1
Fully supported

Blackbaud households group multiple constituents under one shared household name with designated primary and secondary members. FlitStack handles this by creating one primary People record using the household name and adding other members as related People records linked via a custom HouseholdMember junction object. This approach preserves the household-level identity while maintaining each member's individual constituent data in the correct Twenty People structure.

Blackbaud

Constituent Code

maps to

Twenty CRM

Custom Field on People

1:1
Fully supported

Blackbaud constituent codes classify donors into meaningful categories such as Major Donor, Board Member, Volunteer, or Recurring Giver. FlitStack creates a custom Select field on the People object and populates it with the exact source code values as selectable options. When a constituent code has no matching value in the source data, FlitStack creates a 'Legacy' option to flag these records for post-migration cleanup and review by the administrative team.

Blackbaud

Gift

maps to

Twenty CRM

Custom Gifts Object

1:1
Fully supported

Blackbaud gifts represent a comprehensive fundraising record with fund, appeal, campaign, payment method, soft credits, and tribute fields. Since Twenty has no native gift object, FlitStack creates a custom Gifts object with fields for GiftAmount, GiftDate, Fund, Appeal, Campaign, PaymentMethod, SoftCreditConstituentId, and TributeName. Each gift record links to the constituent People record via a relation field, enabling attribution of donations to individual donors within the Twenty data model.

Blackbaud

Campaign

maps to

Twenty CRM

Custom Campaign Object

1:1
Fully supported

Blackbaud campaigns are fundraising initiatives that track start and end dates, goal amounts, and associated appeal codes. FlitStack creates a custom Campaign object in Twenty linked to the Opportunities attributed to each campaign. Campaign name, start date, end date, and goal amount migrate as custom fields on the Campaign object, preserving the strategic context of fundraising efforts within Twenty's relational structure.

Blackbaud

Fund

maps to

Twenty CRM

Custom Fund Object

1:1
Fully supported

Blackbaud funds define the designation rules for gift money, distinguishing between restricted funds (designated for specific purposes) and unrestricted funds (available for general use). FlitStack creates a read-only custom Fund object in Twenty referenced by Gift records via a relation field. Fund code, description, and restriction type migrate as custom fields on the Fund object, ensuring gift allocation rules remain traceable and auditable in the Twenty environment.

Blackbaud

Appeal

maps to

Twenty CRM

Custom Appeal Field on Gifts

1:1
Fully supported

Blackbaud appeals are specific fundraising ask vehicles within a campaign, such as Annual Fund letter, Gala auction item, or direct mail solicitation. FlitStack creates a custom Appeal pick-list field on the Gifts object so each gift can reference its originating appeal. The appeal code from the Blackbaud source preserves the specific fundraising vehicle attribution, allowing teams to analyze which appeals generate the most giving in Twenty's reporting layer.

Blackbaud

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Blackbaud opportunities map directly to Twenty Opportunities with stage, amount, close date, and owner fields aligned. Blackbaud's opportunity status values (Open, Completed, Aborted) map to Twenty's status field using a value mapping table. Owner resolution uses email matching against Twenty user records; any owners without matching email addresses flag for fallback assignment during the migration run.

Blackbaud

Note / Engagement

maps to

Twenty CRM

Note / Task

1:1
Fully supported

Blackbaud engagement records including constituent notes, call logs, email threads, and meeting records migrate as Twenty Notes (for free-text content) or Tasks (for action items requiring follow-up). Original timestamps, author information, and the parent record link (ConstituentId or OrganizationId) are preserved as custom fields on the Twenty record, maintaining the complete engagement history and audit trail across the migration.

Blackbaud

Attachment / Document

maps to

Twenty CRM

File Attachment

1:1
Fully supported

Blackbaud file attachments on constituents and organizations are downloaded and re-uploaded to Twenty's file storage. File size limits and inline image handling follow Blackbaud's export format; FlitStack maps the attachment's parent record (ConstituentId or OrganizationId) to the corresponding Twenty People or Company ID.

Blackbaud

Blackbaud Custom Field (multi-type)

maps to

Twenty CRM

Twenty Custom Field (single-type)

1:1
Fully supported

Blackbaud custom fields per category support multiple data types simultaneously (Boolean, CodeTableEntry, Currency, Date, FuzzyDate, Number, Text). FlitStack creates one Twenty custom field per Blackbaud field type encountered, naming them with the category prefix (e.g., ConstituentAttribute_Date, ConstituentAttribute_Currency) so no data is lost during 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.

Blackbaud logo

Blackbaud gotchas

High

SKY API rate limits constrain bulk migration throughput

Medium

NXT web view enforces different data entry workflows than legacy Database view

Medium

Custom field code tables must be pre-created in the destination

Low

File relocation takes 2-6 hours and is not resumable

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

  • SKY API rate limits require batch sequencing for large Blackbaud exports

    Blackbaud's SKY API enforces two constraints simultaneously: a hard throttle of 10 calls per second and a daily quota of 25,000 calls. For large Blackbaud instances with hundreds of thousands of constituent and gift records, a single bulk API export will hit the daily quota mid-run. FlitStack sequences export jobs into quota-compliant batches, monitors remaining call quota in real time, and resumes from the last checkpoint when the daily window resets. In cases where SKY API quota is exhausted, FlitStack falls back to Blackbaud's batch export via the Import module, which uses a different access path and avoids the API throttle entirely.

  • Blackbaud Workflow Designer automations do not migrate to Twenty workflows

    Blackbaud Workflow Designer creates multi-step automated sequences with conditional logic, email triggers, and task-generation rules that have no equivalent representation in Twenty's data model. FlitStack migrates data and schema only — workflow definitions must be rebuilt in Twenty's workflow engine or external automation tools. We export a structured JSON representation of every Blackbaud workflow definition (triggers, steps, conditions, and actions) as a rebuild reference for your Twenty admin, but the automation logic itself cannot be transferred automatically because Twenty's workflow capabilities differ architecturally from Blackbaud's rule-based automation model.

  • Blackbaud multi-type custom field categories expand into multiple Twenty fields

    Blackbaud's custom field architecture allows a single category to hold fields of different data types simultaneously — for example, a 'Donor Attributes' category can contain Boolean, Currency, Date, Number, and Text fields. Twenty requires each custom field to declare one type at creation time, so a Blackbaud category with five field types becomes five separate Twenty custom fields with category-prefixed names. This means field counts in Twenty will be higher than the raw Blackbaud custom field count, and your Twenty admin should review the expanded field list before activating views and reports.

  • Gift records have no native Twenty equivalent and require a custom object

    Blackbaud gifts are a first-class object with rich semantics: gift amount, date, fund, appeal, campaign, payment method, soft credits, and tribute fields. Twenty CRM has no native gift or donation object — it is designed for B2B sales pipelines. FlitStack creates a custom Gifts object in Twenty with fields mapping to the gift attributes above, linked to the constituent People record. However, Twenty's native reporting, dashboard, and workflow layers do not natively understand gift data semantics; building fundraising reports in Twenty requires custom views and potentially a BI tool integration.

  • Twenty has no native import UI — migrations use API or script-based CSV ingestion

    Twenty CRM does not yet ship a native import UI for bulk data ingestion as of 2026. All data writes go through the REST or GraphQL API. For Blackbaud-to-Twenty migrations, FlitStack prepares CSV files matching Twenty's expected column format, then uses authenticated API calls to write records in the correct order (Companies before People, People before Opportunities). Large migrations with 100,000+ records require API pagination and rate-limit handling on the Twenty side as well — FlitStack manages both source (Blackbaud SKY API) and destination (Twenty API) throttling simultaneously.

Migration approach

Six steps for a successful Blackbaud to Twenty CRM data migration

  1. Audit Blackbaud data model and export capabilities

    FlitStack connects to Blackbaud via SKY API read-only credentials and inventories all objects: constituents, organizations, households, gifts, campaigns, funds, appeals, opportunities, notes, attachments, and custom field categories with their field types. We assess SKY API rate-limit consumption against your record volumes to determine whether the migration uses API batch exports, Blackbaud Import module exports, or a hybrid approach. This audit produces a migration scope document listing every object, record count, and the export method for each.

  2. Design Twenty schema: custom objects, fields, and relation structure

    FlitStack creates the custom Gifts, Campaign, and Fund objects in Twenty first, then builds custom fields on People and Company for Blackbaud custom field categories (expanding multi-type categories into type-specific fields). We define relation fields between People and Companies, between People and custom Gifts, and between custom Campaigns and Opportunities. The schema plan is delivered as a Twenty workspace setup checklist so your admin can pre-create the objects and fields before FlitStack begins writing data.

  3. Sequence migration batches respecting dependency order

    Twenty's relational model requires Companies to exist before People (via companyId), and People before Opportunities (via contactId or companyId). FlitStack sequences the migration in dependency order: (1) Companies, (2) custom Funds and Campaigns, (3) People (linked to Companies), (4) custom Gifts (linked to People), (5) Opportunities (linked to People and Companies), (6) Notes and Tasks, (7) Attachments. Each batch is API-rate-limited on both source and destination sides, with checkpoint logging so large migrations can resume from the last committed record if interrupted.

  4. Run sample migration with field-level diff

    A representative sample — typically 200–500 records spanning constituents, organizations, gifts, and opportunities — migrates first. FlitStack generates a field-level diff report comparing source values against destination values for every mapped field, highlighting mismatches in date formatting, pick-list values, and null-vs-empty string handling. You verify that constituent codes, gift amounts, campaign links, and custom field values landed correctly before FlitStack commits to the full run. This step also validates that Twenty's custom object field types (Boolean, Number, Date, Select) accepted the source data without truncation.

  5. Execute full migration with delta-pickup cutover window

    The full dataset migrates in dependency order with FlitStack monitoring both SKY API quota consumption and Twenty API write latency. A 24–48 hour delta-pickup window opens at cutover, capturing any Blackbaud records created or modified during the migration run. FlitStack generates a reconciliation report comparing record counts and field totals between Blackbaud and Twenty. If reconciliation identifies discrepancies, a one-click rollback reverts the Twenty workspace to its pre-migration state so the team can investigate and re-run. Audit log is delivered for post-migration compliance review.

  6. Deliver migration artifacts and workflow rebuild reference

    FlitStack delivers the complete set of migration artifacts: Blackbaud workflow definitions exported as structured JSON, a field-mapping reference document, the reconciliation report, and a post-migration checklist covering custom object activation, constituent code pick-list review, gift report setup in Twenty views, and user permission configuration. Your Twenty admin uses the workflow JSON as a rebuild reference for Twenty's workflow engine or external automation tools. FlitStack support remains available for 30 days post-migration to address any data discrepancies discovered during regular use.

Platform deep dives

Context on both ends of the pair

Blackbaud logo

Blackbaud

Source

Strengths

  • Market-leading nonprofit fundraising heritage with Raiser's Edge used by the majority of large US universities and hospitals.
  • Constituent-centric data model supporting Individuals, Households, Groups, and Corporations with relationship mapping.
  • Native fund accounting and GL integration with Financial Edge NXT for organizations on the full Blackbaud stack.
  • Comprehensive export and import modules supporting bulk data extraction for migration scoping.
  • SKY API with OAuth 2.0 authentication and documented endpoints for programmatic data access.

Weaknesses

  • SKY API Standard Edition capped at 10 calls/second and 25,000 calls/day limits real-time integrations.
  • NXT web interface is widely reported as slower and less efficient than legacy Database View for bulk operations.
  • Pricing is opaque with no public tiers, requiring direct sales engagement and multi-year contracts.
  • Frequent UI updates disrupt established staff workflows and require ongoing training investments.
  • Custom field types and code table dependencies create mapping complexity in migrations to non-Blackbaud destinations.
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 Blackbaud 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

    Blackbaud: 10 calls/second (fixed, cannot be increased) and 25,000 calls per 24 hours on Standard Edition. Daily quota can be increased via Account Executive..

  • Data volume sensitivity

    A

    Blackbaud exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Blackbaud 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 Blackbaud to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Small Blackbaud-to-Twenty migrations with under 50,000 records and minimal custom fields typically complete within 48–72 hours of clock time. Mid-size setups with 100,000–500,000 records or complex custom field multi-type configurations require 5–10 days. The longest planning step is designing the custom object schema for gifts, campaigns, and funds — since Twenty has no native fundraising model, this schema work happens before any data moves. SKY API rate-limit quotas can extend export timelines for large datasets if a fallback batch export is needed.

Adjacent paths

Related migrations to explore

Ready when you are

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