CRM migration
Field-level mapping, validation, and rollback between Rule and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Rule
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Rule and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Rule to Twenty CRM is a platform-type migration: Rule is a marketing automation CRM with multi-channel orchestration (Email, SMS, RCS, Social) and behavioral contact tracking; Twenty CRM is a self-hosted, open-source relationship CRM with a maturing standard object model and no native workflow engine. We extract contacts with their behavioral attributes and channel preferences from Rule, map them to Twenty's Person and Company objects, and handle the fact that Twenty's standard Person fields are intentionally minimal—requiring custom field creation for any Rule contact properties that lack a direct Twenty equivalent. Multi-channel engagement events (opens, clicks, bounces, SMS responses) export from Rule as a structured dataset and land in Twenty as activity records annotated with channel type. We do not migrate Rule Automation Workflows, Campaigns, or Sequences as code; we deliver a written inventory of each for your admin to rebuild using Twenty's workflow builder. Suppression lists export as contact status flags rather than native suppression rules.
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 Rule 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.
Rule
Contact
Twenty CRM
Person
1:1Rule contact profiles (name, email, phone, behavioral attributes, channel preferences) map to Twenty Person records. We preserve all Rule custom contact properties as Twenty custom fields. Note that Twenty's standard Person object intentionally lacks many standard fields that Rule provides natively—GitHub issue #13953 documents that new users must spend 30-60 minutes creating basic fields before productive use. We pre-create all required custom fields during schema setup so Person records land with complete data on first import. The Rule lifecyclestage property migrates as a custom picklist field on Person.
Rule
Company
Twenty CRM
Company
1:1Rule Company records map directly to Twenty Company. Company name and domain map to displayName and websiteUrl respectively. We use domain as the dedupe key during import to prevent duplicate company records. If Rule stores account-level custom fields, we create matching custom fields on the Twenty Company object before migration.
Rule
Deal
Twenty CRM
Opportunity
1:1Rule Deal records map to Twenty Opportunity. We resolve the Company (Account) lookup before Opportunity insert so that every opportunity is attached to its parent company. Deal stage names map to Twenty pipeline stage values, and the Rule deal owner maps to a Twenty workspace member.
Rule
Segment/List
Twenty CRM
Filter-based view
lossyRule segments are dynamic filter-based lists. We export segment definitions as written filter logic rather than snapshots, noting each segment's filter conditions, combinators, and value criteria. Twenty does not have native dynamic segments; we document each Rule segment as a filter configuration that an admin can recreate in Twenty's Table view filters or Kanban grouping. For critical segments, we create static saved views in Twenty during migration.
Rule
Automation Workflow
Twenty CRM
Workflow (rebuild required)
lossyRule Automation Workflows contain trigger conditions, time delays, and channel actions. We do not migrate workflows as code. We deliver a written inventory of every Rule workflow with its trigger type (event-based, date-based, tag-based), conditions, action sequence, and channel target. Twenty's workflow builder supports record-triggered and scheduled automations; the inventory document maps each Rule workflow to a recommended Twenty equivalent. The customer's admin rebuilds workflows post-migration.
Rule
Tag
Twenty CRM
Tag
1:1Contact and company tags in Rule map directly to Twenty's tag field. Tags are preserved per record at migration time. Both platforms support multiple tags per record with no hard limit.
Rule
Email Engagement History
Twenty CRM
Activity
1:1Rule email engagement events (opens, clicks, bounces, unsubscribes) export as a structured dataset. We import these as Twenty Activity records with the activity type annotated as email_open, email_click, email_bounce, or email_unsubscribe in a custom field. The original Rule timestamp becomes the activity date for chronological accuracy. Whether Twenty surfaces this history in its activity timeline UI depends on the Twenty version and view configuration.
Rule
SMS/RCS/Social Engagement
Twenty CRM
Activity
1:1Channel-specific engagement events from Rule (SMS sends, RCS messages, social interactions) export separately from email events. We consolidate these into Twenty Activity records annotated with channel type (sms_send, sms_reply, rcs_message, social_engagement) in a custom field. This mirrors how Rule itself siloes channel data; consolidation at migration time gives Twenty a more unified view than Rule provides natively.
Rule
Custom Field
Twenty CRM
Custom Field
1:1Rule custom fields on contacts and companies (dropdown, date, numeric, text, multi-select types) map to Twenty custom fields of equivalent type. Multi-select fields require explicit mapping to Twenty's multi-select implementation. We create the destination custom fields in Twenty's metadata API before any data import so that schema is ready before records land.
Rule
Template
Twenty CRM
Template (rebuild required)
lossyEmail and SMS templates in Rule (body text, subject lines, dynamic variables) export as content files. We deliver a template inventory with full body copy and subject line text. Dynamic variable syntax differs between platforms; Twenty's template system does not have a native Rule equivalent, so templates are documented for manual rebuild in Twenty or through the customer's email sending tool.
Rule
Owner/User
Twenty CRM
WorkspaceMember
1:1Rule user accounts (name, email, role) map to Twenty workspace members by email match. We extract all Rule users referenced on records, match against Twenty workspace members, and flag any unresolvable users for admin provisioning before record import. Unmatched owners receive a placeholder assignment with a flag for reassignment post-migration.
Rule
Suppression List
Twenty CRM
Contact status flag
lossyRule suppression lists (unsubscribed, bounced, blocked contacts) export as a distinct dataset. Twenty does not have a native suppression list object; we apply a custom status field (suppression_status) to each suppressed contact record with values unsubscribed, bounced, or blocked. The customer's admin applies this status in Twenty's contact list view post-migration.
| Rule | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Segment/List | Filter-based viewlossy | Fully supported | |
| Automation Workflow | Workflow (rebuild required)lossy | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Email Engagement History | Activity1:1 | Mapping required | |
| SMS/RCS/Social Engagement | Activity1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Template | Template (rebuild required)lossy | Fully supported | |
| Owner/User | WorkspaceMember1:1 | Fully supported | |
| Suppression List | Contact status flaglossy | 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.
Rule gotchas
Channel-specific engagement data is siloed
Automation workflows reference deleted contacts as orphaned triggers
Suppression list does not auto-apply during import
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
Source audit and custom field schema design
We audit the Rule account for contact volume, company count, deal records, segment definitions, active workflows, campaign metadata, custom field inventory, engagement event volume per channel, and suppression list size. We pair this with Twenty schema design: we identify every Rule contact property that lacks a Twenty standard field and pre-create custom fields (with correct types—text, number, date, picklist, multi-select) via Twenty's metadata API before any data import. This step closes the gap documented in Twenty GitHub issue #13953 so that data lands completely rather than partially.
Suppression and deduplication preprocessing
We export Rule's suppression list as a distinct dataset. We identify duplicate contact records in Rule (same email, different internal IDs) and apply a deduplication rule: the record with the most recent activity and most complete custom field population wins. Duplicates that cannot be auto-resolved go to a manual reconciliation queue for the customer's admin. Suppression status is preserved as a custom field value rather than a platform-native list. This step ensures Twenty starts with a clean, non-suppressed active contact set.
Owner and workspace member reconciliation
We extract every distinct Rule user referenced on contacts, companies, deals, and engagements and match by email against Twenty workspace members. Any Rule user without a matching Twenty workspace member goes to a reconciliation queue. The customer's admin provisions missing workspace members before record import resumes. Owner resolution must complete before record import because OwnerId is a required reference on most Twenty objects.
Staging migration and schema validation
We run a full migration into a staging environment with production-like data volume. The customer's team spot-checks 25-50 records against Rule (contacts, companies, deals, engagement records), validates that custom field data populated correctly, and confirms that suppression flags are applied. Any mapping corrections happen in staging before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: workspace members (validated), companies (from Rule accounts), persons (with companyId resolved), opportunities (with personId and companyId resolved), tags (applied to person and company records), activity history (emails, SMS, social events as annotated Activity records), custom fields (populated from Rule properties), and template body text (documented for manual rebuild). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, workflow inventory delivery, and post-migration validation
We freeze Rule 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 Workflow and Sequence inventory document to the customer's admin team. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild Rule automations or sequences as Twenty workflows inside the migration scope; that is a separate engagement.
Platform deep dives
Rule
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Rule and Twenty CRM.
Object compatibility
2 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
Rule: Not publicly documented.
Data volume sensitivity
Rule doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 Rule to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Rule 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 Rule
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.