CRM migration

Migrate from Referrizer to Twenty CRM

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

Referrizer logo

Referrizer

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Referrizer and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Referrizer logo

Referrizer

What's pushing teams away

  • Referrizer lacks a mobile app for sending or receiving text messages, forcing users to log into the web dashboard for all SMS activity — a friction point for mobile-heavy businesses.
  • The platform does not automatically sync new clients from spa or fitness management software; staff must manually enter new contact records into Referrizer, creating double-work.
  • The learning curve is steep at first because the platform combines marketing automation, CRM, loyalty, and reputation tools in a single interface with no guided onboarding.
  • Several users report that pricing increases significantly from the starter tier to professional, and custom feature gating makes it difficult to predict what is included at each level.

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

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

maps to

Twenty CRM

Person

1:1
Fully supported

Referrizer 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

maps to

Twenty CRM

Company

1:1
Fully supported

Referrizer 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Referrizer 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

maps to

Twenty CRM

Custom Number Field on Person

1:1
Mapping required

Referrizer 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

maps to

Twenty CRM

Custom Object (Campaign)

lossy
Mapping required

Referrizer 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

maps to

Twenty CRM

Custom Object (Offer) + Custom Field on Person

1:many
Mapping required

Referrizer 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

maps to

Twenty CRM

Custom Object (ReviewRequest)

1:many
Mapping required

Referrizer 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

maps to

Twenty CRM

Custom Fields on Person and Company

1:1
Mapping required

Referrizer 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

maps to

Twenty CRM

Tags on Person

1:1
Mapping required

Referrizer 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

maps to

Twenty CRM

TimelineEvent / Note

1:1
Mapping required

Referrizer 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

maps to

Twenty CRM

WorkspaceUser

1:1
Mapping required

Referrizer 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

maps to

Twenty CRM

Company + Custom Field on Person

1:many
Fully supported

Referrizer 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.

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.

Referrizer logo

Referrizer gotchas

High

No bulk export API — migration relies on Zapier or CSV

High

Smart Inbox conversations are not accessible via API

Medium

Loyalty points stored as contact properties, not a distinct object

Medium

Rate limits not publicly documented

Medium

Multi-location scoping required to avoid cross-contamination

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

  • Referrizer Smart Inbox conversations are not accessible via API

    Referrizer's Smart Inbox stores SMS and email conversation threads between contacts and businesses, but no documented public API endpoint exposes this data. Only campaign-level sent/delivered/open metrics are available via the Reports API. When migrating from Referrizer, inbox message history is silently lost unless it has been manually exported by the customer before migration begins. We explicitly confirm during scoping whether inbox data is business-critical and document that it cannot be migrated programmatically.

  • Referrizer has no bulk export API — extraction relies on paginated reads

    Referrizer does not publish a bulk export or batch API endpoint. Data egress uses the paginated GET /contacts endpoint (100 records per page) and individual object endpoints for campaigns, offers, and pipeline stages. For large contact databases, we stitch paginated pages together before transformation, adding an extraction step not present in migrations with dedicated export APIs. Rate limits are not publicly documented, so we implement exponential backoff on 429 responses and cap request concurrency to avoid triggering undocumented throttling.

  • Twenty CRM has no built-in import UI — scripts required

    Twenty CRM does not ship a built-in import wizard as of 2026. Data moves into Twenty via REST or GraphQL batch operations, typically driven by a migration script. We write and execute that script using Twenty's REST API with batch endpoints. Customers coming from Referrizer should expect this to be a programmatic migration rather than a UI-guided file upload, which requires confirming API access credentials and endpoint availability during scoping.

  • Twenty's standard Person fields require manual pre-configuration

    A GitHub issue on the Twenty repository (#13953) documents that the Person and Company objects ship with minimal standard fields, forcing users to create basic fields like jobTitle, department, website, and contactType before importing contact data. We pre-create these fields in Twenty's Data Model during schema setup so that Referrizer custom fields can map to the correct target fields. Without this step, imports fail or fields remain unmapped.

  • Loyalty points stored as contact properties have no native destination object

    Referrizer stores loyalty point balances as numeric custom fields on contact records rather than as a dedicated Loyalty object. Many destination CRMs including Twenty do not have a native loyalty object, so points must be remapped to a custom number field on the Person record. We identify all loyalty-related fields during schema enumeration, separate them from standard contact properties, create the equivalent custom fields in Twenty, and migrate values as integers or decimals. If the customer needs a full loyalty program engine in Twenty, that requires a separate build or third-party loyalty integration.

Migration approach

Six steps for a successful Referrizer to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Referrizer logo

Referrizer

Source

Strengths

  • Combines referral marketing, SMS, email, loyalty, and reputation management in one platform for small businesses.
  • Free tier available indefinitely with no credit card required and unlimited contacts.
  • API supports bearer token authentication with paginated contact endpoints up to 100 records per page.
  • Integrates natively with popular fitness and spa software including Mindbody, Booker, Acuity, and Club Ready.
  • Strong customer support ratings (4.8/5) with 24/7 live rep available on paid tiers.

Weaknesses

  • No public bulk export or migration API endpoint — data moves through Zapier integrations or manual CSV exports only.
  • Smart Inbox message history is not accessible via the public API, so conversational data cannot be migrated.
  • No native mobile app for iOS or Android, forcing all SMS activity through the web dashboard.
  • Custom field schema must be enumerated manually before migration since no dedicated schema endpoint is documented.
  • Rate limits are not publicly documented, creating uncertainty during large-volume API reads.
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. 2 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 Referrizer and Twenty CRM.

  • Object compatibility

    B

    2 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

    Referrizer: Not publicly documented; API returns 429 TOO_MANY_REQUESTS on overages.

  • Data volume sensitivity

    B

    Referrizer doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

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

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

Can't find your answer?

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 consultation

Migrations under 10,000 contacts with no custom objects and clean location scoping complete in three to five weeks. Migrations with multi-location accounts, large loyalty point histories, custom objects (Campaigns, Offers, ReviewRequests), or referral relationship trees move to seven to twelve weeks because of schema pre-building in Twenty, loyalty field separation, paginated extraction from Referrizer, and location-level validation. Smart Inbox data, if manually exported by the customer beforehand, is handled as a separate file import outside the core migration timeline.

Adjacent paths

Related migrations to explore

Ready when you are

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