CRM migration

Migrate from Altcraft to Twenty CRM

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

Altcraft logo

Altcraft

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

58%

7 of 12

objects map 1:1 between Altcraft and Twenty CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Altcraft to Twenty CRM is a CDP-to-CRM migration that restructures customer data around People, Companies, and Opportunities rather than Altcraft's unified Profile model. Altcraft stores behavioral events, channel subscriptions, and segmentation logic inside Profiles; Twenty CRM uses a standard CRM schema with People, Companies, Opportunities, and Tasks. We extract profile data via CSV export (the Altcraft API reference returns 301 redirects), restructure records into Twenty's People and Company objects, and carry forward custom profile fields as typed fields on the Person record. Automation Scenarios (Altcraft's visual workflow builder) do not migrate as logic; we deliver a written scenario map for the customer's admin to rebuild in Twenty's available tools. Channel configurations (email sender IDs, SMS integrations, messenger credentials) require re-establishment in Twenty because these are platform-specific credentials not tied to the customer profile record. Timeline and cost depend on profile volume, segment complexity, and whether historical campaign performance data is required in the destination.

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

Altcraft logo

Altcraft

What's pushing teams away

  • Profile-based pricing scales with database size, creating unpredictable monthly bills as the contact list grows and pushing teams toward flat-rate alternatives.
  • On-premise and private cloud installations require custom integration work per environment, making the total cost of ownership higher than the headline subscription price suggests.
  • Limited public review presence and sparse independent user community make peer validation and competitive comparison difficult before committing.
  • Documentation and developer guides return errors or redirect loops, raising concerns about the platform's long-term maintenance and support responsiveness for enterprise accounts.

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

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

Altcraft

Profile (Customer Profile)

maps to

Twenty CRM

Person

1:1
Fully supported

Altcraft's unified Profile record maps to Twenty CRM's Person object. Every Profile field (email, phone, name, custom properties, behavioral attributes) maps to the corresponding Person field or a custom field on Person. We preserve the original Altcraft Profile ID in a custom field altcraft_profile_id__c for audit and reconciliation. The Profile's channel subscription status (email, SMS, push) migrates to a multi-select picklist field channel_subscriptions__c on Person.

Altcraft

Profile (behavioral history)

maps to

Twenty CRM

Task + Custom Object

1:many
Fully supported

Altcraft stores behavioral events (page views, email opens, link clicks, purchases, custom events) as time-stamped records linked to the Profile. These map to a custom object BehaviorEvent (with EventType, EventDate, EventProperties, and PersonId lookup) in Twenty CRM, preserving the full timeline against the Person record. If the customer does not require historical behavioral data, we can omit this phase and reduce migration scope.

Altcraft

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Altcraft's Company object (if present) maps directly to Twenty CRM's Company object. Company name, domain, industry, size, and address fields map 1:1. Custom Company fields migrate as typed custom fields on the Twenty Company object.

Altcraft

Segment (Static)

maps to

Twenty CRM

Person + Filter or Tag

lossy
Fully supported

Static segments in Altcraft are straightforward lists of Profile IDs. We export the segment membership as a Person-level custom field segment_membership__c (multi-select) or as a custom Tag object linked to Person. The customer chooses the representation during scoping. This approach preserves segment membership without requiring Twenty to support dynamic segment logic.

Altcraft

Segment (Dynamic)

maps to

Twenty CRM

Custom Filter Definition

lossy
Fully supported

Dynamic segments in Altcraft use real-time behavioral criteria (last activity within 30 days, channel equals email, event count > 5) that have no native equivalent in Twenty CRM's current release. We export the segment definition as a structured written rule set. The customer rebuilds these as Twenty Views (which are manual filters) or documents them for use with an external segmentation tool. We do not migrate dynamic segment logic as executable code.

Altcraft

Campaign

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Altcraft Campaign records (send history, open rates, click rates, channel assignment) map to Twenty CRM Opportunity records if the customer wants campaign performance tracked in the CRM. Campaign metrics migrate as custom fields on Opportunity (send_count__c, open_count__c, click_count__c, channel__c). If the customer does not track campaign performance in the CRM, we export a Campaign Performance Report as a structured CSV and skip the Opportunity mapping.

Altcraft

Message Template

maps to

Twenty CRM

External Template Library (CSV)

1:1
Fully supported

Altcraft message templates (email subject, body, A/B variants) export in standard formats. Twenty CRM does not have a native template library, so we deliver templates as a structured CSV with template_name, subject, body, and variant fields. The customer's team copies templates into their chosen email sending tool (Gmail integration, external ESP) or recreates them in Twenty's available tools.

Altcraft

Communication Channel

maps to

Twenty CRM

External Integration Setup

lossy
Fully supported

Altcraft's channel configurations (sender IDs, API credentials for SMS, approved email sending addresses, messenger tokens) are platform-specific credentials that do not migrate. We export a Channel Inventory document listing every active channel, its credentials, and the recommended replacement integration in Twenty (Twilio for SMS, SendGrid for email, Slack for messaging). The customer's admin reconfigures these in the destination platform.

Altcraft

Product

maps to

Twenty CRM

Custom Object: Product

1:1
Fully supported

Altcraft Products map to a custom object Product in Twenty CRM. We create the Product custom object with fields for name, sku, price, description, and category. If the customer uses Products for e-commerce tracking, we also create an Order custom object linked to Person and Product.

Altcraft

Order

maps to

Twenty CRM

Custom Object: Order

1:1
Fully supported

Altcraft Orders (linked to Profiles and Products) map to a custom Order object in Twenty CRM with fields for order_id, order_date, total_amount, status, person_id, and product_id lookups. We resolve the Person and Product references at migration time so that the relationships are established in the destination.

Altcraft

Form (Form Builder)

maps to

Twenty CRM

Custom Object: Form Definition

1:1
Fully supported

Altcraft Form definitions (field structure, question types, submission logic) export as structured JSON. We deliver a Form Inventory document listing every form, its fields, and the submission mapping. Twenty CRM does not have a native form builder, so the customer uses the form inventory to rebuild forms in a third-party tool (Typeform, HubSpot Forms, or custom) or to set up web-to-person integrations.

Altcraft

Control Group

maps to

Twenty CRM

Person custom field (segment_membership)

lossy
Fully supported

Altcraft Control Groups are holdout groups assigned to specific Profile IDs for campaign comparison analytics. We preserve Control Group membership as a custom field on Person (control_group__c, text). The destination platform must support Control Group logic natively or the customer uses this field for manual segmentation. We flag this limitation in the migration scope.

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.

Altcraft logo

Altcraft gotchas

High

Profile-count pricing means database size drives the bill

High

Automation Scenarios do not export as portable logic

Medium

API developer guide returns HTTP 301, blocking programmatic discovery

Medium

Private Cloud and on-premise use separate support contracts

Medium

Control Group assignment is Profile-ID dependent

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

  • Altcraft API reference returns HTTP 301, blocking programmatic extraction

    The official API developer guide at guides.altcraft.com/en/developer-guide/ returns a 301 redirect. We cannot programmatically enumerate endpoints, object schemas, or field types before migration. We work around this by using Altcraft's UI-based CSV export for Profiles, Products, and Orders, and by requesting direct database credentials from the customer where available (Private Cloud and On-premise tiers only). API-based migration is only possible when the customer supplies their own endpoint documentation or a working API key with documented responses.

  • Automation Scenarios cannot be exported as logic

    Altcraft's Scenario builder creates workflows with conditional branches, loop constructs, time delays, and API webhook calls that have no standard export format. We cannot generate an import package for Twenty CRM or any other destination. We export the scenario as a structured written description, a list of all referenced Profiles, and the trigger conditions, then deliver a Scenario Map document for the customer's admin to rebuild manually in Twenty's available tools or an external workflow platform.

  • Dynamic segments have no equivalent in Twenty CRM

    Altcraft's dynamic segments evaluate real-time behavioral criteria to maintain membership. Twenty CRM's current release has no dynamic segment engine; it uses static Views and Filters per object. We cannot migrate dynamic segment logic as a functional equivalent. We export the segment definition as a structured rule set, and the customer's admin rebuilds each segment as a View or documents the criteria for use with an external segmentation and marketing tool.

  • Communication channel credentials do not migrate

    Altcraft channel configurations (sender IDs, SMS API keys, approved email addresses, messenger tokens) are platform-specific credentials tied to the Altcraft infrastructure. These cannot be exported and re-imported into Twenty CRM because Twenty does not have a native channel management module. We deliver a Channel Inventory document listing every active channel and its credentials, and the customer's admin reconfigures channels in Twenty or their chosen external communication tool post-migration.

  • Profile-count billing accrues during the export window

    Altcraft bills on the number of Profiles stored. During migration scoping, we count every Profile record that will land in Twenty CRM and flag whether Altcraft's billing cycle will continue accruing charges during the export window. We advise customers to throttle exports to avoid a double-billing period where both platforms accumulate profile counts simultaneously.

Migration approach

Six steps for a successful Altcraft to Twenty CRM data migration

  1. Discovery and data audit

    We audit the Altcraft portal across all active objects: Profile count, behavioral event volume, segment definitions (static and dynamic), campaign history, product and order records, form definitions, channel configurations, and custom field inventory. We use UI-based CSV exports where the API is unavailable. We request Private Cloud or On-premise database credentials if the customer has them. The discovery output is a written migration scope document with record counts per object and a recommendation on whether to include behavioral history in the migration.

  2. Schema design in Twenty CRM

    We design the destination schema in Twenty CRM before any data import. This includes creating the Person and Company custom fields to match Altcraft profile fields, creating custom objects for Products, Orders, and BehaviorEvents, setting up lookup relationships between Person, Company, Product, Order, and BehaviorEvent, and defining the segment_membership and control_group fields. Schema is deployed into the customer's self-hosted or hosted Twenty instance for validation before production migration begins.

  3. Data export and transformation

    We export Altcraft data via CSV for Profiles, Companies, Products, Orders, and Forms. Behavioral history exports as a separate CSV with PersonId references. Dynamic segment definitions export as structured JSON rule sets. We transform all records: Altcraft Profile IDs are preserved in altcraft_profile_id__c, channel subscriptions become a multi-select field, Control Group membership becomes a text field, and date formats are normalized. We apply deduplication rules during transformation to prevent duplicate Person records in Twenty CRM.

  4. Sandbox migration and reconciliation

    If the customer has a staging environment for Twenty CRM, we run a full migration into that environment using production-like data volume. The customer reconciles record counts (Person in, Company in, Product in, Order in, BehaviorEvent in), spot-checks 25-50 records against the Altcraft source, and validates that Person-to-Company links and Person-to-Order links are intact. Any mapping corrections happen here. If no staging environment exists, we run a parallel-phase migration with a rollback checkpoint.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (if any), then Person records (with altcraft_profile_id preserved), then custom object records (Products, Orders) with their Person and Company lookups resolved, then behavioral history records linked to Person, then static segment membership applied as Person fields. Each phase emits a row-count reconciliation report before the next phase begins. Channel configurations are not imported; we deliver the Channel Inventory document for manual re-establishment.

  6. Cutover, validation, and Scenario handoff

    We freeze writes to Altcraft during cutover, run a final delta migration of any records modified during the migration window, then mark Twenty CRM as the system of record. We deliver the Scenario Map (automation logic inventory), Dynamic Segment definitions (rule-set document), and Channel Inventory as written deliverables for the customer's admin team to rebuild or reconfigure. We support a one-week hypercare window for reconciliation issues. We do not rebuild Altcraft Scenarios or dynamic segments inside the migration scope.

Platform deep dives

Context on both ends of the pair

Altcraft logo

Altcraft

Source

Strengths

  • Combines CDP, marketing automation, and omnichannel messaging in a single product rather than requiring three separate integrations.
  • Supports cloud, dedicated private cloud, and on-premise deployment to satisfy data-residency and sovereignty requirements.
  • Profile model unifies behavioral data with CRM and SQL data sources, enabling segment logic that references external relational data.
  • Includes Campaign Master, Control Groups, and ML algorithms in Cloud Pro tier—features typically charged as add-ons by competitors.
  • Built on a modern stack (Golang, ClickHouse, MongoDB) that supports real-time analytics and high-volume profile processing.

Weaknesses

  • API documentation is incomplete, returning errors or redirects, which creates friction for migration planning and third-party integration.
  • Pricing is profile-count based, making the total cost unpredictable and significantly higher than competitors for large contact databases.
  • Headquartered in Russia with a small team (21–45 employees), which may present compliance, support, and continuity risks for EU and US enterprises.
  • Limited public review presence and sparse community content make independent evaluation difficult compared to well-documented Western alternatives.
  • On-premise and private cloud require significant custom configuration, and some features (LDAP SSO, custom channels) are tier-gated, inflating implementation cost.
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 Altcraft 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

    Altcraft: Configurable via API_MAX_REQUESTS_COUNT — exceeding returns HTTP 429. Specific numeric limits are not published in the developer guide and must be confirmed per deployment..

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

Walk through your Altcraft 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 four and six weeks for accounts under 50,000 Profiles with static segments, no complex dynamic segment logic, and behavioral history excluded. Migrations with large behavioral histories (over 200,000 engagement records), dynamic segments requiring rule-set translation, loyalty program data requiring custom object builds, or parallel data warehouse integrations move to eight to twelve weeks. Timeline depends more on data volume and schema complexity than on record count alone.

Adjacent paths

Related migrations to explore

Ready when you are

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