CRM migration

Migrate from Selligent by Marigold to Odoo CRM

Field-level mapping, validation, and rollback between Selligent by Marigold and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Selligent by Marigold logo

Selligent by Marigold

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between Selligent by Marigold and Odoo CRM.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Selligent by Marigold to Odoo CRM is a platform-category transition: Selligent is a B2C marketing automation platform whose contact model (Individual with behavioral properties) does not map to a single Odoo CRM object. Selligent Contacts with a prospect lifecycle map to Odoo crm.lead; Contacts tied to an organization map to res.partner as the Account equivalent. Action Lists (LISTID-keyed campaign member records) map to crm.lead or crm.lead.tag groups; the campaign audience migrates as an Odoo CRM Campaign with member contacts tagged by Selligent ACTIONCODE. Behavioral event history is not a standalone Selligent API object; we migrate the most recent event summary per contact as a text custom field and flag full behavioral event migration as a separate data warehouse engagement. Automated journey definitions, journey content, and campaign templates are not API-exportable from Selligent; we document every active journey for the customer's admin to rebuild in Odoo Studio or via server actions. Custom fields migrate fully. We use Odoo's xmlrpc API with batch processing, respecting its batch size limits and parent-record dependency ordering to preserve referential integrity through the migration.

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

Selligent by Marigold logo

Selligent by Marigold

What's pushing teams away

  • Enterprise pricing with non-refundable, non-cancelable contract terms creates sticker shock when teams need to downsize or pivot to a lower-cost platform.
  • Recent acquisition by Zeta Global in 2025 introduces uncertainty about product roadmap, support continuity, and long-term pricing for existing customers.
  • Platform complexity requires significant onboarding investment; smaller marketing teams report difficulty achieving full utilization without dedicated technical support.
  • Journey and campaign configuration is deep but not easily transferable, making migrations feel like rewrites rather than data moves and increasing switching costs.
  • API documentation and partner ecosystem are less extensive than dominant US-based platforms, leading to frustration when custom integrations are needed.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Selligent by Marigold objects map to Odoo CRM

Each row shows how a Selligent by Marigold 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.

Selligent by Marigold

Contact (Individual)

maps to

Odoo CRM

crm.lead or res.partner

1:many
Fully supported

Selligent Individual records map to Odoo crm.lead for unqualified prospects and to res.partner for qualified customers or contacts with an organizational affiliation. We apply a lifecycle-stage rule during scoping: Selligent contacts with a purchase history or organization association become res.partner records; all others become crm.lead. The Selligent USERID is preserved as a custom field selligent_userid__c on both crm.lead and res.partner for reconciliation. Email, mobile number, and address fields map to standard Odoo fields; behavioral properties (recency, frequency, engagement score) map to custom fields that we pre-create as char or integer fields before import.

Selligent by Marigold

Company (organization custom property)

maps to

Odoo CRM

res.partner (as Account)

1:1
Fully supported

Selligent does not have a native company object; organizational affiliation is stored as a custom property or relation tag on the Individual. We extract the organization name from Selligent custom field arrays, deduplicate across all contact records, and create res.partner records with company_name set and is_company=True. These partner records become the Account parent for contacts that carry an organization association. Where Selligent stores multiple organization roles per contact (e.g., billing, shipping, decision-maker), we create separate partner contacts under the same company partner with the role stored in a custom function field.

Selligent by Marigold

Dynamic Segment

maps to

Odoo CRM

crm.lead.tag or ir.filters

1:1
Fully supported

Selligent Dynamic Segments are defined by behavioral and demographic rules but the segment definitions themselves are not API-exportable. We export the member USERIDs for each segment and create corresponding crm.lead.tag records in Odoo (or ir.filters for more complex rule-based groups). The segment criteria (e.g., purchased in last 30 days, email opened more than twice) are documented in a segment inventory deliverable for the customer to rebuild as Odoo lead tags or filtered views.

Selligent by Marigold

Action List

maps to

Odoo CRM

crm.lead.tag + crm.opportunity (campaign audience)

1:many
Fully supported

