CRM migration

Migrate from Taguchi to Twenty CRM

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

Taguchi logo

Taguchi

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

55%

6 of 11

objects map 1:1 between Taguchi and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Taguchi and Twenty CRM occupy different categories, which makes this migration a marketing-platform-to-CRM data consolidation rather than a like-for-like switch. Taguchi organizes audiences around Subscribers, Lists, and behavioral Activities (opens, clicks, custom events) within an Organization hierarchy. Twenty CRM uses a standard People, Company, and Opportunity model with a custom object framework. We map Taguchi Subscribers to Twenty People, Taguchi Organizations to Twenty Companies, and Taguchi List Memberships to custom tag or property fields on People records. Activity history (opens, clicks, custom events) migrates as Task or Note records on the corresponding People record. Bounced subscriber flags from Taguchi are preserved as a custom suppression field in Twenty, preventing re-activation on the new sending domain. Automation workflows and SMS campaign logic do not migrate; we deliver a written inventory of these for the customer's admin to rebuild or reconfigure.

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

Taguchi logo

Taguchi

What's pushing teams away

  • List membership immutability — once a subscriber is added to a list, the association cannot be removed via API
  • Bounced subscriber flagging is permanent and irreversible without Taguchi Support involvement, blocking re-engagement
  • Export limitations — the platform lacks a documented bulk export endpoint, making full data pull migration-dependent on API scripting
  • Custom field deletion is soft-only — fields removed from the UI remain tagged to subscriber profiles, causing schema drift
  • Limited public documentation on rate limits and API versioning makes integration planning uncertain

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

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

Taguchi

Subscriber

maps to

Twenty CRM

People

1:1
Fully supported

Taguchi Subscribers map to Twenty CRM People records. The Subscriber email address becomes the People email field and serves as the primary dedupe key. Subscriber status (active, bounced, unsubscribed) maps to a custom suppression field on People. We preserve the Taguchi Subscriber ID as an external identifier for reference. Any Subscriber without an email address is held in a quarantine queue for the customer to resolve before import.

Taguchi

Organization

maps to

Twenty CRM

Company

1:1
Fully supported

Taguchi Organizations (the owning entity for each Subscriber) map to Twenty CRM Company records. The Organization name becomes the Company name field. We resolve the Organization-to-Subscriber relationship during import so that each People record is linked to its owning Company via the Company link field in Twenty. If a Subscriber has no Organization, the People record is created without a Company link.

Taguchi

Custom Field

maps to

Twenty CRM

Custom Field (on People or Company)

1:1
Fully supported

Taguchi key-value custom fields per Subscriber map to Twenty CRM custom fields on the People object. We snapshot the full custom field schema during discovery. Fields deleted from Taguchi's UI but still tagged to Subscriber profiles are reconstructed as archived custom fields in Twenty to preserve historical data integrity. Field types are inferred from Taguchi data values (text, number, date, boolean) and mapped to the equivalent Twenty field type.

Taguchi

List Membership

maps to

Twenty CRM

Tag or Custom Multi-Select Field

lossy
Fully supported

Taguchi List memberships are append-only and cannot be deleted via API. We document all List memberships during discovery and map them as either Twenty CRM tags on the People record or as a custom multi-select field. The customer chooses the strategy during scoping. Note that Taguchi list memberships cannot be reversed post-import; the mapping is one-directional from Taguchi's immutable state.

Taguchi

Cluster

maps to

Twenty CRM

Custom People Property or Tag

1:1
Fully supported

Taguchi Clusters identify the subscriber segment a contact is most strongly associated with. We map Clusters as a custom People property (text or select field) or as a tag in Twenty CRM. Clusters represent behavioral segmentation data and are preserved for reporting purposes. The customer confirms the preferred target field during discovery.

Taguchi

Activity: Open

maps to

Twenty CRM

Task (activity type = Email Opened)

1:many
Fully supported

Taguchi tracks per-Subscriber email open events as Activity records. We migrate open events as Task records with a custom activity type field set to Email Opened, linked to the People record via the Activity link. The original Taguchi timestamp is preserved as the Task due date. Multiple opens per Subscriber generate multiple Task records.

Taguchi

Activity: Click

maps to

Twenty CRM

Task (activity type = Link Clicked)

1:many
Fully supported

Taguchi click events (URL, timestamp) migrate as Task records with activity type Link Clicked, linked to the corresponding People record. The clicked URL is stored in a custom Task description or custom field. Multiple clicks per Subscriber generate multiple Task records. We preserve the chronological order of engagement events.

Taguchi

Activity: Custom Event

