CRM migration
Field-level mapping, validation, and rollback between Referrizer and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Referrizer
Source
Twenty CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Referrizer and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Referrizer and Twenty CRM serve different market segments, and the migration is driven by a structural shift rather than a direct replacement. Referrizer bundles referral tracking, 2-way SMS, loyalty points, and reputation management into a single subscription for small multi-location businesses. Twenty CRM is an open-source, self-hostable CRM built with a developer-first API that exposes every object—including custom objects—as auto-generated REST and GraphQL endpoints. The migration requires careful handling of Referrizer's non-standard objects: Loyalty points stored as numeric contact properties, Offers and referral relationships stored as distinct entities, and the Smart Inbox which is not accessible via any documented API. We extract all accessible data via Referrizer's paginated contact API (100 records per page), transform loyalty fields into custom number fields in Twenty, and build the destination schema before any records are imported. Campaigns, automated sequences, review request logs, and inbox message history are inventoried but not migrated as code. We do not rebuild Referrizer automations as Twenty workflows; that work belongs to your admin team post-cutover.
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 Referrizer 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.
Referrizer
Contact
Twenty CRM
Person
1:1Referrizer Contacts map directly to Twenty Person records. We extract name, phone, email, custom fields, labels, and visit history via the paginated GET /contacts endpoint (100 records per page). The Person record is the primary migration target and is created first so that subsequent objects (deals, campaigns) can resolve the Person lookup by email or phone as the dedupe key.
Referrizer
Company
Twenty CRM
Company
1:1Referrizer does not have a standalone Company object, but multi-location accounts store location-level business names that map to Twenty Company records. We extract location business names from the account structure and create Company records, then link Person records to the correct Company via the Person's companyAssociation field in Twenty. If no multi-location structure exists, we create a single Company record to hold the business name.
Referrizer
Pipeline / Stages
Twenty CRM
Opportunity
1:1Referrizer Pipeline stages map to Twenty Opportunity records. Stage names, order, and any lead-to-contact associations migrate. We create Opportunity records with the stage name and link each to the corresponding Person. The Opportunity object in Twenty supports custom fields for deal value, close date, and status, which we populate from the Referrizer pipeline data.
Referrizer
Loyalty Program
Twenty CRM
Custom Number Field on Person
1:1Referrizer stores loyalty point balances as numeric custom fields on contact records rather than as a dedicated object. We identify all loyalty-related custom fields during schema enumeration, separate them from standard contact properties, and create equivalent custom number fields on the Person object in Twenty before migration. Point balance values migrate as integer or decimal values depending on the source field type.
Referrizer
Campaigns
Twenty CRM
Custom Object (Campaign)
lossyReferrizer Campaigns (Regular and Automated modes) export as records with type, status, and contact association data. Twenty has no native campaign scheduling object, so we create a custom Campaign object via Settings → Data Model before migration and map campaign name, type, status, and created date. Campaign-contact associations migrate as linked records on the custom Campaign object. Automated campaign triggers and re-entry logic do not migrate; we document the configuration for the customer's admin to rebuild in Twenty's workflow builder.
Referrizer
Offers & Referrals
Twenty CRM
Custom Object (Offer) + Custom Field on Person
1:manyReferrizer Offers and referral relationships export as distinct records with offer codes, reward structures, and referral link associations. We create a custom Offer object in Twenty to store offer codes and reward details, then link each Offer to the referring and referred Person records via custom lookup fields. Referral link associations are preserved as text fields on both the referring and referred Person records.
Referrizer
Review Requests
Twenty CRM
Custom Object (ReviewRequest)
1:manyReferrizer automates review requests across Google, Yelp, and Facebook. Review request history—which contacts received requests, when, and to which platform—stores as activity on the contact object. We export this as a custom ReviewRequest object in Twenty with fields for contact (lookup to Person), platform, request date, and status. Review content itself (the actual review text) is not stored in Referrizer's API and cannot be migrated.
Referrizer
Custom Fields
Twenty CRM
Custom Fields on Person and Company
1:1Referrizer custom fields are contact-level key-value properties. We enumerate all custom field names and types via GET /contacts before migration, then pre-create matching custom fields on the Person object (and Company where applicable) in Twenty via the Data Model settings. Field type mapping follows: text to TEXT, numeric to NUMBER, date to DATE, checkbox to CHECKBOX, and picklist to SELECT. We enable Advanced mode in Twenty Settings to expose API field names for import mapping.
Referrizer
Labels / Segments
Twenty CRM
Tags on Person
1:1Referrizer contact labels export as tag arrays on each contact record. We map these to Twenty's Tags feature on Person records. Tags in Twenty attach via the TagRelation object, and we create any tag values that do not already exist in the destination workspace during migration. The tag vocabulary is preserved to maintain segmentation capability in Twenty.
Referrizer
Activities / Engagement Feed
Twenty CRM
TimelineEvent / Note
1:1Referrizer tracks contact activity feed events including campaign opens, link clicks, and UTM data accessible via contact activity endpoints. We export these as Note records in Twenty linked to the corresponding Person record, with the activity type and timestamp preserved in the Note body. Activity event timestamps maintain chronological ordering for the contact timeline.
Referrizer
Users / Team Members
Twenty CRM
WorkspaceUser
1:1Referrizer team member records (name, email) export for owner assignment mapping. We match by email against Twenty workspace users. Any Referrizer owner without a matching Twenty user goes to a reconciliation queue for the customer to provision before record import. Role-based permission structures in Referrizer do not have a direct Twenty equivalent and are documented for manual rebuild.
Referrizer
Locations
Twenty CRM
Company + Custom Field on Person
1:manyReferrizer multi-location accounts scope contacts by location ID. We scope each export by location account ID to prevent cross-contamination, validate contact counts match expected location totals, then create Company records per location and set a custom location field on each Person record to preserve location association in Twenty.
| Referrizer | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Pipeline / Stages | Opportunity1:1 | Fully supported | |
| Loyalty Program | Custom Number Field on Person1:1 | Mapping required | |
| Campaigns | Custom Object (Campaign)lossy | Mapping required | |
| Offers & Referrals | Custom Object (Offer) + Custom Field on Person1:many | Mapping required | |
| Review Requests | Custom Object (ReviewRequest)1:many | Mapping required | |
| Custom Fields | Custom Fields on Person and Company1:1 | Mapping required | |
| Labels / Segments | Tags on Person1:1 | Mapping required | |
| Activities / Engagement Feed | TimelineEvent / Note1:1 | Mapping required | |
| Users / Team Members | WorkspaceUser1:1 | Mapping required | |
| Locations | Company + Custom Field on Person1:many | 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.
Referrizer gotchas
No bulk export API — migration relies on Zapier or CSV
Smart Inbox conversations are not accessible via API
Loyalty points stored as contact properties, not a distinct object
Rate limits not publicly documented
Multi-location scoping required to avoid cross-contamination
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 scoping
We audit the Referrizer account across objects: contacts, companies (location-level), pipeline stages, campaigns, offers, referral relationships, loyalty program fields, labels, activity feed events, and team members. We enumerate the full custom field schema via GET /contacts, scope by location account ID for multi-location accounts, and confirm with the customer which objects are business-critical versus deprecated. We also confirm whether Smart Inbox data has been manually exported separately and whether loyalty program logic is a hard requirement in the destination.
Twenty schema pre-build
We create the Twenty workspace schema before any data moves. This includes creating custom fields on Person and Company (jobTitle, department, website, contactType, and any Referrizer custom fields), creating a custom Campaign object for campaign records, creating a custom Offer object for referral offers, creating a custom ReviewRequest object, and enabling Advanced mode to expose API field names for import mapping. Schema is deployed via Twenty's REST API into a sandbox workspace for validation before production migration.
Sandbox migration and reconciliation
We run a full migration into a Twenty workspace using production-like data volume. The customer reconciles record counts (Person in, Company in, Opportunity in, Campaign in), spot-checks 25-50 random records against the Referrizer source, and validates that loyalty point values, label/tag assignments, and location associations are correct. Any field mapping corrections are applied here. This step validates both the extraction logic (from Referrizer) and the import logic (into Twenty) before production data moves.
Owner and user reconciliation
We extract every distinct Referrizer owner referenced on contacts, pipeline stages, and campaigns and match by email against Twenty workspace users. Any Referrizer owner without a matching Twenty user is held in a reconciliation queue. The customer provisions missing workspace users before record import resumes. OwnerId resolution is required on Person, Opportunity, and custom object records.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from location business names), Persons (with Company lookup resolved, loyalty custom fields separated, and owner resolved), Opportunities (with Person lookup and stage name), custom Campaign and Offer objects (with Person lookups), custom ReviewRequest records, Tags (applied to Person via TagRelation), and activity Notes (linked to Person). Loyalty fields are separated from standard contact fields during the transform phase and written to their dedicated custom number fields in Twenty. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation inventory handoff
We freeze Referrizer 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 a written inventory of every Referrizer automation (campaign triggers, automated sequence re-entry rules, loyalty program trigger logic) with its configuration details and a recommended Twenty equivalent for the customer's admin to rebuild. We support a one-week post-cutover window for reconciliation issues. We do not rebuild Referrizer automations as Twenty workflows inside the migration scope.
Platform deep dives
Referrizer
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 Referrizer 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
Referrizer: Not publicly documented; API returns 429 TOO_MANY_REQUESTS on overages.
Data volume sensitivity
Referrizer 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 Referrizer to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Referrizer 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 Referrizer
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.