Selligent Action Lists (LISTID-keyed records with USERID, ACTIONCODE, and custom fields) are campaign member records. We map the Action List to an Odoo CRM Campaign and populate its member_lead_ids with crm.lead records tagged by the Selligent ACTIONCODE value. Custom fields on the Action List migrate as custom fields on the crm.lead. For Action Lists that represent a sales pipeline rather than a campaign audience, we map to crm.opportunity records with the LISTID stored as a custom field selligent_listid__c.

Selligent by Marigold

Tag

maps to

Odoo CRM

crm.lead.tag

1:1
Fully supported

Selligent tags are multi-value assignments per contact that drive personalization and segmentation. We extract all tag values across the contact base, deduplicate into a canonical tag vocabulary, and create corresponding crm.lead.tag records. Each migrated contact receives the matching tags as tag_ids on crm.lead. Tags used for content classification (not audience segmentation) can alternatively map to mail.message.subtype for activity categorization.

Selligent by Marigold

Custom Fields (FieldsDefinition)

maps to

Odoo CRM

Custom ir.model.fields on crm.lead and res.partner

lossy
Fully supported

We extract the full FieldsDefinition array from Selligent's CreateActionList API payload during scoping, identify all custom field names and types, and generate Odoo field creation XML-RPC calls before any record import begins. Selligent's key-value prop arrays on Individual records require the destination schema to exist first; we enforce strict sequencing so that all field registration completes before contact import starts. Field types are inferred from Selligent data values (string, integer, float, boolean, date) and mapped to the closest Odoo field type.

Selligent by Marigold

Email Campaign (send history and engagement)

maps to

Odoo CRM

crm.activity (Note) + mail.message

1:1
Fully supported

Selligent email campaign history (subject, send date, audience size, open/click metrics at the campaign level) migrates as a mail.message note on the CRM Campaign record with campaign metadata in custom fields. Contact-level engagement (open, click, bounce per USERID) migrates as crm.activity records of subtype email_attached on the crm.lead. Full campaign email content and templates are not migratable; we deliver a content inventory so the customer's admin can recreate templates in Odoo Mail Composer or a connected email marketing app.

Selligent by Marigold

SMS/Mobile Campaign

maps to

Odoo CRM

crm.activity (Note)

1:1
Fully supported

Similar to email campaigns, Selligent SMS send history and engagement metrics per contact migrate as crm.activity records on the crm.lead. Message content and short code configuration are not API-exportable; we document the SMS configuration for the customer to re-establish in Odoo SMS or a connected SMS gateway. Odoo SMS requires the marketing module or a third-party SMS provider integration, which is outside the migration scope but documented in the handoff deliverable.

Selligent by Marigold

Behavioral Events (event summary)

maps to

Odoo CRM

Custom char field on crm.lead

1:1
Fully supported

Selligent behavioral event data is available via integration endpoints but not as a standalone exportable object. The most recent event summary per contact (last viewed page, last purchase date, last email interaction) migrates as a text or char custom field on crm.lead (e.g., last_event_summary__c). Full event stream migration requires a separate data warehouse pipeline and is not included in standard scope. We flag the event migration gap in the discovery deliverable and provide a scoped estimate if the customer requires it.

Selligent by Marigold

Transactional Messages

maps to

Odoo CRM

crm.activity (Note)

1:1
Mapping required

Transactional message templates and API trigger configurations are not exportable from Selligent. We migrate the contact list associated with each transactional flow as crm.lead records tagged by the flow name (e.g., tag: transactional-welcome). The trigger setup (API endpoint, event conditions, message content) is documented in the migration handoff so the customer can reconfigure transactional messaging in Odoo or a connected transactional email provider.

Selligent by Marigold

User Permissions (user accounts)

maps to

Odoo CRM

res.users

1:1
Fully supported

Selligent user accounts and role assignments are organizational settings that we export by email address. We match Selligent user emails to Odoo res.users by email lookup and flag any Selligent user without a matching Odoo account in a reconciliation queue. The customer's Odoo admin provisions missing users and assigns them to appropriate sales teams (crm.team) before the contact migration phase. Active/inactive status in Selligent maps to Odoo active=True/False on res.users.

