CRM migration

Migrate from Wishpond to Twenty CRM

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

Wishpond logo

Wishpond

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

91%

10 of 11

objects map 1:1 between Wishpond and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Wishpond to Twenty CRM is a structural migration from a marketing-automation-centric platform to a self-hosted, open-source CRM built around the Person and Company data model. Wishpond's primary object is the Lead captured through landing pages and forms, with supporting objects for campaigns, workflows, and referral mechanics. Twenty CRM uses a Person object (replacing first and last name fields rather than a single full-name field), a Company object, an Opportunity object, and an Activity timeline. The fundamental schema gap is that Wishpond's campaign and landing page objects have no native equivalent in Twenty, so we map campaign records as tagged activity entries or notes and deliver a written catalog of landing page and form configurations for manual rebuild. We manage Wishpond's 60-second API blocking window through batch throttling and pre-create the standard fields Twenty lacks out of the box before any record import begins. Workflows, automation sequences, and integration credentials do not migrate and are documented for rebuild by the customer's admin.

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

Wishpond logo

Wishpond

What's pushing teams away

  • Wishpond's opaque pricing model—requiring demo calls for custom quotes and reportedly charging different prices to different prospects—frustrates SMBs seeking transparent, predictable SaaS costs.
  • Managed service quality is inconsistent: multiple reviews cite language barriers with offshore account managers, missed setup commitments, and accounts configured in non-optimal regions (e.g., Mexico for US-based clients).
  • Some customers report spending months with Wishpond-managed campaigns but receiving no qualified sales leads—suggesting a mismatch between lead volume and actual pipeline value.
  • Execution quality on landing pages and campaigns is reported as poor in multiple reviews, with pages never going live or requiring expensive additional fees ($2,500+) for supposedly included services.
  • Platform reliability issues—bugs that persist without fixes, no regular product updates, and slow performance—prompt customers to migrate to more actively maintained alternatives.

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

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

Wishpond

Lead

maps to

Twenty CRM

Person

1:1
Fully supported

Wishpond's primary Lead object maps to Twenty's Person object. The key schema difference is that Wishpond stores a single full-name field while Twenty uses separate firstName and lastName fields. We split the Wishpond name value on the first space and map remainder to lastName. Email maps to Twenty's email field. Phone is optional in Wishpond and may be absent; we set it where available and flag the gap for enrichment. Wishpond custom properties (hs_lead_status, lifecyclestage, utm_source) map to Twenty custom fields that we pre-create during schema setup.

Wishpond

Lead

maps to

Twenty CRM

Company

1:1
Fully supported

When a Wishpond Lead includes company name data (from a form field or enrichment), we create a corresponding Company record in Twenty and link the Person to it via a foreign key. We use the Wishpond lead's company domain or name as the Company name field. Company-Person relationships are established before Person records are finalized to avoid orphaned lookups.

Wishpond

Landing Page

maps to

Twenty CRM

Note

1:1
Fully supported

Wishpond landing pages have no native equivalent in Twenty's object model. We export page metadata (name, URL slug, creation date, associated form) as a Note attached to the Person record that captured leads from that page. The note body captures the page URL and copy structure. Visual layout and form builder configuration are not transferable and are documented in the landing-page inventory handed to the customer's admin for rebuild in Twenty's workspace or via the customer's web stack.

Wishpond

Form

maps to

Twenty CRM

Custom Fields (Person)

1:1
Fully supported

Wishpond form field definitions (field names, field types, required flags) map to custom field definitions on Twenty's Person object. We create the custom fields before lead import so that form-captured data lands in the correct properties. The mapping between Wishpond form field IDs and Twenty custom field API names is documented in the field mapping appendix. Form logic (conditional fields, skip logic) is not migratable and is noted for rebuild.

Wishpond

Email Campaign

maps to

Twenty CRM

Activity (Note or Task)

1:1
Fully supported

Wishpond email drip campaigns and A/B test configurations export as campaign records with variant metadata and traffic allocation. We create a Note record per email campaign, linked to the Person record, with campaign name, status, and A/B variant data in the note body. Campaign-level metrics (open rates, click rates) export as time-series CSV and are preserved as Note attachments. The email content itself (HTML body, subject lines) is exported and documented as a content reference for the customer's email platform rebuild.

Wishpond

Referral Campaign

maps to

Twenty CRM

Activity (Tag + Note)

1:1
Fully supported

Referral campaigns with reward mechanics export as campaign records with participant lists. Referral participants map to Person records tagged with a referral source identifier. Reward tier information maps to a custom field on Person. The referral tracking codes are preserved as activity metadata. Reward configuration (thresholds, discount types) is documented in the campaign inventory for rebuild by the admin.

