CRM migration

Migrate from Listrak to Twenty CRM

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

Listrak logo

Listrak

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

58%

7 of 12

objects map 1:1 between Listrak and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Listrak to Twenty CRM is a cross-category migration: Listrak is a retail-focused marketing automation platform (email, SMS, MMS, push) with unified contact profiles and Journey Hub sequencing; Twenty CRM is an open-source, self-hostable CRM with People, Companies, and Opportunities as core objects, accessed via a GraphQL API at /graphql with custom objects managed through the /metadata endpoint. There is no direct object equivalence—Listrak Contacts with behavioral and channel-preference data map to Twenty People with custom fields carrying Listrak properties; Listrak Companies map to Twenty Companies; Listrak Deals map to Twenty Opportunities. Mobile Subscribers require explicit opt-in scrubbing before export per Listrak's compliance guide. We do not migrate Journey Hub automations, email templates, or analytics reports as code; we deliver a written inventory of each for your admin to rebuild in Twenty's workflow builder.

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

Listrak logo

Listrak

What's pushing teams away

  • Customers report unpredictable and escalating pricing with contracts that auto-renew without review, locking brands into unfavorable terms they did not intend to continue.
  • Integration costs exceed initial expectations—Listrak advertises free website connections but customers report spending thousands to achieve functional integrations.
  • The platform suffers from slow performance and bloat, with users describing the setup and learning curve as steep and difficult to scale across teams.
  • Account executives provide poor follow-up and customer service deteriorates significantly after initial contract signing, according to multiple negative reviews.
  • The platform is not mobile-app-first, requiring manual audience segment uploads rather than in-platform segmentation for mobile-first use cases.

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

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

Listrak

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Listrak Contacts map to Twenty People. We extract email address, full name, opt-in status, opt-in date, and lifecycle stage from Listrak's unified contact profile. Behavioral data (last click, last open, purchase history reference) migrates to custom fields on the Person record. We preserve the original opt-in timestamp in a custom field listrak_opt_in_date__c for compliance audit. The contact's email address is the dedupe key during import.

Listrak

Mobile Subscriber

maps to

Twenty CRM

Person (custom field: mobile_number__c)

1:1
Fully supported

Listrak Mobile Subscribers map to Twenty People with a mobile_number__c custom field. Listrak requires explicit written confirmation that the export list has been scrubbed of opted-out contacts before mobile export—any opted-out contact in the file will import as active into Twenty. We validate this condition before processing mobile loads and surface any records with ambiguous opt-in status for manual review. Phone numbers must be stored as text (not numeric string) to avoid truncation of leading zeros and country codes.

Listrak

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Listrak Companies (if used) map directly to Twenty Company. We extract company name, domain, and address fields. Company name is the dedupe key; domain becomes the Website field. Listrak does not have a formal Company object for all accounts—some deployments store company data only within Contact records. We audit the Listrak account to determine whether Companies exist as separate records or as embedded contact properties and adjust the migration scope accordingly.

Listrak

Suppression List

maps to

Twenty CRM

Person (custom field: opt_out__c)

lossy
Fully supported

Listrak Suppression and Unsubscribe Lists export separately from active contacts. We load suppressions into Twenty first by setting a custom boolean field opt_out__c = true on the matching Person record, or by setting an email opt-out custom field if Twenty supports it at migration time. This prevents the platform from sending to opted-out addresses after cutover. Suppression loading must complete before any active contact import to guarantee compliance posture is intact at cutover.

Listrak

Segment (Audience)

maps to

Twenty CRM

Person (custom field: segment__c) + View

1:1
Fully supported

Listrak Segments filter by email behavior, SMS engagement, and channel subscription status. We map these filter definitions to Twenty custom picklist fields on Person (segment_email_activity__c, segment_sms_status__c) and create corresponding Views in Twenty filtered to match each Listrak segment. Segment names migrate as picklist values; filter criteria are documented as a written mapping for the customer's admin to configure as Twenty Views post-migration.

Listrak

Custom Contact Property

maps to

Twenty CRM

Custom Field on Person or Company

1:1
Fully supported

Listrak supports custom contact properties but not all are accessible via standard export—some fields exist only in the UI and require API enumeration to identify. We flag which custom fields appear in the Listrak API versus only in the UI and adjust the migration scope to include API-accessible fields. Fields that are UI-only are documented with a data request note for manual extraction or API script pre-migration. Custom fields in Twenty must be created in Settings → Data Model before the CSV import runs because the import creates records, not fields.

Listrak

Email Template

maps to

Twenty CRM

External (documentation only)

lossy
Fully supported

Listrak email templates export as raw HTML or must be manually rebuilt in the destination's editor. We do not import raw HTML templates into Twenty because Twenty does not have a native email template builder. We export the HTML and document the template structure (header, body, footer, CTA blocks, imagery) as a written handoff with recommendations for rebuilding in the customer's chosen email sending tool (e.g., Klaviyo, Postmark, SendGrid) that integrates with Twenty.

