CRM migration
Field-level mapping, validation, and rollback between Wishpond and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Wishpond
Source
Twenty CRM
Destination
Compatibility
10 of 11
objects map 1:1 between Wishpond and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
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 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
Twenty CRM
Person
1:1Wishpond'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
Twenty CRM
Company
1:1When 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
Twenty CRM
Note
1:1Wishpond 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
Twenty CRM
Custom Fields (Person)
1:1Wishpond 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
Twenty CRM
Activity (Note or Task)
1:1Wishpond 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
Twenty CRM
Activity (Tag + Note)
1:1Referral 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
Twenty CRM
Person (Tag + Custom Field)
1:1Contest 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
Twenty CRM
Note
1:1Exit-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)
Twenty CRM
Written Inventory
lossyWishpond 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)
Twenty CRM
User
1:1Wishpond 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)
Twenty CRM
Note (Attachment)
1:1Historical 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.
| Wishpond | Twenty CRM | Compatibility | |
|---|---|---|---|
| Lead | Person1:1 | Fully supported | |
| Lead | Company1:1 | Fully supported | |
| Landing Page | Note1:1 | Fully supported | |
| Form | Custom Fields (Person)1:1 | Fully supported | |
| Email Campaign | Activity (Note or Task)1:1 | Fully supported | |
| Referral Campaign | Activity (Tag + Note)1:1 | Fully supported | |
| Contest | Person (Tag + Custom Field)1:1 | Fully supported | |
| Popup | Note1:1 | Fully supported | |
| Workflow (Automation) | Written Inventorylossy | Fully supported | |
| User (Team Member) | User1:1 | Fully supported | |
| Campaign Analytics (Historical Metrics) | Note (Attachment)1:1 | Mapping required |
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.
Wishpond gotchas
API rate limit of 60-second blocking window
Opaque pricing with lead-tier billing surprises
API access gated behind higher-tier plans
Managed service setup quality varies by account manager
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 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.
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.
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.
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.
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.
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
Wishpond
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 Wishpond 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
Wishpond: Single 60-second blocking window on 429 response; no public per-minute quota documented.
Data volume sensitivity
Wishpond 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 Wishpond to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Wishpond
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.