CRM migration

Migrate from VBOUT to Twenty CRM

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

VBOUT logo

VBOUT

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between VBOUT and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from VBOUT to Twenty CRM is a migration from a marketing-automation-centric platform to a developer-friendly open-source CRM with a custom runtime data model. VBOUT organizes data around Contacts, Smart Audiences, Leads, and Tags with a marketing-first object hierarchy. Twenty CRM uses People, Companies, Opportunities, Tasks, and Notes as its standard objects, with runtime-extensible custom objects and fields. The core migration challenge is that VBOUT's Soft CRM features (Lead Scoring, Pipeline Stages encoded as Tags, Smart Audience segmentation rules) have no direct Twenty equivalent, so we map Tags to custom fields on People records and document the segmentation logic for manual reconstruction. VBOUT's automation workflows and dashboard reports do not migrate; we deliver a JSON artifact of workflow definitions and raw analytics data for the customer's admin to rebuild in Twenty's workflow editor and reporting layer. We handle VBOUT's 15 req/sec API rate limit through exponential backoff and batch chunking so that large contact lists move within migration timelines.

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

VBOUT logo

VBOUT

What's pushing teams away

  • Calendar booking does not sync with external calendars for available time slots, forcing manual scheduling workarounds that erode time-savings gains.
  • The user interface lacks visual polish and modern UX patterns, with multiple reviewers citing cluttered screens and unintuitive navigation flows.
  • No dark mode accessibility option, which users with visual impairment or extended-screen use identify as a recurring frustration.
  • Users running multi-channel campaigns report that the single platform approach sometimes sacrifices depth in any individual channel compared to dedicated tools.

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

Each row shows how a VBOUT 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.

VBOUT

Contact

maps to

Twenty CRM

People

1:1
Fully supported

VBOUT Contacts map directly to Twenty People. Standard fields (name, email, phone) transfer 1:1. Custom fields on VBOUT Contacts require pre-creation in Twenty via Settings → Data Model before import because Twenty's standard People object has sparse field coverage (GitHub issue #13953 flags this as a known gap). We create every custom field in Twenty first, then map each VBOUT Contact property to the equivalent Twenty field, using Text, Number, Date, Select, or Multi-Select types based on VBOUT's field definition. VBOUT's Lead Score property migrates to a numeric custom field on People.

VBOUT

Company

maps to

Twenty CRM

Company

1:1
Fully supported

VBOUT Companies map to Twenty Companies. Company domain, address fields, and industry map 1:1. Like People, the Companies object in Twenty has limited standard fields out of the box, so any custom fields on VBOUT Companies (division, annual revenue tier, account tier) must be pre-created in Twenty before the Company import batch runs. We resolve Company as the parent of People before Contact import so that the People-Company relationship link is satisfied at insert time.

VBOUT

Lead

maps to

Twenty CRM

People (with Lead context)

1:1
Fully supported

VBOUT's Lead object is distinct from Contact and carries source attribution, assignment data, and lead score. We map these to Twenty People records with custom fields for lead_source__c, assigned_to__c, and lead_score__c. Note that Twenty does not yet have a native Lead object with a conversion action to custom objects (GitHub issue #10422); Leads that should become Opportunities in Twenty require manual conversion or a custom workflow rebuild.

VBOUT

Tag

maps to

Twenty CRM

Custom Field (Multi-Select or Text)

lossy
Fully supported

VBOUT Tags encode pipeline stage, segment classification, and contact classification. We extract the full Tag taxonomy during discovery, then create equivalent custom fields in Twenty: pipeline_stage__c (Select), primary_segment__c (Select), and contact_classification__c (Multi-Select). Tags apply to People and Company records via lookup. The customer chooses whether each Tag set becomes a Select (single-value) or Multi-Select (multi-value) field during scoping.

VBOUT

Smart Audience

maps to

Twenty CRM

Custom Filter or Segment (documented only)

1:1
Fully supported