maps to

Twenty CRM

Task (activity type = Custom Event)

1:many
Fully supported

Taguchi custom events (arbitrary behavioral triggers defined by the customer) migrate as Task records with a custom activity type field set to the original event name. Event metadata is stored in Task description. Custom events with numeric values are stored in a custom Task field for potential reporting. The customer confirms which custom events are in active use during discovery.

Taguchi

Campaign

maps to

Twenty CRM

People Custom Property (campaign association)

1:1
Fully supported

Taguchi Campaigns link Subscribers to sends and track send performance. We migrate campaign associations as metadata on People records rather than as standalone Campaign objects, since Twenty CRM does not have a native Campaign object in the base data model. Campaign name, send date, and send status (delivered, bounced, opened) are stored as custom People properties.

Taguchi

Broadcast

maps to

Twenty CRM

People Custom Property (broadcast metadata)

1:1
Fully supported

Taguchi one-time broadcast sends migrate as broadcast metadata on People records. We preserve broadcast name, send date, recipient count, and open/click metrics as custom properties or as linked activity log entries against the People record. Broadcast content and scheduling metadata are documented separately for the customer's admin to reference during campaign rebuild.

Taguchi

SMS Message

maps to

Twenty CRM

Task (activity type = SMS Sent or SMS Received)

1:many
Fully supported

Taguchi SMS send history migrates as Task records with activity type SMS Sent or SMS Received, linked to the People record. Phone number fields on the Subscriber must be present and E.164-validated before SMS activity can be linked. We flag any Subscriber with a missing or invalid phone number during discovery so the customer can decide whether to exclude SMS history or enrich the phone field before 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.

Taguchi logo

Taguchi gotchas

High

Bounced subscriber flag is permanent without Taguchi Support

Medium

Custom fields persist on deletion and cannot be hard-deleted

Medium

List membership is append-only — no deletion via API

Medium

No publicly documented bulk export endpoint

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

  • Bounced subscriber flags are permanent in Taguchi without Support

    Taguchi marks bounced Subscribers with a flag that can only be cleared by Taguchi Support. Bounced Subscribers are excluded from all email sends automatically. When migrating OUT of Taguchi to Twenty CRM, we extract the bounced flag and write it as a suppression status on the People record. Any Subscriber with a bounced flag is quarantined on the destination so they cannot be re-activated without explicit admin action. This prevents the customer's new sending domain from immediately landing on blocklists. We recommend running a deliverability check on the bounced list before migration cutover.

  • No bulk export endpoint requires scripted cursor-based iteration

    Taguchi's V4 and V5 APIs support subscriber creation, update, and query endpoints, but there is no documented bulk export or batch retrieval method. We implement cursor-based pagination over the subscriber list endpoint and chunk reads to avoid timeout scenarios. Databases over 25,000 Subscribers require extended iteration time during discovery and extraction, which extends the migration timeline and budget. We advise customers with large databases to budget additional time for the discovery phase.

  • List membership is append-only with no delete via API

    Taguchi list memberships can be created and updated at any time but can never be deleted. Migrating Subscribers with active list memberships to Twenty CRM will create a one-directional schema difference, since Twenty supports tag deletion. We handle this by documenting the full list of membership associations during discovery and allowing the customer to choose whether to import list names as tags, custom People properties, or both on the destination. The customer should confirm their preferred strategy before migration.

  • Custom fields persist on deletion and cannot be hard-deleted

    When a custom field is deleted from the Taguchi UI, the field and its values are removed from the management page but remain tagged to all Subscriber profiles. The field cannot be re-created with the same key. We handle this by snapshotting all custom field definitions during discovery. If a field appears in Subscriber data but is absent from the current schema page, we reconstruct it as an archived custom field on the Twenty CRM People object to preserve data integrity. The customer reviews the archived field list before migration finalizes.

  • Twenty CRM v1.0 Docker/k8s migration failures require fresh install

    GitHub issue #12936 documents that Twenty v1.0 deployments via Docker or Kubernetes can fail during database migration startup, specifically when the app tries to access the core.keyValuePair table before it exists. This affects fresh installations, not existing deployments. We confirm the Twenty installation version and deployment method before migration. If the customer is deploying a new Twenty instance for this migration, we recommend verifying the Docker image tag or Helm chart version is post-fix before beginning the data load.

Migration approach

