CRM migration
Field-level mapping, validation, and rollback between Selligent by Marigold and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Selligent by Marigold
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Selligent by Marigold and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Selligent by Marigold to Twenty CRM is a platform-type migration: Selligent is a B2C omnichannel marketing automation platform built around Universal Consumer Profiles, Dynamic Segments, and Journey Orchestration; Twenty CRM is a modern open-source CRM built around Person, Company, and Opportunity records with a custom-object metadata layer. Selligent's Individual API exposes contact records and custom profile properties; we map these to Twenty Person records, resolve organization data into Company lookups, and import Action List records into custom objects or Opportunity structures depending on the customer's use case. Selligent Journeys, Journey Programs, and campaign content do not migrate via API and require manual rebuild at the destination. Selligent's non-cancelable contract terms mean customers mid-term pay for both platforms; we flag this during scoping and recommend migration timing aligned with renewal windows where possible.
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 Selligent by Marigold 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.
Selligent by Marigold
Individual (Contact)
Twenty CRM
Person
1:1Selligent Individual records map directly to Twenty Person records. The USERID becomes the source_system_id stored on the Person for audit. Standard profile fields (email, first name, last name, phone) map to Twenty's emailAddress, displayName, and phoneNumber fields. Custom profile properties migrate as Twenty custom fields on Person, which must be pre-created via the Twenty /metadata API before the Person import runs. All timestamp fields (createdAt, updatedAt) preserve the original Selligent values.
Selligent by Marigold
Organization
Twenty CRM
Company
1:1Selligent organizations are often stored as custom properties on Individual records or as relation tags rather than as a native parent object. We extract all distinct organization values referenced across the Individual corpus, deduplicate them, and create Twenty Company records before the Person import. Each Person record then receives a companyId lookup to the resolved Company. Organizations without a clear name default to the domain extracted from the Individual's email address.
Selligent by Marigold
Action List
Twenty CRM
Custom Object or Opportunity
1:manySelligent Action Lists contain LISTID-keyed records with USERID and ACTIONCODE plus custom fields. We assess whether each Action List represents a sales pipeline stage (migrating to Twenty Opportunity) or a membership list (migrating to a custom object). Action Lists with numeric amount fields and stage-like ACTIONCODE values map to Opportunity records; lists used for campaign audience segmentation map to a custom object named after the Action List with all custom fields preserved.
Selligent by Marigold
Dynamic Segment
Twenty CRM
Workspace Tags or Manual Rebuild
lossySelligent Dynamic Segments are defined by behavioral and demographic rules that are not API-exportable. We export the member contact list for each segment (the resulting Individuals), write them to Twenty as Person records with a segment-derived tag field, and document the original segment criteria for the customer's admin to rebuild using Twenty's filter and view system. Segment definitions themselves require manual recreation.
Selligent by Marigold
Custom Fields (Profile Properties)
Twenty CRM
Custom Fields on Person
lossySelligent accepts custom field names as key-value properties at write time without requiring upfront schema registration. Twenty requires custom fields to be pre-created via the /metadata API before data can be written. We extract the full FieldsDefinition array from the customer's Selligent environment during scoping, generate the corresponding Twenty metadata API calls to create each custom field with the correct type (text, number, date, select, multiselect), and sequence Person record imports after field registration completes.
Selligent by Marigold
Tags
Twenty CRM
Tags on Person
1:1Selligent tags drive personalization and segmentation. We export tag assignments per Individual and write them as tag strings on the Person record in Twenty. Tags that represent behavioral classifications (e.g., purchased, churned, VIP) are written to a dedicated custom field of type multiselect; tags that represent source attribution are written to a source field.
Selligent by Marigold
Engagement: Campaign History
Twenty CRM
Task and Note on Person
1:1Selligent campaign send history (subject, send date, audience size, open/click engagement) is available via API. We export contact-level engagement metrics and write them as Task records attached to the Person, with the campaign name as the Task subject and engagement metrics stored in custom fields. This preserves the marketing interaction timeline for teams that want historical context at the contact level.
Selligent by Marigold
Journey and Journey Program
Twenty CRM
Manual Rebuild Required
1:1Selligent Journey definitions are not exposed via the public REST or SOAP API. Automated journey logic, branching rules, trigger conditions, and message content must be manually rebuilt at the destination. We document the structure of each active Journey during scoping (channel, entry trigger, branches, exit conditions) in a written handoff document that the customer's team uses to recreate logic in Twenty's workflow system.
Selligent by Marigold
User (Team Member)
Twenty CRM
WorkspaceMember
1:1Selligent user accounts and role assignments are organizational settings that migrate as configuration data. We export user email addresses and role names where accessible and map them to Twenty WorkspaceMember invitations. The customer's admin provisions the actual users in Twenty and accepts the invitations before Person records with owner assignments are imported.
Selligent by Marigold
Custom Object
Twenty CRM
Custom Object
1:1Selligent supports arbitrary custom fields on Individuals and Action Lists. Twenty provides a custom object system built on metadata tables (DataSource, Object, Field) that are queried via the /metadata GraphQL endpoint. We map Selligent custom data structures to Twenty custom objects, pre-creating the schema via metadata API calls before importing any records. Lookup relationships between custom objects require parent records to be created first.
| Selligent by Marigold | Twenty CRM | Compatibility | |
|---|---|---|---|
| Individual (Contact) | Person1:1 | Fully supported | |
| Organization | Company1:1 | Fully supported | |
| Action List | Custom Object or Opportunity1:many | Fully supported | |
| Dynamic Segment | Workspace Tags or Manual Rebuildlossy | Fully supported | |
| Custom Fields (Profile Properties) | Custom Fields on Personlossy | Fully supported | |
| Tags | Tags on Person1:1 | Fully supported | |
| Engagement: Campaign History | Task and Note on Person1:1 | Fully supported | |
| Journey and Journey Program | Manual Rebuild Required1:1 | Fully supported | |
| User (Team Member) | WorkspaceMember1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | 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.
Selligent by Marigold gotchas
API rate limits are documented but not fully quantified publicly
Enterprise contracts are non-cancelable with no refunds mid-term
Journeys and campaign templates are not API-exportable
SDC bulk message limit of 100 per request caps throughput
Custom field schema must be pre-created at destination before 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
Discovery and contract timing assessment
We audit the customer's Selligent environment across Individual record count, Action List count, custom field definitions, active Journey count, and engagement volume. We pair this with a Twenty self-hosted versus cloud deployment decision and assess the customer's Selligent contract term. If the customer is mid-contract, we advise aligning the migration window with the renewal date to avoid paying for both platforms simultaneously. The discovery output is a written scope, a data-cleaning recommendation, and a contract-timing memo.
Twenty schema deployment via metadata API
We deploy the destination schema in Twenty before any data moves. This includes creating all custom fields on Person and Company (matching Selligent's FieldsDefinition), creating any custom objects for Action List migrations, and configuring field types, select options, and required constraints. Schema deployment runs via the Twenty /metadata API against a staging workspace first. We validate the schema by querying each created field before proceeding.
Organization dedupe and Company pre-creation
We extract all distinct organization values from Selligent Individual custom properties, run a fuzzy dedupe pass to merge name variants, and create the resulting Company records in Twenty before any Person import. This ensures that companyId lookup resolution is satisfied at the moment of Person insert. We store the Selligent organization name and the resolved Twenty Company ID in a cross-reference table for audit.
Individual export with chunked API sequencing
We export Selligent Individual records in batches of 80 records using the Individual API with exponential backoff on 429 responses. Each batch is validated for field completeness before being staged for Twenty import. We export custom profile properties, tag assignments, and timestamp fields alongside standard fields. The Individual USERID is preserved as source_system_id on each record for reconciliation.
Person import with companyId lookup resolution
We import Person records in dependency order using the Twenty REST API, resolving each Person's companyId lookup from the Company cross-reference table. Owner assignments map Selligent user references to Twenty WorkspaceMember records that have been provisioned by the customer's admin. Custom fields are written in the same API call as standard fields. Each import batch emits a row-count reconciliation report.
Action List and engagement history import
We assess each Selligent Action List to determine whether it represents a pipeline stage or a membership list, then import to Twenty Opportunity or a custom object accordingly. Campaign engagement history migrates as Task records attached to the relevant Person. We deliver a written journey inventory document describing each Selligent Journey's logic for the customer's admin to rebuild in Twenty's workflow system.
Cutover, delta sync, and Journey rebuild handoff
We freeze Selligent writes during cutover, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the complete field-mapping document, the journey inventory, and the Action List reconstruction guide to the customer's admin. We support a one-week hypercare window for reconciliation issues. Workflow rebuild in Twenty is outside standard scope and is handed off as a documented task list.
Platform deep dives
Selligent by Marigold
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 Selligent by Marigold 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
Selligent by Marigold: Not publicly quantified; connector documentation shows batched behavior at 2500 requests or 10-minute windows.
Data volume sensitivity
Selligent by Marigold 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 Selligent by Marigold to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Selligent by Marigold 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 Selligent by Marigold
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.