CRM migration
Field-level mapping, validation, and rollback between Wishpond and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Wishpond
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Wishpond and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Wishpond to Odoo CRM is a migration from a marketing-lead-centric platform to an all-in-one suite where CRM is one module among dozens. Wishpond organizes data around Leads captured through landing pages and email campaigns; Odoo CRM uses a Lead-to-Opportunity pipeline with Tags and Stages that require explicit design before any records load. We audit Wishpond lead records for missing phone numbers and incomplete profiles (a known Wishpond weakness), map campaign sources to Odoo Tags and Lead custom fields, and reconstruct email campaign metadata as Odoo CRM Opportunities with source attribution. We do not migrate Wishpond Workflow automations, Landing Page layouts, or Referral/Contest configurations as code; we deliver a written inventory for the customer's Odoo administrator to rebuild in Odoo Studio.
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 Odoo 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
Odoo CRM
Lead
1:1Wishpond Leads map to Odoo CRM Lead records. The primary fields (name, email, phone, company) migrate directly. We flag records missing phone numbers during extraction and flag them as enrichment candidates in Odoo using a custom field wishpond_phone_missing__c boolean. Source attribution (landing page URL, form name, campaign name) migrates as Odoo Tag records linked to the Lead so that the customer's sales team can report pipeline by acquisition channel. HubSpot-style lifecycle stage data is not natively supported in Odoo CRM and is stored as a custom field wishpond_lifecycle_stage__c if present in Wishpond.
Wishpond
Company (implicit in Lead)
Odoo CRM
Partner (Contacts)
1:manyWishpond does not have a standalone Company/Account object; company name is stored as a property on the Lead record. We extract distinct company names from Wishpond Leads, deduplicate them, and create Odoo CRM Partner records (res.partner with customer_rank > 0) before importing Leads. This resolves the Partner-Lead relationship so that Odoo Lead conversion creates a Contact attached to the correct Partner.
Wishpond
Form
Odoo CRM
Custom Fields on Lead
lossyWishpond Forms with custom field names and types (text, email, phone, dropdown) map to Odoo CRM custom fields created via Odoo Studio before migration. Dropdown options in Wishpond Forms map to Odoo Selection fields with matching selection values. We document every custom form field with its API name, data type, and options so that the customer's Odoo admin can verify field labels in the destination system.
Wishpond
Landing Page
Odoo CRM
Tag + Notes (documentation only)
1:1Wishpond Landing Pages have metadata (page name, URL slug, creation date, traffic source) that does not have a native Odoo CRM equivalent. We extract landing page metadata and associate it with the Leads captured from each page using Odoo Tags (one tag per landing page name). The visual layout of landing pages cannot be migrated; we deliver a written inventory of every Wishpond Landing Page with its URL, associated form, and captured lead count so that the customer can decide which pages to rebuild using Odoo Website or a third-party tool.
Wishpond
Email Campaign
Odoo CRM
Tag + Lead custom fields
1:1Wishpond Email Campaigns with drip sequences and A/B variants export as campaign records with metadata (campaign name, start date, status, open rate, click rate). We map each Wishpond campaign to an Odoo Tag on the Leads that were part of that campaign, preserving the acquisition channel attribution. Campaign-level metrics (open rates, click rates) are stored as a CSV attachment and as custom fields on a Master Campaign record in Odoo for reference. Odoo Email Marketing app replaces the active campaign execution capability.
Wishpond
Workflow (Automation)
Odoo CRM
Inventory document only
lossyWishpond Workflows (trigger-action sequences such as 'if form submitted, add to drip sequence') export as a JSON schema document. We do not migrate them as code because Wishpond Workflows and Odoo Studio automated actions use different data models, triggers, and conditions. We deliver a written inventory of every Wishpond Workflow with its trigger, conditions, actions, and a recommended Odoo Studio equivalent, plus the sequence order for the customer's Odoo administrator to rebuild.
Wishpond
Popup
Odoo CRM
Tag + Notes (documentation only)
1:1Wishpond Popups (exit-intent and embedded) with targeting rules and associated forms export as campaign assets. We capture popup configuration including trigger conditions and display rules in a written inventory document. Popup rendering is not migrated; Odoo does not include a native popup builder in its standard CRM module. The customer rebuilds popup functionality using Odoo Website or a third-party integration if needed.
Wishpond
Referral Campaign
Odoo CRM
Tag + Campaign Notes
1:1Wishpond Referral Campaigns with reward mechanics and participant lists export as campaign records. Referral tracking codes and participant contact records migrate as Odoo Leads tagged with the referral campaign name. The reward mechanics (discount tiers, referral codes) are documented in the handoff inventory for the customer to configure in Odoo if they use Odoo Loyalty or a third-party referral tool.
Wishpond
Contest
Odoo CRM
Tag + Notes
1:1Wishpond Contest entries export as Lead records tagged with contest metadata (contest name, entry date, entry status). We merge contest participants into the unified Lead export and preserve the contest attribution as Odoo Tags so that the sales team can see which Leads came from which contest promotion.
Wishpond
A/B Test
Odoo CRM
Notes (documentation only)
1:1Wishpond A/B Test configurations export with variant metadata, traffic allocation percentages, and winner criteria. We capture these as a structured notes document associated with the relevant Wishpond Landing Page or Email Campaign records. Odoo CRM does not have native A/B testing; this functionality requires Odoo A/B Testing apps or third-party tools.
Wishpond
User (Team Member)
Odoo CRM
User
1:1Wishpond User accounts (name, email, role) export as records. We map Wishpond role names to Odoo User access rights (Inventory User, Sales User, Administrator) based on the customer's Odoo edition and installed apps. Active vs. inactive status is preserved. Users without a matching Odoo User go to a reconciliation queue for the customer's admin to provision before the Lead import proceeds.
Wishpond
Campaign Analytics (Historical Metrics)
Odoo CRM
CSV attachment to Master Campaign record
1:1Historical open rates, click rates, conversion rates, and lead attribution time-series data export as monthly CSV segments. We chunk large analytics exports to respect Wishpond's 60-second API rate-limit blocking window. The CSV files are attached to a Master Campaign record in Odoo CRM for reference by the customer's reporting team. These metrics are not used to populate Odoo's native reporting because Odoo uses its own reporting model.
| Wishpond | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Company (implicit in Lead) | Partner (Contacts)1:many | Fully supported | |
| Form | Custom Fields on Leadlossy | Fully supported | |
| Landing Page | Tag + Notes (documentation only)1:1 | Fully supported | |
| Email Campaign | Tag + Lead custom fields1:1 | Fully supported | |
| Workflow (Automation) | Inventory document onlylossy | Fully supported | |
| Popup | Tag + Notes (documentation only)1:1 | Fully supported | |
| Referral Campaign | Tag + Campaign Notes1:1 | Fully supported | |
| Contest | Tag + Notes1:1 | Fully supported | |
| A/B Test | Notes (documentation only)1:1 | Fully supported | |
| User (Team Member) | User1:1 | Fully supported | |
| Campaign Analytics (Historical Metrics) | CSV attachment to Master Campaign record1: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
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Discovery and Wishpond tier verification
We audit the customer's Wishpond account across plan tier (Starter, Pro, or Growth), active Leads count, custom form fields, email campaigns, workflows, landing pages, popups, referral campaigns, and A/B tests. We confirm whether API access is available (Pro/Growth required) or whether CSV exports are the only extraction method. We also identify Wishpond workspaces or sub-accounts that may contain additional data. The discovery output is a written scope document with record counts per object and a confirmation of extraction method.
Data extraction with rate-limit compliance
We extract Wishpond data using the API (Pro/Growth) or CSV exports (Starter). For API extraction, we implement 100-record batch chunks with 65-second inter-batch delays to respect the 60-second blocking window. We extract Leads with all standard and custom properties, campaign metadata, landing page metadata, form field definitions, user accounts, and analytics CSVs in monthly segments. We run a pre-extraction data quality report to flag duplicate emails, incomplete records (missing name or email), and records with no source attribution.
Odoo CRM schema design and Lead pipeline configuration
We design the Odoo CRM schema before any data loads. This includes creating custom fields on the Lead model (wishpond_phone_missing__c, wishpond_lifecycle_stage__c, wishpond_source_url__c), configuring Lead Tags (one per Wishpond landing page, email campaign, referral campaign, and contest), designing the Opportunity pipeline stages to reflect the customer's sales process, and provisioning any required Odoo Users matched to Wishpond team members. We deploy into a staging Odoo database first for validation. This step requires the customer to have an active Odoo database (Odoo.sh or on-premise) with the CRM app installed.
Data cleansing and deduplication
We deduplicate Wishpond Leads by email address before loading into Odoo, keeping the most recent record by created_at timestamp. We flag records missing email addresses for the customer's review (these cannot be imported into Odoo CRM without a unique identifier). We standardize phone number formats to E.164 where present. We merge implicit company names from Lead records into Odoo Partner records before Lead import so that the Lead-to-Partner relationship is satisfied at import time. Any records with corrupt or unreadable data are logged and excluded pending customer confirmation.
Staging migration and reconciliation
We run a full migration into the customer's staging Odoo database. The customer's sales lead or CRM administrator reviews a reconciliation report showing Lead count by source tag, Partner count, tag distribution, and a random sample of 30-50 records validated against the Wishpond source. We correct any field mapping errors, tag naming inconsistencies, or missing custom fields before scheduling the production migration. Sign-off on the staging report is required before production migration begins.
Production migration and handoff
We run the production migration in dependency order: Partners (from Wishpond company names), Users (validated against Odoo User list), Leads (with Tags resolved, wishpond_phone_missing__c flags set, and wishpond_lifecycle_stage__c populated). We attach the analytics CSV files to a Master Campaign record in Odoo. We deliver the written handoff inventory documenting every Wishpond Landing Page (with URL and captured lead count), Popup, Workflow (with JSON schema and Odoo Studio rebuild recommendation), Referral Campaign, Contest, and A/B Test. We do not rebuild automations, landing pages, or popups as part of the standard migration scope.
Platform deep dives
Wishpond
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Wishpond and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Wishpond and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Wishpond and Odoo CRM.
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 Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Wishpond to Odoo 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 Odoo 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.