Wishpond

Contest

maps to

Twenty CRM

Person (Tag + Custom Field)

1:1
Fully supported

Contest entries in Wishpond are lead records tagged with contest metadata. We export these as Person records in Twenty with a contest_name tag and a contest_entry_date custom field. Where Wishpond tracks contest participation separately from standard leads, we merge into the unified Person export. Winner and reward data map to custom fields.

Wishpond

Popup

maps to

Twenty CRM

Note

1:1
Fully supported

Exit-intent and embedded popups with targeting rules export as campaign assets. We capture popup configuration (trigger conditions, display rules, associated form) as a Note attached to the Person record that triggered the popup. Visual design and targeting logic do not migrate; these are documented for rebuild by the admin.

Wishpond

Workflow (Automation)

maps to

Twenty CRM

Written Inventory

lossy
Fully supported

Wishpond automation workflows (trigger-action sequences such as 'if form submitted, add to drip sequence') export as JSON schema describing the workflow structure. We do not migrate workflows as code into Twenty because Twenty's sequence and automation model is early-stage and does not have an equivalent visual workflow builder. The workflow inventory document includes every active automation with trigger conditions, action sequence, delays, and a recommended rebuild approach in Twenty Sequences.

Wishpond

User (Team Member)

maps to

Twenty CRM

User

1:1
Fully supported

Wishpond user accounts (name, email, role) export as user records. We map Wishpond roles to Twenty workspace roles and permissions. Active vs. inactive status is preserved. Twenty requires manual user provisioning through workspace settings; we deliver the user mapping list to the customer's admin for provisioning before record migration.

Wishpond

Campaign Analytics (Historical Metrics)

maps to

Twenty CRM

Note (Attachment)

1:1
Mapping required

Historical open rates, click rates, conversion rates, and lead attribution data export as time-series CSV. We chunk large analytics exports into monthly segments to manage volume. The CSV is attached as a Note to the relevant campaign record or as a workspace file reference. The customer can import this into a BI tool or use Twenty's reporting capabilities to reconstruct dashboards.

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.

Wishpond logo

Wishpond gotchas

High

API rate limit of 60-second blocking window

High

Opaque pricing with lead-tier billing surprises

Medium

API access gated behind higher-tier plans

Medium

Managed service setup quality varies by account manager

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

  • Wishpond's 60-second API blocking window on rate limit breach

    The Wishpond API returns HTTP 429 on rate limit exceedance and then blocks all subsequent requests for a full 60 seconds from the initial trigger request. This single-window lockout makes bulk lead extraction slow and unforgiving for accounts with more than 10,000 records. We chunk exports into batches of 100 records with 65-second delays between batches and flag extended timelines to the customer during scoping. Accounts on the Starter plan cannot use API-based exports at all and require manual CSV extraction from the dashboard, which limits field coverage and excludes campaign analytics data.

  • Twenty CRM requires manual standard field creation before import

    As documented in GitHub issue #13953, Twenty ships without standard CRM fields that other platforms provide out of the box. Users must spend 30-60 minutes creating basic fields before the system is usable for data entry. This affects migration directly: bulk imports without pre-created fields result in dropped data or failed imports. We audit Twenty's current schema before migration, create any missing standard fields (name components, email, phone, company, job title, website, source) via Twenty's Settings Data Model UI or API, then validate the schema before record import begins.

  • Wishpond lead data quality gaps require enrichment decisions

    Wishpond's lead records commonly lack phone numbers, company names, and scoring data, as noted in Wishpond's platform documentation. When migrating to Twenty, these gaps become visible against a more structured Person schema. We flag missing required fields during data profiling, deduplicate records using email as the dedupe key, and deliver an enrichment recommendation report identifying records that need phone append or company enrichment before they are useful in Twenty for outbound sales workflows.

  • Campaign and landing page objects have no native Twenty equivalent

    Wishpond's marketing-centric objects—landing pages, email campaigns, popups, referral campaigns, and A/B tests—do not map to native Twenty CRM objects. Twenty is built around Person, Company, Opportunity, and Activity records. We map campaign metadata to Notes and activity tags, but visual layouts, form builder configurations, automation triggers, and A/B traffic allocation cannot transfer. The admin must rebuild these in Twenty's workspace or a complementary marketing tool. We deliver a complete inventory of every Wishpond campaign and page with enough detail to support that rebuild.

  • Integration credentials and native integrations do not migrate

    Wishpond stores integration credentials (Salesforce sync, Mailchimp, Shopify, Zapier connections) as platform-level settings that cannot be exported or transferred to Twenty. We flag every active integration during discovery and deliver a connection-rebuild checklist organized by integration partner. Zapier connections require recreation in the Zapier dashboard pointing at Twenty's REST API. CRM sync connections (Salesforce, HubSpot) require reconfiguration in the destination platform's native sync settings.

