CRM migration

Migrate from Act-On to Twenty CRM

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

Act-On logo

Act-On

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between Act-On and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Act-On to Twenty CRM is a platform-type migration: Act-On is a marketing automation platform centred on Contacts, Companies, Programs, and engagement scoring; Twenty CRM is a sales CRM centred on Contacts, Organizations, Opportunities, and Tasks. The object models overlap on Contacts and Companies but diverge sharply on Programs (Act-On's nurture sequences do not export) and engagement scoring (proprietary formulas cannot transfer). We migrate Contact and Company records with their standard and custom properties, List membership as tag data, email and activity history as timestamped Tasks, and any Custom Data schema as Twenty custom fields. We do not migrate Automated Programs, scoring formulas, or email template content; we deliver a written Program inventory and a scoring configuration guide for your Twenty admin. The migration runs through Twenty's REST and GraphQL API with batch chunking and backoff logic against any undocumented throttling.

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

Act-On logo

Act-On

What's pushing teams away

  • Feature gaps in email composer quality and CRM integration force teams to layer on additional tools, increasing stack complexity and cost.
  • Performance and reporting depth lag behind competitors at similar price points, making it harder to justify ROI to leadership.
  • Pricing is perceived as high relative to the value delivered, especially as teams scale contact volumes and hit tier limitations.
  • Users report that Act-On feels less suitable as companies grow beyond mid-market requirements and need more sophisticated pipeline management.

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

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

Act-On

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Act-On Contact records map directly to Twenty Person records. Standard fields (first name, last name, email, phone, job title) map cleanly. We preserve lifecycle stage, source, and any custom contact-level properties as custom fields on the Person object. The Person record is created before any related Opportunity or Task imports so that lookups are satisfied at insert time.

Act-On

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Act-On Company records map to Twenty Company records. Company name, industry, website, employee count, and annual revenue migrate directly. Custom company fields from Act-On's schema become Twenty custom fields. We use the company domain as a deduplication key and resolve the Company-to-Person relationship during Person import.

Act-On

List (Audience Segment)

maps to

Twenty CRM

Tag + Custom Field

lossy
Fully supported

Act-On Lists are audience segments used for campaign targeting. We export List membership as tag data on the Person record, with one tag per List membership (e.g., tag: Newsletter_Q4, tag: Enterprise_Leads). The customer chooses during scoping whether List logic (dynamic vs static) is noted as a reference for manual segmentation rebuild in Twenty's table views and filters.

Act-On

Program (Automated Workflow)

maps to

Twenty CRM

Workflow (rebuild required)

1:1
Fully supported

Act-On Automated Programs define multi-step nurture sequences stored server-side and are not accessible via API for export. We export all Contact data within a Program (who entered, when, what branch they took, what actions fired) as a timestamped reference dataset. We deliver a written Program inventory with each sequence's steps, triggers, conditions, and actions mapped to Twenty's Workflow builder as a blueprint for manual rebuild.

Act-On

Custom Data Schema

maps to

Twenty CRM

Custom Field or Custom Object

1:1
Fully supported

Act-On's Custom Data schemas define user-extended field structures on Contacts and Companies. We read the schema definition via API, export existing records, and create equivalent custom fields in Twenty's Data Model. If the schema defines a standalone custom object (not linked to Contact or Company), we create a Twenty custom object with matching field types and relationships before data import.

Act-On

Engagement Score

maps to

Twenty CRM

Custom Numeric Field

1:1
Fully supported

Act-On calculates a behavioural engagement score per contact using proprietary weighting rules across email opens, clicks, page visits, and form submissions. These calculation rules do not export. We migrate the current numeric score as a custom field (e.g., acton_engagement_score__c) on the Person record and flag that the customer must configure any new scoring logic manually in Twenty using custom formula fields or an integration with an external scoring service.

Act-On

Email (Send History)

maps to

Twenty CRM

Task

1:1
Fully supported

Act-On email content, subject lines, and send history are accessible via API. We migrate send events as Task records on the Person record with a custom type field (acton_email_task__c), timestamp, subject line, and a link back to the original email content stored in our migration artifact archive. HTML template content is preserved as a reference document for the customer to rebuild in their preferred email sending tool post-migration.

Act-On

Form

maps to

Twenty CRM

Custom Field + Reference Document

1:1
Fully supported

Web forms in Act-On capture leads with custom field definitions. Form field schemas migrate as custom fields on the Person object. Submission data migrates as historical records. The form embed code does not transfer and must be re-implemented in Twenty or a third-party form tool (Typeform, JotForm, or similar) post-migration.

Act-On

Activity History (Opens, Clicks, Form Submissions)

maps to

Twenty CRM

Task

1:1
Fully supported

Act-On logs email opens, clicks, form submissions, and other behavioural events. We export activity history as timestamped Task records linked to the Person record. Volume can be large; we chunk by date range and apply backoff logic. We flag high-volume activity exports (>100,000 records) during scoping as a cost driver because API pagination and chunking add time.

Act-On

Tag

maps to

Twenty CRM

Tag

1:1
Fully supported

Contact and company tags export cleanly as label arrays. We map them directly to Twenty's tag model on Person and Company records. Tags used for marketing classification migrate as-is; tags used for lead scoring are noted separately since scoring logic does not transfer.

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.

Act-On logo

Act-On gotchas

High

ACT! desktop CRM and Act-On marketing automation are different products

Medium

Automated Program logic does not export

Medium

Engagement score formulas are not transferable

Low

Bulk API is not publicly documented

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

  • Act-On Programs (nurture sequences) do not export

    Act-On's Automated Program builder defines multi-step nurture sequences stored server-side. These workflow definitions are not accessible via the API and cannot be exported. We export all contact data within a Program (who entered, when, what branch they followed, what actions fired) as a historical reference dataset. We deliver a written Program inventory document that maps each Act-On Program's triggers, conditions, delays, and actions to Twenty's Workflow builder as a rebuild blueprint. The customer's admin rebuilds the Programs manually post-migration.

  • Engagement scoring formulas do not transfer to Twenty

    Act-On calculates behavioural engagement scores using proprietary weighting rules across email opens, clicks, page visits, and form submissions. These calculation rules do not export. We migrate the current numeric score for each Contact as a static custom field in Twenty. The scoring formula and weighting rules must be recreated manually in Twenty using custom formula fields, a third-party scoring integration, or a workflow-based scoring solution. We flag this gap during discovery and include a scoring configuration guide in the migration deliverable.

  • Act-On is a MAP, not a CRM — object model misalignment requires scoping

    Act-On's primary objects are Contacts, Companies, Lists, and Programs centred on marketing automation. Twenty CRM is centred on Persons, Organizations, Opportunities, and Tasks for sales pipeline management. The overlap is Contacts-to-Persons and Companies-to-Organizations, but Act-On has no native Opportunity or pipeline object. If the customer is using Deals or Opportunities alongside Act-On in a separate system, those migrate separately. If they are managing pipeline in Act-On without a CRM, the migration scope is limited to contact and company data and the customer sets up pipeline in Twenty post-migration.

  • Act-On Bulk API is not publicly documented

    Act-On's API documentation does not describe a dedicated bulk or batch endpoint for high-volume record operations. For large contact sets (over 20,000 records), we handle export by chunking paginated API requests and applying exponential backoff to stay within undocumented throttling limits. This adds processing time to large migrations but does not block completion. We communicate estimated processing time for large datasets during scoping and flag any throttling events that extend the timeline.

  • Twenty is earlier-stage software than established CRM platforms

    Twenty CRM launched in 2023 and has fewer third-party reviews, a smaller consultant ecosystem, and a smaller AppExchange-equivalent marketplace than HubSpot, Salesforce, or Pipedrive. Some features available in mature CRMs (advanced revenue intelligence, built-in sequence cadences, sophisticated forecasting) are still maturing in Twenty. We scope migrations with the understanding that customers migrating from Act-On to Twenty are choosing data ownership and self-hosting over feature parity with enterprise CRM platforms, and we flag any feature gaps that affect the migration scope during discovery.

Migration approach

Six steps for a successful Act-On to Twenty CRM data migration

  1. Discovery and product confirmation

    We confirm the exact Act-On product (marketing automation SaaS, not ACT! desktop CRM), audit the source portal across tier level, contact volume, company volume, custom data schema definitions, active Programs, List count and membership volume, engagement score configuration, and activity history volume. We confirm the target Twenty deployment model (self-hosted or cloud SaaS at $9/user/month) and audit the existing Twenty instance's Data Model for any pre-existing custom objects or fields that affect schema design. The discovery output is a written migration scope document with record counts, object list, and a schema pre-creation plan.

  2. Schema design and custom field pre-creation

    We design the destination schema in Twenty. This includes creating any custom fields on Person and Company to receive Act-On properties that have no native Twenty equivalent (acton_lifecycle_stage__c, acton_engagement_score__c, acton_source__c, acton_original_create_date__c). If Act-On Custom Data schemas define standalone objects, we create Twenty custom objects with equivalent field types and relationships before any data import. Schema is configured via Twenty's Settings → Data Model UI or via API in a staging environment first.

  3. Data extraction and deduplication

    We export Contact, Company, List membership, activity history, and custom data records from Act-On via the API. We run a deduplication pass on Contacts using email as the primary key and flag duplicates for the customer's review before import. We export List membership as a separate denormalized table (one row per Contact per List) for tag creation during import. We audit data quality: blank required fields, malformed emails, inactive contacts, and stale records are flagged with a remediation recommendation before migration begins.

  4. Staging migration and reconciliation

    We run a full migration into a staging environment or sandbox copy of the Twenty instance. The customer reconciles record counts (Persons in, Companies in, activity Tasks in), spot-checks 25-50 records against Act-On source data, and reviews the tag structure and custom field values. Any mapping corrections are documented and applied before the production migration begins. We do not proceed to production migration until the customer signs off on the staging reconciliation report.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (for deduplication and address normalization), then Persons (with Company lookups resolved, tags created from List membership, custom fields populated), then activity Tasks (chunked by date range with backoff logic), then Custom Data records (for standalone custom objects). Each phase emits a row-count reconciliation report. We freeze Act-On writes during the final cutover window and run a delta migration for any records modified during the migration window.

  6. Cutover, validation, and Program inventory delivery

    We enable Twenty as the system of record after the final delta pass. We deliver the Automated Program inventory document mapping each Act-On Program to a Twenty Workflow rebuild blueprint, the engagement scoring configuration guide, and the full field mapping reference. We support a one-week hypercare window to resolve any record linkage issues, tag gaps, or custom field value discrepancies. We do not rebuild Act-On Programs as Twenty Workflows inside the migration scope; that is a separate configuration engagement for the customer's admin.

Platform deep dives

Context on both ends of the pair

Act-On logo

Act-On

Source

Strengths

  • Embedded SMS marketing extends reach beyond email without an additional platform subscription.
  • Native engagement scoring gives a behavioural signal out of the box without third-party analytics.
  • Responsive support team with a reputation for hands-on help during setup and troubleshooting.
  • Segmented audience management via Lists allows targeted campaign execution without complex queries.
  • User-friendly interface lowers the learning curve for marketing teams without dedicated ops resources.

Weaknesses

  • CRM integration capabilities lag behind competitors, often requiring workarounds or third-party middleware.
  • Reporting depth is shallower than HubSpot or Salesforce, making multi-touch attribution difficult.
  • Pricing relative to feature set draws criticism as teams scale and hit tier ceilings.
  • Limited custom object flexibility compared to platforms with a full schema designer.
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 Act-On 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

    Act-On: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Act-On 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 and 3,000 Companies with no standalone Custom Data objects and moderate engagement history. Migrations with Custom Data schemas, large engagement histories (over 200,000 activity records), or multiple Lists requiring tag denormalization move to seven to eleven weeks because of schema pre-creation, API batch handling, and Program documentation scope. Discovery and staging reconciliation alone account for one to two weeks regardless of data volume.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Act-On.
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