Selligent by Marigold

Webhooks

maps to

Odoo CRM

Webhook documentation (no automated migration)

lossy
Mapping required

Selligent webhook configurations are not API-exportable via the public REST API. We document webhook URLs, event subscriptions, and payload schemas during scoping and include them in the migration handoff deliverable as a recreation guide. The customer's admin recreates webhook subscriptions in Odoo using Odoo Webhook modules or an iPaaS connector (Zapier, Make) 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.

Selligent by Marigold logo

Selligent by Marigold gotchas

Medium

API rate limits are documented but not fully quantified publicly

High

Enterprise contracts are non-cancelable with no refunds mid-term

High

Journeys and campaign templates are not API-exportable

Medium

SDC bulk message limit of 100 per request caps throughput

Medium

Custom field schema must be pre-created at destination before import

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Selligent contracts are non-cancelable with no mid-term refunds

    Selligent's Services Agreement makes payment obligations non-refundable and non-cancelable for the full order term. Overages beyond subscription limits trigger additional charges without pre-notification. If a customer is mid-contract, running Selligent and Odoo simultaneously means paying for two platforms. We advise customers to migrate only after the renewal window or to negotiate a data export provision before initiating migration work. We flag contract status during discovery scoping so there are no billing surprises during the migration window.

  • Selligent's B2C contact model does not map to a single Odoo CRM object

    Selligent Individual records are B2C contact models with behavioral properties, lifecycle stages, and organization stored as custom fields. Odoo CRM separates crm.lead (unqualified prospects) from res.partner (qualified contacts/accounts). There is no automated answer to which Selligent contacts become Leads versus Partners. We define the split rule during scoping based on the customer's sales process: lifecycle stage, purchase history, and organization association determine the target Odoo object. Migrations that skip this design step produce orphaned records with no Account association in Odoo.

  • Automated journeys and campaign templates are not API-exportable from Selligent

    Selligent does not expose journey definitions, branching logic, trigger conditions, or campaign content templates via its public REST or SOAP API. All automated journey logic, message content, and A/B test configurations must be manually rebuilt in Odoo Studio after migration. We document every active journey with its trigger, conditions, channels, and timing rules during scoping and deliver this as a written rebuild guide. Journey rebuild is outside the standard migration scope and is scoped as a separate workstream.

  • Selligent SDC bulk message limit of 100 per request caps migration throughput

    The Selligent Delivery Cloud API caps bulk operations at 100 messages per request with a 4MB JSON body maximum. For large contact imports (tens of thousands of records), this requires hundreds of sequential API calls with exponential backoff on rate-limit responses. We handle this with a queuing pipeline that batches contacts into 80-record chunks (accounting for field overhead), parallelizes requests across multiple authenticated sessions where available, and monitors for 429 responses to dynamically adjust pacing. Migration windows for large datasets extend accordingly.

  • Odoo lead-to-partner conversion does not auto-propagate all custom fields

    Odoo's standard lead-to-opportunity and lead-to-partner conversion actions (_convert_lead_to_partner) do not automatically copy custom fields from crm.lead to res.partner or crm.opportunity. Selligent custom fields that are stored on the contact record may not propagate through Odoo's native conversion wizard. We address this by either pre-extending the conversion method with a custom Python override (installed as an Odoo module) or by writing a post-conversion reconciliation script that re-populates custom field values from the original crm.lead after conversion completes.

Migration approach