Six steps for a successful Taguchi to Twenty CRM data migration

  1. Discovery and data audit

    We audit the source Taguchi account across Subscribers (active, bounced, unsubscribed), Custom Fields, List memberships, Organization hierarchy, Cluster assignments, Activity history (opens, clicks, custom events), Campaign associations, Broadcast metadata, and SMS message logs. We snapshot the full custom field schema, including any fields deleted from the UI but persisting on Subscriber profiles. We assess subscriber count to estimate extraction time given Taguchi's lack of a bulk export endpoint. The discovery output is a written migration scope document with record counts per object type and a custom field inventory.

  2. Bounced subscriber flag extraction and suppression list generation

    We extract all bounced Subscribers from Taguchi before any active Subscriber data moves. The bounced flag is written as a custom suppression field on the Twenty CRM People record during import. Any Subscriber with a bounced flag is imported in a quarantined state (custom Suppression Status = Bounced) and excluded from any email activation workflow until explicitly cleared by the customer's admin. We generate a deliverability risk report listing all bounced addresses for the customer's review before cutover.

  3. Twenty CRM schema setup

    We configure the Twenty CRM workspace before data import. This includes creating custom fields on the People and Company objects (matched to Taguchi custom field types), setting up Company records from Taguchi Organizations, and creating any custom activity type fields needed to represent Taguchi event types (Email Opened, Link Clicked, Custom Event, SMS Sent, SMS Received). We configure Tags to support List membership import if the customer selects the tag-based strategy. Custom fields must be created in Twenty before CSV import begins because Twenty's CSV import creates records, not fields.

  4. Scripted extraction from Taguchi API

    We run cursor-based paginated extraction over Taguchi's subscriber and activity APIs. Subscribers are extracted in batches with Organization, Custom Field values, List memberships, Cluster, and status flags. Activity history (opens, clicks, custom events) is extracted separately and linked to Subscriber records via the Subscriber ID. Campaign and Broadcast metadata is extracted and mapped to People custom properties. SMS message logs are extracted with phone number E.164 validation. All extractions use exponential backoff to respect API rate limits. Large databases (over 25,000 Subscribers) are extracted in staged batches to avoid timeouts.

  5. Data transformation and staging

    We transform extracted data into Twenty CRM-compatible CSV format. Subscriber status flags are mapped to the custom suppression field. Organization references are resolved to Company IDs (resolved in the next step). Custom field values are typed (text, number, date, boolean) and validated against the Twenty field types. Activity records are linked to Subscriber IDs that will become People IDs after import. List memberships are serialized as tag strings or multi-select values depending on the customer's chosen strategy. Bounced Subscribers are staged in a separate import batch with quarantine flags.

  6. Production import in dependency order

    We run production import in dependency order: Companies (from Taguchi Organizations), then People (from Taguchi Subscribers with suppression flags and Company links resolved), then Tags and People custom properties (List memberships and Clusters), then Activity history (Tasks linked to People records). Each phase emits a row-count reconciliation report. Bounced Subscribers are imported last with quarantine flags active. We run a post-import spot check comparing 25-50 random Subscriber records in Taguchi against their corresponding People records in Twenty to verify field-level accuracy.

  7. Cutover, validation, and automation rebuild handoff

    We freeze Taguchi writes during cutover, run a final delta migration of any Subscribers or Activities modified during the migration window, then enable Twenty CRM as the system of record. We deliver a written inventory of Taguchi automation workflows, campaign journeys, and SMS sequences with recommendations for rebuilding equivalents in Twenty CRM's workflow builder. We do not rebuild workflows as part of the migration scope. We support a one-week hypercare window where we resolve any data reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Taguchi logo

Taguchi

Source

Strengths

  • Behavioral activity tracking (opens, clicks, custom events) per subscriber record
  • Multi-channel support for email and SMS from a unified subscriber profile
  • Calculated custom fields with per-field statistics and value distribution
  • Organization and cluster-based subscriber segmentation
  • API parity with admin interface — all UI actions available via API

Weaknesses

  • No bulk export endpoint — migration relies on scripted API iteration
  • Rate limits and API versioning are not publicly documented
  • List memberships are immutable post-creation — no delete via API
  • Bounced subscriber flags are permanent without manual Support intervention
  • Workflow and automation logic are not portable between platforms
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 Taguchi 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

    Taguchi: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Taguchi 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 accounts under 10,000 active Subscribers with standard custom field schemas and under two years of activity history. Migrations with over 25,000 Subscribers, complex custom field schemas (over 20 fields), multi-year activity histories, or SMS message logs extend to six to ten weeks because of Taguchi's scripted API extraction time and custom field reconstruction work. Taguchi's lack of a bulk export endpoint is the primary timeline variable.

Adjacent paths

Related migrations to explore

Ready when you are

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