Listrak

Journey Automation

maps to

Twenty CRM

External (documentation only)

lossy
Fully supported

Listrak Journey Hub automations (cart abandonment, replenishment, browse recovery sequences) represent complex multi-step, multi-channel logic that does not export as a transferable object. We document the full automation tree—triggers, conditions, time delays, channel sequence (email → SMS → push), and exit criteria—for each active Journey. The customer's admin rebuilds these in their chosen automation tool post-migration. This documentation delivery is included in the migration scope; the rebuild itself is outside scope.

Listrak

Analytics Report (historical)

maps to

Twenty CRM

External (CSV archive)

lossy
Fully supported

Listrak's historical campaign performance data exports as flat CSV files on the nightly SFTP schedule. We capture the scheduled export configuration and extract all historical reports that exist before cutover. We deliver these as a named archive (campaign_history_[date].csv) rather than importing them into Twenty, which does not have a native campaign analytics object. The customer's BI team or data warehouse integrates these CSV files as needed.

Listrak

Opt-in Source (mobile attribution)

maps to

Twenty CRM

Person (custom field: acquisition_source__c)

lossy
Fully supported

Listrak tracks acquisition channel and keyword campaign sources for mobile subscribers. This attribution data may live in a separate export joined on mobile number. We extract acquisition_source__c (keyword, campaign, referrer) and preserve it as a custom field on the corresponding Person record during mobile subscriber migration. If the acquisition source export requires a separate join, we include it in the mobile migration phase and flag any unmatched records for reconciliation.

Listrak

Engagement (calls, emails, meetings, tasks)

maps to

Twenty CRM

Task or Note

1:1
Fully supported

Listrak engagement records (calls, emails, meetings, tasks, notes) from the unified contact timeline can be mapped to Twenty Task and Note records. We link each activity to the corresponding Person record by email match. TaskSubtype = Call for call records; Task for task records; Note for freeform notes. Activity timestamps preserve the original Listrak timestamp for timeline ordering. Engagement data volume determines whether we use the Twenty GraphQL API batch endpoint or CSV import for this phase.

Listrak

Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Listrak Owner records (assigned contacts, campaigns, and journeys) map to Twenty WorkspaceMembers. We match by email address. Any Listrak Owner without a matching Twenty WorkspaceMember is held in a reconciliation queue—Twenty requires users to be invited and to accept their invitation before Owner lookups can be resolved during import. We flag this dependency and coordinate with the customer's admin to provision missing users before record import begins.

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.

Listrak logo

Listrak gotchas

High

Auto-renewing contracts trap brands into unintended multi-year commitments

High

Opt-out scrubbing is mandatory before Listrak mobile export

Medium

Nightly SFTP exports use flat file format not real-time API

Medium

Email templates require rebuild rather than direct transfer

Medium

Journey automations are not portable objects in Listrak's export

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

  • Listrak's nightly SFTP export is not a real-time API

    Listrak's data export operates on an individual nightly cadence (~1 AM EST) to SFTP endpoints, not a real-time push API. This means behavioral and engagement data may be up to 24 hours stale at cutover. We schedule migration data pulls to align with the nightly export window and capture any manual exports generated during the migration project outside the standard schedule. For time-sensitive migrations, we negotiate a cutover window that accounts for the last available nightly export.

  • Mobile subscriber export requires written opt-in scrubbing confirmation

    Listrak's mobile migration guide explicitly requires that only opted-in contacts be included in exports—any opted-out contact included in the file will be imported into Twenty as active. We validate this condition before processing mobile contact loads and surface any records with ambiguous opt-in status for manual review. The customer must provide written confirmation that the export list has been scrubbed, per Listrak's compliance documentation.

  • Custom fields must exist in Twenty before CSV import runs

    Twenty's CSV import creates records, not fields. All custom fields must be created in Settings → Data Model via the /metadata API before any import begins. We pre-create every custom field (with correct data type: text, number, date, picklist, boolean) and configure field settings (required, unique) before running the migration. Fields created in the wrong type require deletion and re-creation, which is a time-consuming process that can delay the migration timeline.

  • WorkspaceMembers must be invited and active before Owner lookups resolve

    Twenty requires users to be invited and to accept their invitation before Owner lookups can be resolved during import. If the Listrak Owner data includes references to users who do not yet exist in Twenty, those records will import with no Owner assigned, requiring a post-migration reconciliation step. We flag this dependency at scoping and coordinate with the customer's admin to provision all needed WorkspaceMembers before record import begins.

  • Journey automations and email templates are not portable objects

    Listrak Journey Hub automations and Experience Builder email templates do not export as transferable objects. Journey automations represent multi-step, multi-channel logic with triggers, conditions, delays, and channel sequences that have no direct equivalent in most destination platforms. Email templates export as raw HTML but carry rendering inconsistencies that often break when imported into a different editor. We document both for manual rebuild; we do not import raw HTML into Twenty.

