CRM migration

Migrate from Acoustic Campaign to Twenty CRM

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

Acoustic Campaign logo

Acoustic Campaign

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between Acoustic Campaign and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Acoustic Campaign and Twenty CRM serve different core functions: Acoustic is a database-centric marketing automation platform built on IBM's legacy email infrastructure, while Twenty is an open-source CRM that models People, Companies, and Activities with a modern relational schema. The migration is a structural conversion, not a direct record copy. Acoustic stores contacts in one or more Databases with Relational Tables for transactional joins; Twenty expects Companies created first, then People linked to those Companies, then Activities linked to People or Companies. We export each Acoustic Database independently, deduplicate contacts that appear across multiple Databases, load Suppression Lists into Twenty ahead of any contact import, and recreate the most-referenced Relational Table rows as Twenty custom objects. Acoustic's Programs (automation flows) and cross-channel campaign configurations do not migrate as code; we deliver a written inventory for the customer's admin to evaluate rebuilding in Twenty's workflow engine or an external automation tool.

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

Acoustic Campaign logo

Acoustic Campaign

What's pushing teams away

  • The user interface feels dated, with users describing it as complicated and old fashioned compared to modern marketing platforms — onboarding new marketers takes longer than it should.
  • Journey planning is mediocre at best — the Programs builder is difficult to use for flows that depend on real-time customer actions, and competitor journey canvases handle the same use cases more cleanly.
  • The API is complicated and updates from third-party systems land near real-time rather than truly real-time, which breaks use cases requiring sub-minute personalisation latency.
  • Pricing is not publicly disclosed and is sold through enterprise contracts only — buyers cannot self-serve, and overage terms are negotiated rather than transparent.
  • Ownership has changed twice (IBM to Centerbridge 2019, Francisco Partners growth investment 2022) which creates roadmap uncertainty for procurement teams evaluating multi-year commitments.

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

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

Acoustic Campaign

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Acoustic Campaign Contacts migrate to Twenty CRM People records. The contact's email address serves as the dedupe key. For contacts that represent organisations rather than individuals (common in B2B Acoustic databases), we map to Twenty Company records instead, or to Person records linked to an appropriate Company record if a match exists in the destination. The Acoustic contact identifier is preserved in a custom twenty_original_id__c field for audit traceability.

Acoustic Campaign

Database

maps to

Twenty CRM

Company or tag set

1:many
Fully supported

Each Acoustic Database is treated as a separate source schema. When the same contact email appears in multiple Acoustic Databases, we run a deduplication pass using the most recent ModifiedDate across all Databases as the source of truth. The winning record's full field set is imported; others are flagged in a deduplication report. If Databases represent distinct business units, we optionally create a Company record per Database as a grouping tag in Twenty rather than collapsing to a single pool.

Acoustic Campaign

Relational Table

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Acoustic Relational Tables hold transactional or behavioural data joined to Contacts via a shared key. We export each Relational Table's rows independently and recreate them as Twenty Custom Objects with the same column names and types. We add a lookup field (personId or companyId) to the Custom Object schema and populate it by resolving the join key from the source table against the migrated Person records. The Query membership snapshot for each Relational Table is exported as a CSV of contact email addresses and migrated as a tag set or custom field on the relevant Person records.

Acoustic Campaign

Query (Segment)

maps to

Twenty CRM

Tag or Custom Field

lossy
Fully supported

Acoustic Queries define saved filter logic over Contacts and Relational Tables that is evaluated at send time. The Query export gives current membership as a snapshot list of email addresses. We import each Query's membership snapshot as a tag set (multi-select or comma-separated custom field) on the relevant Person records in Twenty. The filter logic itself does not carry across; we document each Query's definition in the handoff inventory so the customer's admin can rebuild it as a saved filter view in Twenty if needed.

Acoustic Campaign

Suppression List

maps to

Twenty CRM

Custom Object (opt-out)

1:1
Fully supported

Acoustic Suppression Lists hold opted-out, bounced, and Do Not Email addresses. We load suppression entries into a Twenty custom object (e.g. optOutEntry) with email, suppressionReason, and suppressionDate fields before any Person import begins. This prevents any migrated suppression address from receiving a welcome or test send during the cutover window. After migration, the customer's admin configures a pre-send check in Twenty or their sending tool that queries this custom object before dispatching.

Acoustic Campaign

Program (Automation Flow)

maps to

Twenty CRM

Written inventory

lossy
Fully supported

Acoustic Programs are multi-step automated sequences with enrollment state, branching, and timer logic. Twenty CRM does not include a native workflow or journey builder in its core product. We export the full Program definitions including steps, conditions, timer configurations, and enrollment counts, and deliver them as a written inventory with step-by-step descriptions and the recommended rebuild approach in an external automation tool (n8n, Make, or a custom API-based workflow). We do not migrate Programs as executable code.

Acoustic Campaign

Mailing

maps to

Twenty CRM

Written content inventory

1:1
Fully supported