VBOUT Smart Audiences are dynamic segmented lists based on behavioral and demographic criteria with proprietary rule definitions. The segmentation rules do not export in a portable format. We extract the raw criteria (field names, operators, values) and produce a written rebuild guide for each Smart Audience mapped to Twenty's filter and view system. The segmentation logic must be manually rebuilt in Twenty as saved views and filters; the audience members themselves are not a separate object and are covered by the underlying Contact export.

VBOUT

Pipeline Stage

maps to

Twenty CRM

Custom Field (Select) + Opportunity Stage

lossy
Fully supported

VBOUT Pipeline Stages are stored as Tags with ordering metadata rather than as a native pipeline object. We extract the stage names and order from the Tag set, then create a pipeline_stage__c Select field on People and a stage__c Select field on Twenty Opportunities. If the customer uses VBOUT's pipeline management module (Professional tier), we map stage definitions to Twenty's Opportunity stage dropdown values via Settings → Data Model.

VBOUT

Custom Field (Contact/Lead)

maps to

Twenty CRM

Custom Field (People/Company)

1:1
Fully supported

VBOUT custom fields on Contacts and Leads (dropdown, conditional, text, numeric, date, payment field types) map to equivalent custom fields in Twenty's Data Model. VBOUT conditional and payment field types that have no direct Twenty equivalent are mapped to Text fields with the raw value preserved; the customer reviews and reconciles these post-migration. We require all destination custom fields to be created in Twenty before the migration batch begins because Twenty's CSV import creates records, not fields.

VBOUT

Email Campaign

maps to

Twenty CRM

Note or Custom Object (documented only)

1:1
Fully supported

VBOUT email campaign history (subject, send date, open rate, click rate) can be exported as structured records. We export campaign metadata and statistics as a CSV artifact. These do not map to a native Twenty object; we recommend creating a custom EmailCampaign object in Twenty with fields for subject, sent_date, opens, clicks, and contact_count. Email template bodies export as content artifacts but must be manually re-created in Twenty's template editor because the visual layout is not transferable.

VBOUT

Form

maps to

Twenty CRM

Custom Object (documented only)

1:1
Fully supported

VBOUT forms (standard, multi-step, conditional, payment) export field definitions and submission records as structured data. Form field configurations migrate as a custom FormField object in Twenty. Form submission records migrate as FormSubmission records linked to the submitting Contact's People record. Payment form transaction data migrates with the submission metadata; the payment processing integration does not carry over and must be reconfigured with a Twenty-compatible payment gateway.

VBOUT

Automation Workflow

maps to

Twenty CRM

Documented artifact (manual rebuild required)

1:1
Fully supported

VBOUT automation workflows store trigger-action sequences in a proprietary JSON schema not portable to Twenty's workflow system. We export each workflow definition as a structured JSON artifact and produce a step-by-step rebuild guide mapped to Twenty's workflow editor. The trigger conditions, delays, and actions are documented in plain English so the customer's admin can replicate the logic. This is a documentation-only deliverable; the workflows themselves must be rebuilt manually.

VBOUT

Landing Page

maps to

Twenty CRM

Documented artifact (manual rebuild required)

1:1
Fully supported

VBOUT landing pages are stored as platform-specific page definitions with no transferable layout. We export page metadata, form field configurations, and redirect rules as a structured artifact. The visual layout, copy, and design must be rebuilt manually in Twenty's page builder or an external tool. Form field configurations carried over in the artifact reduce rebuild effort but do not eliminate it.

VBOUT

Dashboard Report

maps to

Twenty CRM

Raw data artifact (manual rebuild required)

1:1
Fully supported

VBOUT dashboard reports are UI-native visualizations that cannot be exported. We export the underlying raw data (email open rates, click maps, form submission counts, lead activity logs) as CSV so equivalent reports can be built in Twenty's analytics layer. The dashboard configurations themselves do not transfer; the customer rebuilds them as Twenty views and saved filters post-migration.

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.

VBOUT logo

VBOUT gotchas

High

Email send volume is tier-gated, not contact-gated

High

Automation workflows are not cross-platform portable

Medium

API rate limit of 15 req/sec forces migration chunking

Medium

Dashboard reports are UI-native and not exportable

Low