Migration approach

Six steps for a successful Listrak to Twenty CRM data migration

  1. Discovery and data audit

    We audit the Listrak account across contacts (email and mobile), suppression lists, segments, active Journey automations, email template count, and historical analytics reports. We identify which custom contact properties appear in the API versus only in the UI and flag any fields requiring manual extraction. We also audit the Listrak account structure to determine whether Companies exist as separate records or are embedded in Contact properties. The discovery output is a written migration scope, a list of custom fields to pre-create in Twenty, and a Journey automation inventory form for the customer to complete.

  2. Twenty workspace preparation

    We create all custom fields in Twenty's Settings → Data Model via the /metadata API before any data import. This includes custom fields on Person (opt_in_date__c, mobile_number__c, segment__c, acquisition_source__c, opt_out__c), on Company, and any custom objects the customer requires. We also invite all WorkspaceMembers who will be referenced as Owners on migrating records and confirm their acceptance before proceeding. We configure the opt_out__c field to support suppression-first loading.

  3. Suppression list pre-load

    We load Listrak suppression and unsubscribe lists into Twenty first, setting opt_out__c = true on matching Person records or setting the email opt-out field equivalent. This phase must complete before any active contact import to guarantee that opted-out records are flagged before the system goes live. We validate that the export file has been properly scrubbed per Listrak's compliance requirements and surface any records with ambiguous opt-in status for manual customer review.

  4. Core record migration (People and Companies)

    We migrate Listrak Contacts to Twenty People and Companies in the correct dependency order. Companies load first (if they exist as separate records) so that Company lookups are resolved at Person insert. Contacts load with email as the dedupe key; existing Person records with matching emails are updated rather than duplicated. Custom field values from Listrak custom contact properties populate the pre-created custom fields on each Person record.

  5. Mobile subscriber migration

    We migrate Listrak Mobile Subscribers after core People records are loaded, joining on email address where available or on mobile number where email is not present. Phone numbers are stored as text data type to preserve country codes and leading zeros. We validate that the export file has been scrubbed of opted-out contacts before loading and flag any records with ambiguous opt-in status for manual review. Acquisition source attribution data joins on mobile number and populates the acquisition_source__c custom field.

  6. Activity history and segment mapping

    We migrate Listrak engagement records (calls, emails, meetings, tasks, notes) as Twenty Task and Note records linked to the corresponding Person by email match. Activity timestamps preserve the original Listrak timestamp. We also create Twenty Views corresponding to each Listrak segment, with filter logic documented from the Listrak segment definition. Segment membership is stored as a custom picklist field on Person.

  7. Cutover, validation, and automation handoff

    We freeze Listrak writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the Journey automation inventory document, the email template HTML export with rebuild notes, and the historical analytics CSV archive. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Listrak Journey automations or email templates inside the migration scope; those are documented for manual rebuild in the customer's chosen automation and email tool.

Platform deep dives

Context on both ends of the pair

Listrak logo

Listrak

Source

Strengths

  • Unified cross-channel orchestration for email, SMS, MMS, and push from a single contact profile.
  • Journey Hub automation builder with AI-powered triggers for retail-specific use cases like replenishment and cart abandonment.
  • Nightly SFTP data export to external endpoints for integration with downstream analytics and data warehouses.
  • Direct Tier 1 carrier aggregator relationships for SMS deliverability and carrier pre-approval.
  • Compliance-first platform with platform-level guardrails and hands-on strategic oversight for TCPA and CAN-SPAM adherence.

Weaknesses

  • Contracts auto-renew without customer review, creating pricing lock-in and billing surprises reported across multiple reviews.
  • Performance degrades and UI becomes sluggish with larger contact lists or more complex segmentation, per customer complaints about bloat.
  • Account executive follow-up is inconsistent post-contract, leading to poor ongoing support despite high initial engagement costs.
  • Mobile app integration is not first-class—segmentation and audience building must happen outside the platform for mobile-first use cases.
  • Learning curve is steep for new users, with setup and team training cited as significant friction points.
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 Listrak 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

    B

    Listrak: Not publicly documented in standard developer documentation.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your Listrak 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 no mobile subscriber data, no custom objects, and no historical engagement activity requiring activity migration. Migrations with mobile subscriber data (requiring opt-in scrubbing and phone number validation), multiple Listrak segments, custom contact properties, or engagement history move to eight to twelve weeks because of the Twenty custom field pre-creation work, the suppression-first loading requirement, and the Journey automation documentation scope.

Adjacent paths

Related migrations to explore

Ready when you are

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