CRM migration
Field-level mapping, validation, and rollback between Bridgify and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Bridgify
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Bridgify and Odoo CRM.
Complexity
CModerate
Timeline
48–72 hours
Overview
Bridgify operates as an experiences-infrastructure platform with a REST API that surfaces contacts, bookings, experiences, and loyalty data. Odoo CRM stores equivalent records in res.partner (contacts and companies), crm.lead (leads and opportunities), product.product (experiences as products), and sale.order (bookings). The migration carries Bridgify's structured records into Odoo's PostgreSQL-backed model using Odoo's xmlrpc interface. The primary translation work involves mapping Bridgify's loyalty_tier and experience_category fields to Odoo custom properties on res.partner and product.template respectively. Odoo does not have a native loyalty-program construct — these values migrate as custom fields your team configures post-migration. We sequence the migration Partners first for foreign-key resolution, then crm.lead records with type='opportunity' for confirmed bookings and type='lead' for unconverted contacts, then product records for the experience catalog. Delta pickup captures any new bookings or contact updates made in Bridgify during the cutover window, ensuring Odoo reflects the final state at go-live.
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 Bridgify 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.
Bridgify
Contact
Odoo CRM
res.partner
1:1Bridgify contact records (travelers, program members) map to Odoo res.partner with is_company=False. The contact's email, phone, and address fields align directly. Owner assignment resolves by email match against Odoo res.users — unmatched owners default to the migration admin user. All original contact metadata is preserved through custom fields during migration.
Bridgify
Contact (is_company=True)
Odoo CRM
res.partner
1:1Bridgify accounts representing travel brands, loyalty programs, or tour operators map to Odoo res.partner with is_company=True. The company name, domain, and industry fields map to name, website, and industry respectively. Parent-company hierarchies in Bridgify translate to parent_id on res.partner — circular references are flagged before import.
Bridgify
Booking
Odoo CRM
crm.lead (type=opportunity)
1:1Confirmed Bridgify bookings migrate as Odoo crm.lead records with type='opportunity'. The booking amount maps to expected_revenue for pipeline visibility. Odoo lacks a native booking object, so crm.lead serves as the closest analogue for tracking pipeline value against travel experiences. The original booking ID is preserved as x_booking_id.
Bridgify
Booking Status
Odoo CRM
crm.stage
1:1Bridgify booking status strings (confirmed, pending, cancelled) map to Odoo crm.stage records by value. Each Bridgify status value gets assigned to a corresponding Odoo stage ID based on your Odoo pipeline configuration — cancelled bookings route to the Lost stage, confirmed to Won or a custom Closed stage.
Bridgify
Experience / Product
Odoo CRM
product.product
1:1Bridgify experience records map to Odoo product.product (or product.template for experience categories). The experience name, description, pricing, and availability window transfer as standard Odoo product fields. Multiple Bridgify experience variants (e.g., group vs. private) map to Odoo product variants via product.attribute.line records.
Bridgify
Loyalty Tier
Odoo CRM
res.partner (custom property)
1:1Bridgify loyalty_tier values (Gold, Silver, Bronze, etc.) have no Odoo native equivalent. We create an ir.model.fields record (x_loyalty_tier) on res.partner as a selection field with the exact Bridgify tier values preserved. Points balance migrates as x_loyalty_points (float) on the same partner record.
Bridgify
Experience Category
Odoo CRM
product.category
1:1Bridgify experience categories (tours, attractions, activities) map to Odoo product.category records. The category name and description transfer directly. Products link to categories via product.categ_id — this relationship is established during the product import phase. New categories are created in Odoo if the Bridgify category does not already exist.
Bridgify
Booking Line Item
Odoo CRM
sale.order.line
many:1Bridgify booking line items (individual experience reservations within a booking) merge into Odoo sale.order.line records linked to a parent sale.order. Each line references the corresponding product.product record migrated from Bridgify. Quantity and unit price map to product_uom_qty and price_unit respectively.
Bridgify
User / Owner
Odoo CRM
res.users
1:1Bridgify owner_id on contacts and bookings resolves by email match against Odoo res.users. Unmatched owners are flagged — your Odoo admin either creates the user first or assigns records to a fallback owner. Bridgify user records with no Odoo counterpart become notes in the migration audit log.
Bridgify
Address / Location
Odoo CRM
res.partner (address fields)
1:1Bridgify contact address fields (street, city, state, country, zip) map to Odoo res.partner address fields (street, city, state_id, country_id, zip). Country names resolve to Odoo res.country records by name match. State and province names resolve to res.country.state records where applicable. Incomplete addresses in Bridgify carry forward with null fields in Odoo.
Bridgify
Booking Date
Odoo CRM
crm.lead (date_deadline) / sale.order (date_order)
1:1Bridgify booking confirmation date maps to crm.lead.date_deadline for pipeline visibility and scheduling. The original booking creation timestamp is preserved as x_booking_create_date (custom datetime field on crm.lead) for audit continuity. Both dates are retained to support historical reporting and timeline analysis post-migration.
Bridgify
Contact Tags
Odoo CRM
res.partner.category
1:1Bridgify contact tags (segment labels, traveler types) map to Odoo res.partner.category records. Tags that do not already exist in Odoo are created during migration. A contact can have multiple tags in both systems — the many-to-many relationship transfers via the res.partner.res_partner_category_rel junction table during the tag import phase.
| Bridgify | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Contact (is_company=True) | res.partner1:1 | Fully supported | |
| Booking | crm.lead (type=opportunity)1:1 | Fully supported | |
| Booking Status | crm.stage1:1 | Fully supported | |
| Experience / Product | product.product1:1 | Fully supported | |
| Loyalty Tier | res.partner (custom property)1:1 | Fully supported | |
| Experience Category | product.category1:1 | Fully supported | |
| Booking Line Item | sale.order.linemany:1 | Fully supported | |
| User / Owner | res.users1:1 | Fully supported | |
| Address / Location | res.partner (address fields)1:1 | Fully supported | |
| Booking Date | crm.lead (date_deadline) / sale.order (date_order)1:1 | Fully supported | |
| Contact Tags | res.partner.category1:1 | Fully supported |
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.
Bridgify gotchas
Bridgify is commerce infrastructure, not a CRM
Supplier inventory belongs to Bridgify and its underlying suppliers, not the partner
Multi-currency settlement complicates financial reconciliation
Public technical documentation is gated
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
Audit Bridgify API endpoints and Odoo target schema
FlitStack connects to the Bridgify REST API using your OAuth2 credentials and inventories the records available across /contacts, /accounts, /bookings, /experiences, and /loyalty endpoints. We generate a source-record inventory by record type and field count. In parallel, we inspect your Odoo database (via web interface or xmlrpc if available) to identify existing res.partner, crm.lead, and product.product records, existing custom fields, and crm.stage configuration. The audit output is a data-dictionary CSV mapping each Bridgify field to its Odoo destination with transformation notes.
Build Odoo custom fields and stage configuration
Before data moves, FlitStack creates the custom fields required for Bridgify data that has no Odoo native equivalent — x_loyalty_tier, x_loyalty_points, x_booking_id, x_booking_create_date, x_experience_id, and x_bridgify_id. For Odoo Community, these are created via Settings > Technical > Fields; for Custom/Enterprise, we create them via xmlrpc. We also map Odoo's existing crm.stage records to Bridgify booking statuses and deliver a stage-mapping reference table so your team confirms the mapping before import runs.
Resolve owner and user mappings by email
Bridgify owner_id values on contacts and bookings resolve by email match against Odoo res.users. FlitStack generates an owner-resolution report listing matched users, unmatched owners, and fallback assignments. Your Odoo admin confirms the fallback owner (typically the migration admin user) before records are assigned. No record migrates without a resolved user_id — this prevents orphaned records in Odoo that can't be attributed to a sales team member.
Run sample migration with field-level diff
A representative slice of 100–500 records (mix of contacts, accounts, bookings, and experiences) migrates first. FlitStack generates a field-level diff comparing source values against destination field values, highlighting mismatches in loyalty_tier mapping, stage assignment, and owner resolution. You review the diff and confirm field mapping accuracy before the full migration commits. Sample migration also validates import throughput for your Odoo plan tier and identifies any xmlrpc throttling issues early.
Execute full migration with delta-pickup window
The full dataset migrates in sequence: res.partner (accounts and contacts), product.product (experiences), crm.lead (bookings as opportunities), sale.order (booking headers), sale.order.line (booking line items), and res.partner.category (tags). Foreign keys resolve via the ID mapping table created during the partner and product phases. After the full migration completes, a delta-pickup window (24–48 hours) captures any new contacts, bookings, or loyalty updates made in Bridgify during cutover. FlitStack generates a reconciliation report comparing total record counts by object type.
Platform deep dives
Bridgify
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 3 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Bridgify and Odoo CRM.
Object compatibility
3 of 8 objects need a manual workaround.
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
Bridgify: Not publicly documented. Enterprise contracts typically include negotiated per-second/per-minute ceilings; we confirm specific limits with Bridgify during the scoping call..
Data volume sensitivity
Bridgify 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 Bridgify to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Bridgify 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 Bridgify
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.