Calendar booking does not sync to external calendars

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

  • Twenty's sparse standard fields require pre-migration schema setup

    Twenty CRM's People and Companies objects have minimal standard fields out of the box (GitHub issue #13953). Users expecting to import VBOUT Contacts and Companies directly into matching Twenty fields will find that most custom properties require manual field creation in Settings → Data Model before import. We create all custom fields in Twenty first, then run the data migration. If a VBOUT Contact has 12 custom fields and the Twenty schema has not been pre-configured, the import will drop or mis-map those fields silently. This is a pair-specific gotcha because VBOUT's extensive custom field usage (dropdown fields, conditional fields, payment fields) makes this gap a near-certain migration blocker without pre-work.

  • VBOUT's 15 req/sec API rate limit forces chunked migration

    VBOUT enforces a hard 15 requests per second limit on its developer API. Exceeding it returns HTTP 429. We implement exponential backoff and chunk our extraction batches to respect this ceiling. For migrations involving more than 30,000 contacts, this significantly extends extraction duration because we must paginate through large result sets at the rate limit. We segment the work into queued batches and rate-limit our own ingestion layer to stay within bounds. Customers with time-sensitive cutover windows should be aware that the rate limit, not the data volume, is the primary timeline driver for large VBOUT exports.

  • VBOUT automation workflows are not portable to Twenty

    VBOUT stores automation workflows in a proprietary JSON schema tied to its trigger-action builder. There is no documented export format that preserves workflow logic for import into Twenty CRM. We export the workflow definition as a structured JSON artifact and produce a step-by-step rebuild guide mapped to Twenty's workflow editor. The customer must manually replicate multi-step workflows. This is a platform gotcha for VBOUT across all destinations, but it is particularly impactful for the VBOUT-to-Twenty pair because Twenty's workflow editor is still maturing (as of 2026) and lacks some automation patterns that VBOUT users rely on.

  • Twenty has no native CSV import UI

    Unlike HubSpot, Salesforce, and Pipedrive, Twenty CRM does not ship a built-in import wizard for CSV files as of 2026. Data ingestion requires either a script using the Twenty GraphQL API or an integration tool like n8n. We build a custom ingestion script per migration that reads the exported VBOUT CSV, transforms field values, and makes batched GraphQL mutations to create records in Twenty. This is a pair-specific complexity: the migration toolchain must include API scripting that simpler CRM-to-CRM migrations do not require.

  • VBOUT calendar booking does not sync with external calendars

    VBOUT's Calendar Booking tool does not integrate with Google Calendar, Outlook, or other external calendar systems. Records migrated from VBOUT's calendar module carry the booking data but cannot auto-populate available time slots from the customer's real calendar. We flag calendar booking records during scoping and advise the customer to treat them as reconfigured manually post-migration. This is documented in the VBOUT platform context and does not represent a new pair-specific risk, but it is included here because teams using VBOUT's calendar module as their primary scheduling tool will need to plan for replacement (Twenty's task and event system does not include native booking).

Migration approach

Six steps for a successful VBOUT to Twenty CRM data migration

  1. Discovery and data audit

    We audit the source VBOUT account across plan tier (Free/Starter/Professional/Enterprise), total Contacts and Leads, custom field definitions on both objects, Tag taxonomy (pipeline stages, segments, classifications), active automation workflows, email campaign history, form definitions and submission counts, landing page count, and dashboard report count. We pair this with Twenty destination scoping: cloud vs self-hosted deployment, user count, and which standard and custom fields need to be created in Settings → Data Model before import. The discovery output is a written migration scope document listing every VBOUT object, its record count, its mapping to Twenty, and any pre-work required on the Twenty side.

  2. Twenty schema pre-creation

    Before any data extraction from VBOUT begins, we create all required custom fields in Twenty's Data Model. This includes pipeline_stage__c (Select), primary_segment__c (Select), contact_classification__c (Multi-Select), lead_score__c (Number), lead_source__c (Text), and any VBOUT custom field equivalents. We also create the EmailCampaign and FormSubmission custom objects with their respective fields. If the customer uses VBOUT's pipeline management module, we configure the Opportunity stage dropdown values. Twenty's requirement that fields exist before import is enforced at this step; any schema gap discovered during extraction causes a pause and schema catch-up before data load resumes.

  3. VBOUT data extraction with rate-limit handling

    We extract VBOUT data in dependency order using the REST API with a 15 req/sec chunking strategy. Companies export first (if any exist), then Contacts, then Leads, then Tags applied to each record. We implement exponential backoff on HTTP 429 responses and log every retry. For large contact lists (over 30,000 records), we split extraction into queued batches with checkpoint persistence so that a partial extraction failure does not require restarting from zero. Email campaign metadata, form submissions, and form field definitions export as separate artifacts alongside the core record export.

  4. Data transformation and field mapping

    We transform the exported VBOUT data against the mapping document. Tags become custom field values (pipeline_stage__c, primary_segment__c, etc.). Lead Score becomes a numeric custom field on People. Smart Audience segmentation rules are extracted as plain-text criteria documentation. Automation workflow JSON artifacts are produced from the workflow definitions. VBOUT custom field values are mapped to their Twenty equivalents with type transformation where needed (VBOUT conditional fields become Text, VBOUT payment fields become Text with a payment_note suffix). The transformation output is a set of CSV files and JSON artifacts ready for Twenty ingestion.

  5. Twenty ingestion via GraphQL API

    We ingest data into Twenty using batched GraphQL mutations. Records are inserted in dependency order: Companies first (to satisfy the People-Company relationship), then People (with companyId resolved from the Company insert), then Opportunities (with companyId and contactId resolved). Custom object records (EmailCampaign, FormSubmission) insert last because they reference People records. Each batch emits a row-count reconciliation report. We handle duplicate detection by email address on People and by company domain on Companies, flagging duplicates for the customer's review rather than auto-skipping them.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze VBOUT writes during cutover, run a final delta migration of any records created or modified during the migration window, then switch the customer to Twenty as the system of record. We deliver the automation workflow JSON artifact and rebuild guide to the customer's admin team. We deliver the raw analytics data CSV for the customer to rebuild reports in Twenty's analytics layer. We support a one-week hypercare window for reconciliation issues. We do not rebuild VBOUT workflows as Twenty workflows inside the migration scope; that is documented separately for the customer's admin to execute.

Platform deep dives

Context on both ends of the pair

VBOUT logo

VBOUT

Source

Strengths

  • Unlimited contacts on Starter and above eliminates per-contact billing surprises common in HubSpot and Salesforce.
  • Integrated AI content generation, predictive email scheduling, and AI chatbot available on mid-tier plans.
  • 14+ marketing tools in one platform reduces subscription sprawl and data silos for agencies.
  • Predictive email sending optimizes send times per contact, a feature not universally available in competing platforms.
  • Competitive pricing (starting at $50/month) offers a meaningful cost reduction versus Marketo, HubSpot, or ActiveCampaign at equivalent tiers.

Weaknesses

  • Calendar booking lacks external calendar sync, requiring manual slot management that erodes workflow efficiency.
  • No documented bulk/batch API endpoint; large-scale migrations must work within the 15 req/sec rate limit with pagination.
  • The platform lacks a documented public object schema reference, making field discovery a manual process during migration scoping.
  • Dark mode is not available, which has been flagged as an accessibility limitation by users with visual impairments.
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 VBOUT 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

    VBOUT: 15 requests per second per org; HTTP 429 on breach with exponential backoff required.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your VBOUT to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 15,000 Contacts with no custom objects and a straightforward Tag taxonomy. Migrations with large contact volumes (50,000+), multiple Tag-based segmentation sets, engagement history (email campaign records, form submissions), or VBOUT pipeline management in use move to six to ten weeks because of rate-limit chunking overhead on extraction, custom field schema pre-creation in Twenty, and activity log ingestion via GraphQL API. The Twenty schema pre-creation step (Step 2) must complete before any data extraction begins, which adds 3-5 days of lead time that customers often underestimate.

Adjacent paths

Related migrations to explore

Ready when you are

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