Acoustic Mailings (campaign sends, autoresponders, recurring campaigns) export with name, subject line, sender address, schedule, and HTML content. We deliver the HTML content and metadata as a structured content inventory. The sending infrastructure (Acoustic's email, SMS, push, WhatsApp channels) does not carry to Twenty; the customer's admin selects which mailing content to repurpose in their new sending platform.

Acoustic Campaign

Web Tracking Event

maps to

Twenty CRM

Activity (custom)

1:1
Fully supported

Acoustic Web Tracking events capture page visits and on-site behaviour tied back to Contacts. We export the event history as a CSV of personEmail, eventType, eventTimestamp, and eventPayload, and import these as Twenty Activities linked to the corresponding Person records. The event schema is recreated as a custom Activity type in Twenty so the activity timeline shows behavioural history alongside calls, emails, and meetings.

Acoustic Campaign

Template and Content Block

maps to

Twenty CRM

Written content inventory

1:1
Fully supported

Acoustic email templates and reusable content blocks export as HTML. Acoustic's $contact.field$ personalisation syntax is translated to the destination's tag format (Liquid, Handlebars, or plain placeholder notation) as part of the content inventory. The templates themselves do not import as live assets into Twenty because Twenty does not include an email template editor; they are handed off as HTML files for use in the customer's chosen sending platform.

Acoustic Campaign

Owner

maps to

Twenty CRM

User

1:1
Fully supported

Acoustic Campaign Stores owner assignments on Contacts and Program enrollments. We extract distinct owner identifiers and attempt to match by email against the Twenty workspace's User table. Any owner without a matching Twenty User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Owner assignments on migrated records are updated once User resolution is confirmed.

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.

Acoustic Campaign logo

Acoustic Campaign gotchas

High

OAuth API ceiling of 10 concurrent requests limits migration throughput

High

Multiple Databases do not collapse cleanly into a single destination list

Medium

Relational Table joins are evaluated server-side, not exportable as joined data

Medium

Programs export structure but not real-time enrollment state cleanly

High

Suppression Lists must migrate before Contacts to honour opt-outs

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

  • Suppression List import must precede every other object

    Acoustic Campaign Suppression Lists must be loaded into Twenty CRM before any Person records are imported. If a Person record lands in Twenty before its suppression entry is registered, the customer's new sending tool may dispatch an email to an address that had previously opted out, bounced, or been marked Do Not Email in Acoustic. This is a CAN-SPAM and GDPR exposure. We always sequence the suppression load as step one of the migration, validate the destination custom object has the suppression entries before enabling any sending capability, and run a spot-check send against a sample of suppressed addresses to confirm they are honoured.

  • Multiple Acoustic Databases require deduplication across overlapping contacts

    Accounts commonly run two or more Acoustic Databases with different schemas, each containing contacts that overlap in email address. Twenty CRM expects a single unified Person pool with unique email addresses per workspace. We run a multi-pass deduplication pass across all Databases before import: for each email appearing in multiple Databases, we select the record with the most recent MODIFIED_DATE as the canonical source, merge field values where one Database has a populated field the other lacks, and flag the deduplication decision in a reconciliation report. If Databases represent genuinely separate business units that should not share contacts, we discuss a tagging strategy or separate workspace approach with the customer before migration begins.

  • Relational Table join logic is not exportable as a live relationship

    Acoustic Queries that segment on Relational Table data perform the join at send time within the platform. The Query export gives a snapshot list of contact email addresses that matched at export time, not the underlying join condition or the Relational Table rows. We export both the Query membership snapshot and the Relational Table rows separately. The membership snapshot becomes tag sets on Person records in Twenty. The Relational Table rows become a Twenty custom object. The join key is resolved by matching the Relational Table's contact identifier column against the migrated Person records. If the join logic is business-critical (e.g. subscription tier, purchase history segment), we document it for the customer's admin to rebuild as a saved filter in Twenty.

  • Twenty is early-stage software with evolving database schema

    Twenty CRM reached general availability in 2024 and is under active development with frequent schema and API changes. GitHub issue #14705 documents a known case where self-hosted instances updating between minor versions (1.3.0 to 1.6.7) see a blank CRM UI after database migration. We run migrations against a tested version snapshot confirmed with the customer, and we back up the Twenty database before applying any updates post-migration. For self-hosted deployments, we coordinate with the customer's technical team on the update procedure. Reporting and analytics features are limited in Twenty at present; teams requiring dashboards pair with Metabase or an external BI tool, which is documented in the handoff inventory.

  • Acoustic Programs do not have a migration path to Twenty

    Acoustic Programs (multi-step automated sequences with enrollment state, conditional branching, and timer-based delays) have no equivalent in Twenty CRM's core product. Twenty does not include a native workflow builder, journey canvas, or automation engine. We do not migrate Programs as executable code. We export the full Program definition (steps, conditions, timers, enrollment counts, and completion state) as a written inventory document. The customer's admin reviews the inventory and rebuilds the highest-priority automations in their chosen external automation tool (n8n, Make, or a custom integration). Lower-priority Programs are documented but not actioned unless separately scoped.

Migration approach

Six steps for a successful Acoustic Campaign to Twenty CRM data migration

  1. Discovery and Acoustic environment audit

    We audit every Acoustic Campaign Database in the source environment: schema (standard and custom fields per Database), contact counts per Database, Relational Table names and row counts, Query names and current membership sizes, Suppression List sizes and reason distributions, active Program definitions and enrollment counts, and recent Mailing history. We identify which Databases overlap in contact email (for deduplication planning), which Relational Tables are referenced in Queries (for join reconstruction), and which Programs have live enrollments at cutover. The discovery output is a written migration scope document with record counts, a deduplication plan, and a custom object schema design for Twenty.

  2. Twenty schema provisioning and custom object design

    We create the Twenty workspace schema before any data import. This includes provisioning the optOutEntry custom object for suppression entries, any custom objects matching Acoustic Relational Tables, and all custom fields on Person and Company records. We configure lookup relationships from custom objects to Person records based on the join key identified during discovery. If the customer is self-hosting Twenty, we confirm the self-hosted version against the compatibility matrix and coordinate the database migration with their technical team. If they are on Twenty Cloud Pro, we create the schema via the Twenty API.

  3. Suppression List load and validation

    We load every Suppression List entry from Acoustic into Twenty's optOutEntry custom object before importing any Person records. Suppression entries are normalised (lowercase email, trimmed whitespace), deduplicated within the suppression set, and validated against the import file for malformed addresses. After load, we run a spot-check query confirming that suppressed addresses are present in Twenty and that the customer can configure a pre-send check against this custom object in their sending tool. This step is gated: no Person import begins until the suppression load is confirmed complete and validated.

  4. Company and Person migration in dependency order

    We follow Twenty's import dependency order: Companies first, then Persons. Acoustic Database-level address fields map to Company address fields. Acoustic Contacts with an org-level COMPANY value create or match a Twenty Company record first, then link as a Person with companyId resolved. We run the multi-Database deduplication pass across all contact exports before import, selecting the most-recently-modified record per email as the canonical version. Custom fields on Contact map to custom fields on Person. Each phase emits a row-count reconciliation report comparing the Acoustic export count to the Twenty insert count, with any gap investigated and resolved before the next phase.

  5. Relational Table and Query membership migration

    We import Relational Table rows as Twenty custom objects, resolving the join key against migrated Person records to populate the personId lookup. For each Acoustic Query, we import the membership snapshot as a tag set on the relevant Person records. The join logic itself is not reconstructed as a live relationship; it is documented for the customer's admin to rebuild as a saved filter. Custom object schema is validated post-import with a spot-check of 25-50 records confirming that personId lookups resolve correctly and that custom object fields match the source Relational Table data.

  6. Cutover, delta sync, and automation inventory handoff

    We freeze writes to Acoustic Campaign during the cutover window, run a final delta migration of any contact records modified during the migration run, then mark Twenty as the system of record. We deliver the Program and Query inventory document to the customer's admin, flagging each Program with its step count, enrollment state, trigger type, and rebuild recommendation. We deliver the Mailing and Template content inventory as a structured file set. We support a one-week hypercare window for reconciliation issues. We do not rebuild Acoustic Programs in Twenty or any external tool as part of standard migration scope; that work is documented and handed off for a separate scoping engagement.

Platform deep dives

Context on both ends of the pair

Acoustic Campaign logo

Acoustic Campaign

Source

Strengths

  • Multi-Database architecture with Relational Tables supports complex audience models other ESPs cannot represent.
  • Cross-channel sending across email, SMS, push, WhatsApp, social, and web from one platform.
  • Enterprise-scale deliverability and infrastructure proven at 120+ billion messages per year.
  • Programs and Queries handle sophisticated triggered automation when configured by an experienced operator.
  • XML and REST APIs cover most operations, including bulk contact imports and event triggering.

Weaknesses

  • User interface is dated and onboarding new marketers takes longer than modern competitors.
  • Journey planning in Programs is weaker than Braze, Iterable, or Salesforce Marketing Cloud equivalents.
  • API is complex and updates from third-party systems are near real-time rather than truly real-time.
  • Pricing opacity and enterprise-only contracts make it hard to evaluate without sales engagement.
  • Multiple ownership changes (IBM, Centerbridge, Francisco Partners) create roadmap uncertainty.
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. 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 Acoustic Campaign and Twenty 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

    C

    Acoustic Campaign: Up to 10 concurrent requests per account when authenticated via OAuth; throttle responses returned beyond the ceiling.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your Acoustic Campaign 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 15,000 contacts with one or two Databases and no Relational Table reconstruction. Migrations with multiple Databases requiring deduplication, Relational Tables exceeding 50,000 rows, or large suppression lists move to six to ten weeks because of multi-pass deduplication, custom object schema validation, and the cutover delta sync. Twenty's import dependency order (Companies before Persons) is built into the schedule; any delay in custom object schema approval pushes the timeline accordingly.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Acoustic Campaign.
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