Migration approach

Six steps for a successful Wishpond to Twenty CRM data migration

  1. Discovery and Wishpond plan tier audit

    We audit the source Wishpond account across tier (Starter, Pro, Growth), active lead count, custom properties, landing page count, email campaign count, active workflows, active integrations, and engagement volume. We confirm whether the account has API access (Pro and Growth only) or requires manual CSV extraction. We extract campaign analytics as time-series CSV segmented by month. The discovery output is a written migration scope with record counts per object, a list of active integrations requiring rebuild, and a recommendation on whether the Starter-tier customer should upgrade before migration for API access.

  2. Twenty CRM schema setup and field pre-creation

    We audit Twenty CRM's current standard field inventory and create any missing fields before record import begins. This includes firstName and lastName (split from Wishpond full-name), email, phone, company (linked to Company object), jobTitle, website, source, and any custom fields mapped from Wishpond custom properties. We create the Company object schema, configure the Person-Company relationship, and set up Opportunity fields if the customer uses deal tracking. Schema is validated in a Twenty test workspace before production migration begins.

  3. Sandbox extraction and Wishpond rate-limit management

    We run a discovery extraction from Wishpond using batched API requests (100 records per batch, 65-second inter-batch delay) to respect the 60-second blocking window. For Starter-tier accounts without API access, we coordinate manual CSV exports and augment with any available API data. The extracted data is profiled for duplicates, missing required fields (name, email), and schema completeness. We generate a data quality report and deduplication run before production import.

  4. Sandbox migration and reconciliation

    We run a full migration into Twenty's sandbox or a staging workspace using production-like data volume. The customer's team lead reconciles record counts (Persons in, Companies in, Activities in), spot-checks 25-50 random records against Wishpond source data, and validates that required fields are populated. Any missing field mappings, dedupe rule failures, or schema gaps are corrected here. Sign-off on the sandbox migration is required before production cutover.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (establishing the Company records), then Persons with Company lookups resolved, then activity history (Notes, Tasks, campaign metadata) linked to Persons and Companies. Each phase emits a row-count reconciliation report before the next phase begins. Wishpond's 60-second blocking window is managed with the same batch cadence used in sandbox. User accounts are mapped to a provisioning list for the admin to complete before the User migration phase.

  6. Cutover, campaign inventory handoff, and post-migration support

    We freeze Wishpond writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver the campaign and automation inventory document listing every Wishpond landing page, form, workflow, popup, and referral campaign requiring rebuild. We support a five-business-day hypercare window resolving any data reconciliation issues raised by the team. Workflow rebuild in Twenty Sequences and landing page reconstruction are outside standard scope and are handled as a separate engagement.

Platform deep dives

Context on both ends of the pair

Wishpond logo

Wishpond

Source

Strengths

  • Consolidates landing pages, email, forms, automation, and referrals into a single SMB-focused subscription
  • Drag-and-drop landing page builder accessible to non-technical users without coding knowledge
  • Over 300 native integrations including Salesforce, HubSpot, Mailchimp, Shopify, and Zapier
  • Dedicated account management and customer support available on Pro and Growth tiers
  • AI-powered website builder included in the platform for SMBs needing a web presence

Weaknesses

  • Pricing is opaque and requires sales outreach; reported custom quotes and inconsistent pricing across prospects
  • Managed services quality is inconsistent with reported language barriers and offshore account management
  • Execution quality on campaigns and landing pages varies widely; some customers report failed or never-published pages
  • Platform development appears slow with infrequent updates and persistent bugs reported by long-term users
  • Lead data quality limitations—records may lack phone numbers, making outbound follow-up difficult
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. 1 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 Wishpond and Twenty CRM.

  • Object compatibility

    B

    1 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

    Wishpond: Single 60-second blocking window on 429 response; no public per-minute quota documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Wishpond 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 with fewer than 10,000 leads and API access (Pro or Growth tier). Accounts on Starter tier without API access require manual CSV extraction and additional data profiling work, extending the timeline to seven to twelve weeks. Large engagement histories (campaign analytics, A/B test records) add time because of Wishpond's 60-second API blocking window requiring batch delays. Twenty's schema pre-creation step adds one to two days regardless of volume.

Adjacent paths

Related migrations to explore

Ready when you are

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