CRM migration
Field-level mapping, validation, and rollback between Altcraft and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Altcraft
Source
Twenty CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Altcraft and Twenty CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
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.
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 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)
Twenty CRM
Person
1:1Altcraft'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)
Twenty CRM
Task + Custom Object
1:manyAltcraft 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
Twenty CRM
Company
1:1Altcraft'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)
Twenty CRM
Person + Filter or Tag
lossyStatic 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)
Twenty CRM
Custom Filter Definition
lossyDynamic 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
Twenty CRM
Opportunity
1:1Altcraft 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
Twenty CRM
External Template Library (CSV)
1:1Altcraft 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
Twenty CRM
External Integration Setup
lossyAltcraft'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
Twenty CRM
Custom Object: Product
1:1Altcraft 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
Twenty CRM
Custom Object: Order
1:1Altcraft 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)
Twenty CRM
Custom Object: Form Definition
1:1Altcraft 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
Twenty CRM
Person custom field (segment_membership)
lossyAltcraft 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.
| Altcraft | Twenty CRM | Compatibility | |
|---|---|---|---|
| Profile (Customer Profile) | Person1:1 | Fully supported | |
| Profile (behavioral history) | Task + Custom Object1:many | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Segment (Static) | Person + Filter or Taglossy | Fully supported | |
| Segment (Dynamic) | Custom Filter Definitionlossy | Fully supported | |
| Campaign | Opportunity1:1 | Fully supported | |
| Message Template | External Template Library (CSV)1:1 | Fully supported | |
| Communication Channel | External Integration Setuplossy | Fully supported | |
| Product | Custom Object: Product1:1 | Fully supported | |
| Order | Custom Object: Order1:1 | Fully supported | |
| Form (Form Builder) | Custom Object: Form Definition1:1 | Fully supported | |
| Control Group | Person custom field (segment_membership)lossy | 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.
Altcraft gotchas
Profile-count pricing means database size drives the bill
Automation Scenarios do not export as portable logic
API developer guide returns HTTP 301, blocking programmatic discovery
Private Cloud and on-premise use separate support contracts
Control Group assignment is Profile-ID dependent
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 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.
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.
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.
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.
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.
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
Altcraft
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 Altcraft 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
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
Altcraft 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 Altcraft to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Altcraft
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.