CRM migration
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
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Acoustic Campaign and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
Twenty CRM
Person
1:1Acoustic 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
Twenty CRM
Company or tag set
1:manyEach 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
Twenty CRM
Custom Object
1:1Acoustic 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)
Twenty CRM
Tag or Custom Field
lossyAcoustic 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
Twenty CRM
Custom Object (opt-out)
1:1Acoustic 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)
Twenty CRM
Written inventory
lossyAcoustic 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
Twenty CRM
Written content inventory
1:1Acoustic 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
Twenty CRM
Activity (custom)
1:1Acoustic 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
Twenty CRM
Written content inventory
1:1Acoustic 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
Twenty CRM
User
1:1Acoustic 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.
| Acoustic Campaign | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Database | Company or tag set1:many | Fully supported | |
| Relational Table | Custom Object1:1 | Fully supported | |
| Query (Segment) | Tag or Custom Fieldlossy | Fully supported | |
| Suppression List | Custom Object (opt-out)1:1 | Fully supported | |
| Program (Automation Flow) | Written inventorylossy | Fully supported | |
| Mailing | Written content inventory1:1 | Fully supported | |
| Web Tracking Event | Activity (custom)1:1 | Fully supported | |
| Template and Content Block | Written content inventory1:1 | Fully supported | |
| Owner | User1:1 | Fully supported |
Gotchas + challenges
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 gotchas
OAuth API ceiling of 10 concurrent requests limits migration throughput
Multiple Databases do not collapse cleanly into a single destination list
Relational Table joins are evaluated server-side, not exportable as joined data
Programs export structure but not real-time enrollment state cleanly
Suppression Lists must migrate before Contacts to honour opt-outs
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Acoustic Campaign
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Acoustic Campaign and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Acoustic Campaign: Up to 10 concurrent requests per account when authenticated via OAuth; throttle responses returned beyond the ceiling.
Data volume sensitivity
Acoustic Campaign exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Acoustic Campaign to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Acoustic Campaign
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.