Six steps for a successful Selligent by Marigold to Odoo CRM data migration

  1. Discovery and schema audit

    We audit the source Selligent environment across all active Individual records, FieldsDefinition arrays, Action Lists, Dynamic Segments, tags, user accounts, and engagement history volume. We extract the full custom field schema from the CreateActionList API payload to generate Odoo field creation calls. We identify active journeys and campaign configurations for the rebuild inventory. Discovery output is a written migration scope with a record-count matrix, a custom field mapping table, a segment-to-tag mapping table, and an active journey inventory. We also confirm the customer's Selligent contract renewal date to advise on timing.

  2. Schema design and field pre-creation in Odoo

    We design the Odoo CRM schema based on the B2C-to-B2B split rule agreed during discovery. This includes creating all custom ir.model.fields on crm.lead and res.partner (matching Selligent field names and inferred types), creating crm.lead.tag records for each Selligent tag, configuring crm.team records to match Selligent user role groupings, and creating any required mail.message.subtype records for engagement type categorization. Schema changes deploy via XML-RPC into a Sandbox database first for validation before production.

  3. Sandbox migration and reconciliation

    We run a full migration into an Odoo Sandbox database using a representative data sample (at least 1,000 contacts, all action lists, all custom fields, and a subset of engagement history). The customer's CRM lead reconciles record counts, spot-checks 25-50 randomly sampled records against the Selligent source, and validates that tag assignments and custom field values are correct. Any mapping corrections (field type mismatches, split rule adjustments, tag normalization) are resolved in sandbox before production migration begins.

  4. Owner reconciliation and user provisioning

    We extract every distinct Selligent owner referenced on Individual records and match by email against Odoo res.users. Unmatched owners go to a reconciliation queue for the customer's admin to provision. User-to-team assignment (crm.team) maps from Selligent organizational role groups. This step gates the contact migration because OwnerId (user_id on crm.lead) is a required field for most Odoo CRM workflows.

  5. Production migration in dependency order

    We run production migration in record-dependency order: res.partner (organization parent records, from Selligent organization custom properties), crm.lead (all contacts with split rule applied), crm.lead.tag (tag assignments linked by USERID), crm.opportunity (action-list-as-pipeline records), crm.activity and mail.message (engagement history via Odoo XML-RPC with batch chunking), and finally custom field value population for any fields not handled in the initial import. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and journey rebuild handoff

    We freeze Selligent writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo CRM as the system of record. We validate record counts, custom field completeness, and tag assignments against the discovery baseline. We deliver the journey rebuild inventory, campaign content inventory, webhook recreation guide, and SMS configuration notes as written documentation. We offer a one-week hypercare window to resolve post-cutover reconciliation issues. Journey rebuild in Odoo Studio and post-migration admin support are outside standard scope and can be scoped as a separate engagement.

Platform deep dives

Context on both ends of the pair

Selligent by Marigold logo

Selligent by Marigold

Source

Strengths

  • Email deliverability rates consistently praised in user reviews across retail and media verticals.
  • Native support for GDPR, CCPA, and CAN-SPAM compliance with documented sub-processor list.
  • Flexible custom field and data modeling accommodates complex B2C schemas without schema locks.
  • Multichannel journey orchestration across email, SMS, push, and web personalization in one platform.
  • AI-powered audience selection and send-time optimization built into the core platform.

Weaknesses

  • Public API documentation lacks comprehensive rate-limit tables and bulk export endpoints.
  • Journey builder configurations are not exportable via API, making migrations require full manual rebuilds.
  • Non-refundable contract terms mean customers pay for the full order term regardless of early termination.
  • Platform complexity creates a steep learning curve compared to simpler email-focused tools.
  • Ownership transition to Zeta Global introduces uncertainty for existing Marigold/Selligent customers.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Selligent by Marigold and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Selligent by Marigold and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Selligent by Marigold and Odoo CRM.

  • 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

    Selligent by Marigold: Not publicly quantified; connector documentation shows batched behavior at 2500 requests or 10-minute windows.

  • Data volume sensitivity

    A

    Selligent by Marigold exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Selligent by Marigold to Odoo 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 Selligent by Marigold to Odoo CRM data migrations

Answers to the questions buyers ask most during Selligent by Marigold to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Selligent by Marigold to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Straightforward migrations with under 30,000 Contacts, 2,000 Action List records, 50 custom fields, and no behavioral event migration land between four and eight weeks. Migrations with behavioral event summary preservation, large tag volumes across hundreds of distinct values, multi-list Action List structures, or organizations stored across dozens of Selligent custom property keys move to twelve to eighteen weeks because of schema pre-creation time, parent-record resolution, and tag normalization during discovery.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Selligent by Marigold.
Land in Odoo 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